定时备份数据方案
第1章 备份要求
公司里有一台Web服务器,里面的数据很重要,但是如果硬盘坏了,数据就会丢失,现在领导要求你把数据在其他机器上做一个周期性定时备份。要求如下:
每天晚上00点整在Web服务器A上打包备份系统配置文件、网站程序目录及访问日志,并通过rsync命令推送到服务器B上备份保留(备份思路可以是先在本地按日期打包,然后再推送到备份服务器B上)。
具体要求如下:
1)web服务器A和备份服务器B的备份目录必须都为/backup。
2)要备份的系统配置文件包括但不限于:
a. 定时任务的配置文件(/var/spool/cron/root)
b. 开机自启动的配置文件(/etc/rc.local)
c. 日常脚本的目录(/service/scripts)
d. 防火墙iptables的配置文件(/etc/sysconfig/iptables)
3)web服务器站点目录假定为(/var/html/www)
4)web服务器A访问日志路径假定为(/app/logs)
5)web服务器保留打包后的7天的备份数据即可(本地留存不能多于7天,因为太多硬盘会满)
6)备份服务器B按照备份数据服务器的IP地址命名备份文件夹,周六的数据都保留,其他备份仅保留180天的备份。
7)备份服务器B上检查备份结果是否正常,并将每天的备份结果发给管理员。
第2章 实现思路
2.1文件打包命令
打包命令:tar -zxvf name.tar.gz $file
举例:打包文件/etc/hosts到/back目录,打包文件名为test.tar.gz
[[email protected] ~]# ls /backup/ [[email protected] ~]# [[email protected] /]# cd /&& tar -zcvf /backup/test.tar.gz etc/hosts etc/hosts [[email protected] /]# ls /backup/ test.tar.gz
2.2按日期打包
获取当前日期的命令:date+%F
举例:打包文件/etc/hosts到/back目录,打包文件名按日期区分
[[email protected] /]# cd / && tar -zcvf/backup/$(date +%F).tar.gz etc/hosts etc/hosts [[email protected] /]# ls /backup/ 2017-11-04.tar.gz test.tar.gz
2.3周六包特别命名
因为服务器需要保留周六的文件包,所以在打包周六的文件时,需要给文件特殊命名,以便区分。
[[email protected] /]# cd / && tar -zcvf/backup/$(date +%F)_week6.tar.gz etc/hosts etc/hosts [[email protected] /]# ls /backup/ 2017-11-04.tar.gz 2017-11-04_week6.tar.gz test.tar.gz
2.4上传文件到服务器
通过rsync服务将文件上传到备份服务器的指定的目录,安装Rsync服务的步骤参省略。
测试上传:
[[email protected] /]# rsync -avz /backup/$(date+%F).tar.gz [email protected]::backup --password-file=/etc/rsync.password sending incremental file list 2017-11-04.tar.gz sent 305 bytes received 27 bytes 664.00bytes/sec total size is 223 speedup is 0.67
注意:将打包文件放在/backup/本地IP/目录下,再将整个IP目录上传
2.5数据校验
命令:md5sum
md5sum有数据校验的功能,具体做法是用md5sum命令对文件生成一个校验码,然后将这个校验码放在一个任意文件中,再使用md5sum -c参数来检查是否有变动。具体做法如下:
- 对文件生成一个校验文件:
[[email protected] backup]# ls 2017-11-04.tar.gz [[email protected] backup]# md5sum2017-11-04.tar.gz b29cee519b7991a429c353b11c01d533 2017-11-04.tar.gz [[email protected] backup]# md5sum 2017-11-04.tar.gz> md5sum_check #<==生成唯一的校验码并写入到文件中 [[email protected] backup]# cat md5sum_check b29cee519b7991a429c353b11c01d533 2017-11-04.tar.gz