客户端需求:
1.客户端每一个小时整点在服务器本地打包备份(/etc目录和/var/log目录)
2.客户端备份的数据必须存放至以 "主机名_ip地址_当前时间" 命名的目录中
3.客户端最后通过rsync推送本地已经打包好的备份文件至backup服务器
4.客户端服务器本地保留最近2天的数据,避免浪费磁盘空间
服务端需求:
1.服务端部署rsync,用于接收客户端推送过来的备份数据
2.服务端需要每次校验客户端推送过来的数据是否完整
3.服务端需要每次校验的结果通知给管理员
4.服务端仅保留7天的备份数据,其余的全部删除
注意:所有服务器的备份目录必须都为/backup
客户端:172.16.1.110 client-110
服务端:172.16.1.241 rsync-test-241
思路:先把大需求,拆分为每一个小需求,思考出解决办法,然后再综合操作,最后再写成脚本。
客户端每一个小时整点在服务器本地打包备份(/etC++
目录和/var/log
目录)
注意tar命令打包,尽量以相对路径去打包
/etc目录是为了备份系统配置文件、应用配置文件
/var/log是为了备份所有应用程序的日志
/backup
[root@client-110 ~]# mkdir /backup
/etc
[root@client-110 ~]# cd / && tar -czf /backup/etc.tgz etc
[root@client-110 /]# ll -h /backup/
总用量 10M
-rw-r--r-- 1 root root 10M 11月 20 14:48 etc.tgz
/var/log
[root@client-110 /]# cd / && tar -czf /backup/log.tgz var/log
[root@client-110 /]# ll -h /backup/log.tgz
-rw-r--r-- 1 root root 391K 11月 20 14:57 /backup/log.tgz
客户端备份的数据必须存放至以"主机名_ip地址_当前时间"命名的目录中,期望的结果是,如client-110_172.16.1.110_2024-11-20_16
[root@client-110 /]# hostname
client-110
查看网卡eth1
地址
[root@client-110 /]# ifconfig eth1
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.16.1.110 netmask 255.255.255.0 broadcast 172.16.1.255
inet6 fe80::5054:ff:fef4:86e2 prefixlen 64 scopeid 0x20<link>
ether 52:54:00:f4:86:e2 txqueuelen 1000 (Ethernet)
RX packets 735 bytes 46116 (45.0 KiB)
RX errors 0 dropped 680 overruns 0 frame 0
TX packets 34 bytes 2236 (2.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
通过awk
命令提取ip地址
[root@client-110 /]# ifconfig eth1|awk 'NR==2{print $2}'
172.16.1.110
日期_小时
服务端需求:
1.服务端部署rsync,用于接收客户端推送过来的备份数据
2.服务端需要每次校验客户端推送过来的数据是否完整
3.服务端需要每次校验的结果通知给管理员
4.服务端仅保留7天的备份数据,其余的全部删除
注意:所有服务器的备份目录必须都为/backup
0
服务端需求:
1.服务端部署rsync,用于接收客户端推送过来的备份数据
2.服务端需要每次校验客户端推送过来的数据是否完整
3.服务端需要每次校验的结果通知给管理员
4.服务端仅保留7天的备份数据,其余的全部删除
注意:所有服务器的备份目录必须都为/backup
1
服务端需求:
1.服务端部署rsync,用于接收客户端推送过来的备份数据
2.服务端需要每次校验客户端推送过来的数据是否完整
3.服务端需要每次校验的结果通知给管理员
4.服务端仅保留7天的备份数据,其余的全部删除
注意:所有服务器的备份目录必须都为/backup
2
服务端需求:
1.服务端部署rsync,用于接收客户端推送过来的备份数据
2.服务端需要每次校验客户端推送过来的数据是否完整
3.服务端需要每次校验的结果通知给管理员
4.服务端仅保留7天的备份数据,其余的全部删除
注意:所有服务器的备份目录必须都为/backup
3
客户端最后通过rsync
推送本地已经打包好的备份文件至备份服务器。
此处不展示服务端rysnc搭建,请参考1.在rsync-test-241服务器上搭建rsync
rsync
工具服务端需求:
1.服务端部署rsync,用于接收客户端推送过来的备份数据
2.服务端需要每次校验客户端推送过来的数据是否完整
3.服务端需要每次校验的结果通知给管理员
4.服务端仅保留7天的备份数据,其余的全部删除
注意:所有服务器的备份目录必须都为/backup
4
RSYNC_PASSWORD
变量与rsync
服务端同步文件服务端需求:
1.服务端部署rsync,用于接收客户端推送过来的备份数据
2.服务端需要每次校验客户端推送过来的数据是否完整
3.服务端需要每次校验的结果通知给管理员
4.服务端仅保留7天的备份数据,其余的全部删除
注意:所有服务器的备份目录必须都为/backup
5
客户端机器本地保留最近2天的数据,避免浪费磁盘空间
服务端需求:
1.服务端部署rsync,用于接收客户端推送过来的备份数据
2.服务端需要每次校验客户端推送过来的数据是否完整
3.服务端需要每次校验的结果通知给管理员
4.服务端仅保留7天的备份数据,其余的全部删除
注意:所有服务器的备份目录必须都为/backup
6
把上述拆解的过程,写成一个脚本、批量执行。
服务端需求:
1.服务端部署rsync,用于接收客户端推送过来的备份数据
2.服务端需要每次校验客户端推送过来的数据是否完整
3.服务端需要每次校验的结果通知给管理员
4.服务端仅保留7天的备份数据,其余的全部删除
注意:所有服务器的备份目录必须都为/backup
7
服务端需求:
1.服务端部署rsync,用于接收客户端推送过来的备份数据
2.服务端需要每次校验客户端推送过来的数据是否完整
3.服务端需要每次校验的结果通知给管理员
4.服务端仅保留7天的备份数据,其余的全部删除
注意:所有服务器的备份目录必须都为/backup
8
服务端部署rsync,用于接收客户端推送过来的备份数据
配置rsyncd服务端的的全流程请参考1.在rsync-test-241服务器上搭建rsync,也可以写成如下脚本,一键安装
服务端需求:
1.服务端部署rsync,用于接收客户端推送过来的备份数据
2.服务端需要每次校验客户端推送过来的数据是否完整
3.服务端需要每次校验的结果通知给管理员
4.服务端仅保留7天的备份数据,其余的全部删除
注意:所有服务器的备份目录必须都为/backup
9
服务端需要每次校验客户端推送过来的数据是否完整
通过md5sum命令即可生成文件的唯一校验值,等于添加了一个防伪标记。
client-110
上的脚本了,多一个对文件校验的过程客户端:172.16.1.110 client-110
服务端:172.16.1.241 rsync-test-241
0
client-110
修改完脚本后手动运行一次脚本客户端:172.16.1.110 client-110
服务端:172.16.1.241 rsync-test-241
1
rsync-test-241
,可以通过命令校验文件完整性客户端:172.16.1.110 client-110
服务端:172.16.1.241 rsync-test-241
2
服务端需要每次校验的结果通知给管理员
客户端:172.16.1.110 client-110
服务端:172.16.1.241 rsync-test-241
3
客户端:172.16.1.110 client-110
服务端:172.16.1.241 rsync-test-241
4
服务端仅保留7天的备份数据,其余的全部删除
客户端:172.16.1.110 client-110
服务端:172.16.1.241 rsync-test-241
5
客户端:172.16.1.110 client-110
服务端:172.16.1.241 rsync-test-241
6
客户端:172.16.1.110 client-110
服务端:172.16.1.241 rsync-test-241
7
客户端:172.16.1.110 client-110
服务端:172.16.1.241 rsync-test-241
8