很简单的每日自动备份网站及数据库到远程FTP目录的脚本,
本次更新增加了自动删除远程FTP目录上5天前备份文件的功能,
只保留5天之类的备份文件
#!/bin/sh
cd /root
#导出数据库
/usr/local/bin/mysqldump --opt --user=AAAAAA --password=****** --host=localhost AAAAAA > AAAAAA.sql
/usr/local/bin/mysqldump --opt --user=BBBBBB --password=****** --host=localhost BBBBBB > BBBBBB.sql
#打包文件
tar -zcvf AAAAAA.sql_$(date +%Y%m%d).tar.gz AAAAAA.sql
tar -zcvf AAAAAA_$(date +%Y%m%d).tar.gz /usr/local/www/nginx-dist/AAAAAA
tar -zcvf BBBBBB.sql_$(date +%Y%m%d).tar.gz BBBBBB.sql
tar -zcvf BBBBBB_$(date +%Y%m%d).tar.gz /usr/local/www/nginx-dist/BBBBBB
#删除FTP空间5天前备份&上传当前备份到FTP空间
ftp -v -n dedibackup-dc3.online.net << EOF
user sd-XXXXXX ******
type binary
delete AAAAAA.sql_$(date -v -5d +%Y%m%d).tar.gz
delete AAAAAA_$(date -v -5d +%Y%m%d).tar.gz
delete BBBBBB.sql_$(date -v -5d +%Y%m%d).tar.gz
delete BBBBBB_$(date -v -5d +%Y%m%d).tar.gz
put AAAAAA.sql_$(date +%Y%m%d).tar.gz
put AAAAAA_$(date +%Y%m%d).tar.gz
put BBBBBB.sql_$(date +%Y%m%d).tar.gz
put BBBBBB_$(date +%Y%m%d).tar.gz
bye
EOF
#删除本地文件
rm -rf *.tar.gz
rm -rf *.sql
将以上脚本按照您的VPS信息设定后,存为backup.sh,然后上传至VPS的root目录下。
注意:这段代码适用于FreeBSD,Linux系统请将$(date -v -5d +%Y%m%d)替换为$(date -d "5 day ago" +%Y%m%d)
给脚本赋予执行权限
chmod +x /root/backup.sh
用cron实现每日定时自动运行这个脚本
添加定时任务
crontab –e
添加以下任务
00 05 * * * /root/backup.sh