为避免意外,定时进行部分或全站备份是十分必要的。今天介绍的 Shell 脚本可自动打包数据库和网站文件上传至七牛、又拍、腾讯、百度网盘等云存储空间,以及 FTP/SFTP 服务器。
项目地址
支持系统
仅支持 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_UPLOAD
和 AUTO_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 行,发现脚本分别使用了 df
和 du -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
如有问题请在下方留言,文章转载请注明出处,详细交流请加下方群组!请大佬不要屏蔽文中广告,因为它将帮我分担服务器开支,如果能帮忙点击我将万分感谢。
强调几点:(该留言由系统自动生成!)
1. 请不要刷广告,本站没有流量!
2. 我不回复虚假邮箱,因为回复了你也看不到!
3. 存在必须回复的隐藏内容时,可以直接使用表情框里的阿鲁表情!