上次写了 wordpress 的手动备份,现在加上一个把所有命令整合的脚本,完成自动备份的动能。
下面的脚本,会把 wordpress 的目录以及数据库,打包后发送到备份服务器。
/home/acytoo/.bin/webk.sh
,
<db-user-name>
是数据库用户名
<db-password>
是数据库密码
<db-name>
是数据库名
#!/bin/bash
# Create backup folder
dt=$(date '+%m_%d_%Y_%H_%M_%S');
target_dir=${HOME}/.cache/web_backup/${dt};
mkdir -p ${target_dir}
# Copy wordpress folder here
cp -r ${HOME}/wordpress ${target_dir}/wordpress
# Export the database
mysqldump -u <db-user-name> --password='<db-password>' <db-name> > ${target_dir}/db-backup.sql
# Archiving them, and then remove the directory
tar --create --file ${target_dir}.tar --remove-files ${target_dir}
# scp the file to va
scp -P 22 ${target_dir}.tar <user-name>@<backup-server>:/home/username/websitebk/
# remove backed tar
rm ${target_dir}.tar
下面是执行上面备份脚本的服务,与定时器搭配,定时执行备份任务
/etc/systemd/system/webk.service
[Unit]
Description=Backup Website
Documentation=https://acytoo.com/ladder/wordpress-manually-backup-script
After=network.target nss-lookup.target
[Service]
User=jof
ExecStart=/home/acytoo/.bin/webk.sh
[Install]
WantedBy=multi-user.target
下面是定期执行上面服务的定时器,两个文件应该在同一文件夹,拥有同样的名字,只有后缀名不同。
/etc/systemd/system/webk.timer
[Unit]
Description=Run webk daily
[Timer]
OnCalendar=*-*-* 2:00:00
OnCalendar=*-*-* 14:00:00
Persistent=true
[Install]
WantedBy=timers.target