要求如下:
每天晚上0点 在NFS服务器A(rsync客户端)上打包备份网站程序目录(/var/www/html)
通过rsync命令推送到服务器B上备份保存
具体要求:
1.NFS服务器 和 备份服务器 他们的备份目录都是backup
2.NFS服务器站点假定为/var/www/html
3.NFS服务器本地保留7天的备份
4.备份服务器上检查备份结果是否正常 把每天的结果发送给管理员(并不需要邮箱软件) sendmail
5.备份服务器上每周六的数据都保留 其他的仅保留180天
1、首先部署NFS,将/var/www/html 目录共享给web管理员(webadmin)
挂载成功:(NFS部署成功)
2、在备份服务器和NFS服务器上创建备份目录
3、NFSserver的/var/www/html打包压缩同步到/backup目录,每次备份的打包备份的文件只保留七天:
tar -zchf /backup/html.$(date +%F%w -d '-1day').tar.gz /var/www/html/
注释:tar h参数是将符号链接文件视作普通文件或目录,从而打包的是源文件,%F 完整日期格式 %w 一星期中的第几日(0-6),0 代表周一 ,$读取具体的天数作为备份文件名,这样做的目的是为了不重名,-d ‘-1 day’ 如果是今天备份的今天也算一天所以要去掉
find /backup -name “.tar.gz” –mtime +7 -type f |xargs rm –f
注释:–mtime 参数:最后一次修改发生在n天以内,距离当前时间为n24小时以内
查找/backup 目录下搜后缀为.tar.gz的创建时间达到7天的文件,将此文件删除,xargs命令是给其他命令传递参数的一个过滤器,换行和空白将被空格取代。
4、在将备份目录推送之前,加指纹信息,方便服务端的验证,前提是创建指纹的客户端路径和服务端路径相同才可以
为什么要添加指纹:为了生成日志让管理员更直观的查看备份的结果
[root@node1 backup]# find /backup/ -name '.tar.gz' |xargs md5sum >/backup/check.txt
[root@node1 backup]# md5sum -c check.txt
是不是直观的看到了 OK
5、将已经备份好压缩文件推送到rsync备份服务器上,推送完整的数据,到模块指定的目录下
rsync -avz /backup/ rsync_backup@backup.team.cn::backup --password-file=/etc/rsync.password
备份服务器上查看推送:(推送成功)
自动化:在客户机上测试了命令后,需要编写一个脚本,实现自动化运维!
脚本如下:
配置周期作业:(每晚0点自动执行脚本进行备份)
Crontab –e //编写周期作业
接下来是备份服务器端:
1、 备份服务器上[每周六的数据都保留],其他备份仅保留180天备份
find /backup/ -name ”.tar.gz” !”6.tar.gz” -mtime +180 –type f |xargs rm –rf
注释:将所有后缀为不为6.tar.gz(因为前面的备份文件命名规则是%F%w 所以6就表示每个星期六) 并且文件存在天数大于等于180天的备份文件删除掉。
2、 备份服务器上检查备份结果是否正常,并将每天的备份结果发给管理员信箱
(1)首先将本地的send-mail配置文件修改为all:
(2)重启邮件服务
systemctl restart postfix
(3)发送邮件给管理员
-s 表示邮件标题
root为接受的用户 @ 后面可跟ip地址或者域名
如果发给qq邮箱格式为: root@2235590965.qq.com
测试成功:
3、 最后在备份服务器上实现自动化运维:
(1) 编写自动化脚本:
(2)配置周期作业:
crontab -e
总结此次试验:
遇到的问题:date +%F%w -d '-1day' 命名文件出现了无法正确获取时间
解决方法:在多次测试后终于发现需要加$符号来读取这段函数获取的时间。
如果rsync的配置文件不会做,请看我上一篇的博客,有错的地方还请点评指点,在此感谢!