前段时间找了个Linux VPS自动备份脚本,将脚本精简并优化了一下,得到自己要用到的功能。
下面是脚本的代码:
- #你要修改的地方从这里开始
- MYSQL_USER=XXX #mysql用户名
- MYSQL_PASS=XXX #mysql密码
- WEB_DATA=/data/wwwroot #要备份的网站目录
- #你要修改的地方从这里结束
- #定义备份文件的名字
- DataBakName=data_$(date +"%Y%m%d_%H_00").tar.gz
- WebBakName=web_$(date +%Y%m%d_%H_00).tar.gz
- cd /data/backup
- #导出数据库,一个数据库一个压缩文件
- for db in `/usr/local/mysql/bin/mysql -u$MYSQL_USER -p$MYSQL_PASS -B -N -e 'SHOW DATABASES' | xargs`; do
- (/usr/local/mysql/bin/mysqldump -u$MYSQL_USER -p$MYSQL_PASS ${db} | gzip -9 - > ${db}.sql.gz)
- done
- #压缩数据库文件为一个文件
- tar zcf /data/backup/$DataBakName /data/backup/*.sql.gz
- rm -rf /data/backup/*.sql.gz
- #压缩网站数据
- tar zcf /data/backup/$WebBakName $WEB_DATA
- cd /data/backup
- mkdir $(date +"%Y%m%d_%H_00")
- mv data_$(date +"%Y%m%d_%H_00").tar.gz $(date +"%Y%m%d_%H_00")
- mv web_$(date +%Y%m%d_%H_00).tar.gz $(date +"%Y%m%d_%H_00")
- echo "备份成功,文件夹为:/data/backup/$(date +"%Y%m%d_%H_00")"
将以上脚本修改为合适你的vps的配置,保存为Backup.sh,然后上传至VPS的root目录下,并在/data目录下新建一个名为backup的文件夹。
然后给脚本权限,ssh下执行:
- chmod +x /root/Backup.sh
接下来测试脚本能否正常工作,执行:
- ./Backup.sh
如果能正常工作,再用cron实现每日自动运行这个脚本实现自动备份:
- crontab –e
添加备份任务,执行:
- 00 01 * * * /root/Backup.sh
任务的运行时间可以自己设定,上面代码中的00 01,就是凌晨1点,尽量选择您网站访客最少的时间段,比如凌晨。
脚本下载:http://www.risingsun.cc/down/Backup.sh