只有你真正的是考过,你才知道中间是多么的痛苦,但是成果是美好的 所以说,路虽远,行则将至。 -----加油吧yzk
**## 客户端需求
客户端需求:
1.客户端每天凌晨1点在服务器本地打包备份(/etc目录和/var/log目录)
2.客户端备份的数据必须存放至以 "主机名_ip地址_当前时间" 命名的目录中
3.客户端最后通过rsync推送本地已经打包好的备份文件至backup服务器
4.客户端服务器本地保留最近7天的数据,避免浪费磁盘空间
注意:所有服务器的备份目录必须都为/momo
先把大的任务拆解成小的任务,思考解决的办法,然后在综合操作,写成脚本----->这里注意备份的数据的源文件用 相对的路径
最后定时任务,执行该脚本
-
打包备份
cd / && tar -zcf /backup/$(hostname)_$(ifconfig eth0 | awk 'NR==2{print $2}')_$(date +%F)/etc.tgz etccd / && tar -zcf /backup/$(hostname)_$(ifconfig eth0 | awk 'NR==2{print $2}')_$(date +%F)/log.tgz var/log -
文件夹的命名的要求
"主机名_ip地址_当前时间" $(hostname) $(ifconfig eth0 | awk 'NR==2{print $2}') $(date +%F) mkdir -p /backup/$(hostname)_$(ifconfig eth0 | awk 'NR==2{print $2}')_$(date +%F) -
删除过期的文件
find / -type f -mtime +7 -delete -
整合脚本
#!/bin/bash #1为了防止脚本无法执行,定义path的变量这里注意是大写 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin #2创建目录,注意目录名的规则递归的创建 -p mkdir -p /backup/$(hostname)_$(ifconfig eth0 | awk 'NR==2{print $2}')_$(date +%F) #3创建相对应的文件 cd / && tar -zcf /backup/$(hostname)_$(ifconfig eth0 | awk 'NR==2{print $2}')_$(date +%F)/etc.tgz etc cd / && tar -zcf /backup/$(hostname)_$(ifconfig eth0 | awk 'NR==2{print $2}')_$(date +%F)/log.tgz var/log #4删除过期的文件 find / -type f -mtime +7 -delete5.rsync推送本地已经打包好的备份文件至momo服务器
在客户端环境变量上配置密码 export RSYNC_PASSWORD=666 rsync -az /backup/ momo01@rsync-41::momo 6.最后的整理脚本最终版
#!/bin/bash #1为了防止脚本无法执行,定义path的变量这里注意是大写 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin #2创建目录,注意目录名的规则递归的创建 -p mkdir -p /backup/$(hostname)_$(ifconfig eth0 | awk 'NR==2{print $2}')_$(date +%F) #3创建相对应的文件 cd / && tar -zcf /backup/$(hostname)_$(ifconfig eth0 | awk 'NR==2{print $2}')_$(date +%F)/etc.tgz etc cd / && tar -zcf /backup/$(hostname)_$(ifconfig eth0 | awk 'NR==2{print $2}')_$(date +%F)/log.tgz var/log #4rsync发送数据以及环境变量 export RSYNC_PASSWORD=yzk666 rsync -avzP /backup/ momo01@rsync-41::momo #4删除过期的文件 find /backup -type f -mtime +7 -delete #对数据进行校验,生成校验的文件 md5sum /backup/$(hostname)_$(ifconfig eth0 | awk 'NR==2{print $2}')_$(date +%F)/*.tgz > /backup/$(hostname)_$(ifconfig eth0 | awk 'NR==2{print $2}')_$(date +%F)/all_data_md5.txt 7.调试脚本
shell 提供啦-x参数可以看到脚本的执行,不会真正的数据的改动。
bash -x my_rsync.sh8.定时的任务
这个可以暂时不管
服务端需求
服务端需求:
1.服务端部署rsync,用于接收客户端推送过来的备份数据
2.服务端需要每天校验客户端推送过来的数据是否完整
3.服务端需要每天校验的结果通知给管理员
4.服务端仅保留6个月的备份数据,其余的全部删除
服务端的任务的拆解
1.服务端部署rsyncd服务用于接受客户端传递过来的数据
1.写配置文件
[root@rsync-41 /]# cat > /etc/rsyncd.conf <<EOF
uid = www
gid = www
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
read only = false
list = false
auth users = momo01
secrets file = /etc/rsync.passwd
log file = /var/log/rsyncd.log
#####################################
[momo]
comment = yzk.cn about rsync
path = /momo
[backup]
comment = yuchaoit.cn about rsync
path = /backup
EOF
#2创建文件夹的配置信息
mkdir -p /momo
chown -R www:www momo
touch /etc/rsync.passwd
chmod 600 etc/rsync.passwd
#3查看用户和密码
[root@rsync-41 /]# cat /etc/rsync.passwd
momo01:yzk666
也可以创建用户和密码
echo 'momo01:yzk666' > /etc/rsync.passwd
#4重启服务
systemctl restart rsyncd
-
修改服务端的rsync的脚本
#!bin/bash #1.安装rsync服务器 yum install rsync -y #2.写配置文件 cat > /etc/rsyncd.conf <<EOF uid = www gid = www port = 873 fake super = yes use chroot = no max connections = 200 timeout = 600 ignore errors read only = false list = false auth users = momo01 secrets file = /etc/rsync.passwd log file = /var/log/rsyncd.log ##################################### [momo] comment = yzk.cn about rsync path = /momo [backup] comment = yuchaoit.cn about rsync path = /backup EOF #3.创建配置文件定义的信息 mkdir -p /momo chown -R www:www momo touch /etc/rsync.passwd chmod 600 /etc/rsync.passwd #4创建用于链接用户和密码 echo 'momo01:yzk666' > /etc/rsync.passwd #5重启服务 systemctl restart rsyncd #6验证数据的完整MD5
验证脚本的完整性
vim install_rsync.sh
bash -x install_rsync.sh
- 校验数据的完整性
- 邮件的通知
- 删除过期的文件
find /momo -type f -mtime +180 -delete
- 脚本的汇总 2.**