自动定时进行全站备份并上传至主流云存储

2019-07-01T17:52:00

为避免意外,定时进行部分或全站备份是十分必要的。今天介绍的 Shell 脚本可自动打包数据库和网站文件上传至七牛、又拍、腾讯、百度网盘等云存储空间,以及 FTP/SFTP 服务器。

项目地址

[btn url="https://github.com/ehaut/WebServerAutoBackup"]WebServerAutoBackup[/btn]

支持系统

仅支持 MySQL 数据库和 CentOS 6 x64、CentOS 7 x64、Ubuntu 16.04 x64 系统。

使用方法

依赖安装

# CentOS
yum install -y wget curl git zip ftp sftp ssh sshpass

# Ubuntu
apt install -y wget curl git zip ftp sftp ssh sshpass

BIN_DIR=/usr/local/etc/
[ ! -d ${BIN_DIR} ] && mkdir -p ${BIN_DIR}
cd ${BIN_DIR}
git clone https://github.com/CHN-STUDENT/WebServerAutoBackup.git 
cd WebServerAutoBackup

配置编辑

打开 config.ini,修改 14 行为要备份的站点目录。

[WWWROOT_CONFIG]
WWWROOT_DIR=/www/wwwroot

修改 27-31 行的数据库信息。

[MYSQL_CONFIG]
MYSQL_DBS=
MYSQL_USER=
MYSQL_PASSWD=
MYSQL_SERVER=127.0.0.1
MYSQL_SERVER_PORT=3306

修改 57 行的保存天数,建议改为 3,即仅保存最近 3 天的备份。

[DAY_CONFIG]
DAY=3

修改 72-77 行的七牛云配置,将 AUTO_UPLOADAUTO_DELETE 打开,即自动上传,自动删除 3 天前的备份。

[QSHELL_CONFIG]
AUTO_UPLOAD=yes
AUTO_DELETE=yes
BUCKET=website-backup
ACCESS_Key=
SECRET_Key=
key_prefix=backup

如需上传到其他云空间,自行阅读配置文件注释,修改完毕后将文件保存。

修复错误

实际运行时提示空间不足,停止备份。df -h 后发现空间还很多,于是寻找代码错误,打开 backup.sh,搜索错误信息定位到 229 行,发现脚本分别使用了 dfdu -b 计算备份文件夹剩余空间与网站占用空间,两者单位并不相同,去掉 -b 参数即可。也就是修改为以下代码,随后保存文件。

wwwroot_size=`expr $(du -s ${www_dir} | awk '{ print $1 }') + ${wwwroot_size}`

测试运行

chmod a+x backup.sh && ./backup.sh

定时任务

测试正常工作后即可添加定时任务,实现自动备份并上传。

crontab -l > conf
cat >> conf <<EOF
0 2 * * * cd /usr/local/etc/WebServerAutoBackup && ./backup.sh > /root/backup/log/backup-cron.log 2>&1 &
EOF
crontab conf
rm -f conf
当前页面是本站的「Baidu MIP」版。发表评论请点击:完整版 »