AutoBackupToFtp.sh自动备份脚本 2011-04-13 linux 4 条评论 5589 次阅读 2012年5月6日版本更新! 猫言猫语最新版 [AutoBackupToFtp2.zip](https://blog.moper.net/usr/uploads/2019/10/3187487527.zip) 文章链接《猫大的最新版vps备份脚本》 moper修改的老版 [AutoBackupToFtp_moper.zip](https://blog.moper.net/usr/uploads/2019/10/2546140803.zip) 文章链接《centos6下猫大自动备份脚本问题修正》 猫言猫语老版 [AutoBackupToFtp.zip](https://blog.moper.net/usr/uploads/2019/10/2004319910.zip) 自从柒月开始使用廉价Linux VPS做一些小站后,备份成了关键问题之一。每次手动备份很麻烦,也可能会因为别的事而耽搁了。不过还好,在猫言猫语的网站找到了一个专门在Linux下自动备份的脚本,可以将数据库和网站文件打包上传到指定FTP或直接发送到邮箱。 首先安装需要的组件: `yum install sendmail mutt` 然后新建一个.sh文件,文件名随意: `AutoBackupToFtp.sh` 编辑“AutoBackupToFtp.sh”输入以下内容: ``` #!/bin/bash #你要修改的地方从这里开始 MYSQL_USER=root #mysql用户名 MYSQL_PASS=123456 #mysql密码 MAIL_TO=x@xxx.com #数据库发送到的邮箱 FTP_USER=xxx #ftp用户名 FTP_PASS=123456 #ftp密码 FTP_IP=xxx.xxx.xxx #ftp地址 FTP_backup=backup #ftp上存放备份文件的目录,这个要自己得ftp上面建的 WEB_DATA=/home/www #要备份的网站数据 #你要修改的地方从这里结束 #定义数据库的名字和旧数据库的名字 DataBakName=Data_$(date +"%Y%m%d").tar.gz WebBakName=Web_$(date +%Y%m%d).tar.gz OldData=Data_$(date -d -5day +"%Y%m%d").tar.gz OldWeb=Web_$(date -d -5day +"%Y%m%d").tar.gz #删除本地3天前的数据 rm -rf /home/backup/Data_$(date -d -3day +"%Y%m%d").tar.gz /home/backup/Web_$(date -d -3day +"%Y%m%d").tar.gz cd /home/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 /home/backup/$DataBakName /home/backup/*.sql.gz rm -rf /home/backup/*.sql.gz #发送数据库到Email,如果数据库压缩后太大,请注释这行 echo "主题:数据库备份" | mutt -a /home/backup/$DataBakName -s "内容:数据库备份" $MAIL_TO #压缩网站数据 tar zcf /home/backup/$WebBakName $WEB_DATA #上传到FTP空间,删除FTP空间5天前的数据 ftp -v -n $FTP_IP << END user $FTP_USER $FTP_PASS type binary cd $FTP_backup delete $OldData delete $OldWeb put $DataBakName put $WebBakName bye END ``` 以上内容需要自己手动修改的部分: ``` #!/bin/bash #你要修改的地方从这里开始 MYSQL_USER=root #mysql用户名 MYSQL_PASS=123456 #mysql密码 MAIL_TO=x@xxx.com #数据库发送到的邮箱 FTP_USER=xxx #ftp用户名 FTP_PASS=123456 #ftp密码 FTP_IP=xxx.xxx.xxx #ftp地址 FTP_backup=backup #ftp上存放备份文件的目录,这个要自己得ftp上面建的 WEB_DATA=/home/www #要备份的网站数据 #你要修改的地方从这里结束 ``` 另外,你需要在/home下建立一个 /backup 文件夹: `mkdir -p /home/backup` 完成以上步骤后,给.sh脚本添加权限: `chmod +x AutoBackupToFtp.sh` 利用crontab 实现自动备份,在ssh下: `crontab -e` 输入以下内容: `00 00 * * * /home/AutoBackupToFtp.sh` 这样就实现了每天00:00自动备份网站文件和数据库上传到FTP空间。 crontab的安装及方法: `yum install crontabs` 说明: ``` /sbin/service crond start //启动服务 /sbin/service crond stop //关闭服务 /sbin/service crond restart //重启服务 /sbin/service crond reload //重新载入配置 ``` 查看crontab服务状态: `service crond status` 手动启动crontab服务: `service crond start` 查看crontab服务是否已设置为开机启动,执行命令:`ntsysv` 加入开机自动启动: `chkconfig --level 35 crond on` 1,crontab命令 功能说明:设置计时器。 语 法:`crontab [-u 用户名称][配置文件] 或 crontab [-u 用户名称][-elr]` 补充说明:cron是一个常驻服务,它提供计时器的功能,让用户在特定的时间得以执行预设的指令或程序。只要用户会编辑计时器的配置文件,就可以使 用计时器的功能。其配置文件格式如下: Minute Hour Day Month DayOFWeek Command 参 数: -e 编辑该用户的计时器设置。 -l 列出该用户的计时器设置。 -r 删除该用户的计时器设置。 -u 用户名称 指定要设定计时器的用户名称。 2,crontab 格式 基本格式 : `* * * * * command` 分 时 日 月 周 命令 第1列表示分钟1~59 每分钟用*或者 */1表示 第2列表示小时1~23(0表示0点) 第3列表示日期1~31 第4列 表示月份1~12 第5列标识号星期0~6(0表示星期天) 第6列要运行的命令 crontab文件的一些例子: `30 21 * * * /usr/local/etc/rc.d/lighttpd restart` 上面的例子表示每晚的21:30重启 apache。 `45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart` 上面的例子表示每月1、 10、22日的4 : 45重启apache。 `10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart` 上面的例子表示每周六、周日的1 : 10重启apache。 `0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart` 上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。 `0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart` 上面的例子表示每星期六的11 : 00 pm重启apache。 `* */1 * * * /usr/local/etc/rc.d/lighttpd restart` 每一小时重启apache `* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart` 晚上11点到早上7点之间,每 隔一小时重启apache `0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart` 每月的4号与每周一到周三 的11点重启apache `0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart` 一月一号的4点重启apache `*/30 * * * * /usr/sbin/ntpdate 210.72.145.44` 每半小时同步一下时间 以上内容转自:猫言猫语 标签: linux, vps, 自动备份, 脚本, bash 本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
[...] 猫言猫语老版 http://blog.moper.net/AutoBackupToFtp.sh 文章链接《AutoBackupToFtp.sh自动备份脚本》 ?Download download.txt1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 [...]
Mark 一会研究研究
这个好,正愁VPS没有备份方法呢。
呵呵,恩,我也是转载的