一、实践排除复制:
1)NFS01:--exclude 排除参数
[root@nfs01 ~]# mkdir /data -p
[root@nfs01 ~]# cd /data
[root@nfs01 /data]# touch {a..d}
[root@nfs01 /data]# ls
a b c d
例:排除 a b
[root@nfs01 /data]# rsync -avz /data/ --exclude=a --exclude=b [email protected]::backup
sending incremental file list
./
c
d
2)--exclude-from 从文件排除
[root@nfs01 /data]# rsync -avz /data/ --exclude-from=./paichu.txt [email protected]::backup
sending incremental file list
./
16
17
18
19
20
paichu.txt
上述文件中seq 15 >paichu.txt
3)实践删除:
rsync作为镜像,相当于raid1,让两台服务器目录保持一致。
--delete 让两台服务器目录保持一致
推送:
rsync -avz --delete /data/ [email protected]::backup
本地目录有啥,远端就有啥。
注意:远端目录是不是东西更多,多了东西会被删除。提前备份backup对应的目录。
rsync -avz --delete [email protected]::backup /data/
远端有啥。本地目录就有啥,注意本地/data目录。把/data改成根。提前注意备份本地/data
--partial 支持大文件断点续传
--bwlimit=KBPS 限速。
二、在 配置文件/etc/rsyncd.conf增加心的备份目录
1)末端增加
[data] #<==新模块。
path = /data/ #<==新备份目录。
#除了增加以上两行外,读者也可以设定更多的独立配置参数,例如:独立虚拟用户,独立密码文件等。
2)建立目录并授权。
[root@backup ~]# mkdir -p /data
[root@backup ~]# chown -R rsync.rsync /data
[root@backup ~]# ls -ld /data
drwxr-xr-x 2 rsync rsync 6 4月 16 10:04 /data
3)重启rsync服务(只要修改配置,就考虑重载服务)
[root@backup ~]# systemctl restart rsyncd
4)从客户端访问测试
[root@backup ~]# ls /data
etc
三、企业案例
具体备份需求
所有服务器的备份目录必须都为/backup 要备份的系统配置文件包括但不限于: a) 定时任务服务的配置文件 (/var/spool/cron/root) (适合 web 和 nfs 服 务器) 。 b) 开机自启动的配置文件 (/etc/rc.local) (适合web 和 nfs 服务器) 。
c) 日常脚本的目录 (/server/scripts)。 Web 服务器站点目录假定为/var/html/www,如果没有可以先模拟创建。 Web 服务器访问日志路径假定为/app/logs,如果没有可以先模拟创建。 Web 服务器本地保留打包后的 7 天备份数据即可(本地留存不能多于 7 天, 因为太多硬盘会满) 。 备份服务器 backup 上,保留最近 7 天的备份数据,同时保留 6 个月内每周一 的所有数据副本。 备份服务器上,要按照备份数据服务器的内网 IP 为目录保存备份,备份的文 件按照时间名字保存。 需要确保备份的数据尽量完整正确,在 备份服务器上对备份的数据是否完整 进行检查。
每天早晨 8:00 把备份成功或失败结果信息发给系统管理员邮箱中。
第一个里程碑:
41搭建好rsync服务,并在31、7上测试成功。
第二个里程碑 开发脚本打包备份
/backup 备份目录
/var/spool/cron/root /etc/rc.local /server/scripts /var/html/www /app/logs 需要备份的内容
模拟创建:
[root@nfs01 ~]# mkdir -p /server/scripts
[root@web01 ~]# mkdir -p /server/scripts /var/html/www /app/logs
web01:
[root@web01 ~]# mkdir -p /backup
[root@web01 ~]# ls -ld /backup/
drwxr-xr-x 2 root root 6 4月 16 11:36 /backup/
[root@web01 /]# tar zcvhf /backup/bak_$(date +%F_%w).tar.gz /var/spool/cron/root /etc/rc.local /server/scripts /var/html/www /app/logs
tar: 从成员名中删除开头的“/”
/var/spool/cron/root
/etc/rc.local
/server/scripts/
/var/html/www/
/app/logs/
[root@web01 /]# ls /backup/
bak_2019-04-16_2.tar.gz
写脚本:
[root@web01 /]# mkdir /server/scripts/ -p
[root@web01 /]# cd /server/scripts/
[root@web01 /server/scripts]# cat /server/scripts/bak.sh
[root@web01 /server/scripts]# cat bak.sh
#!/bin/sh
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
export RSYNC_PASSWORD=oldboy
IP=$(hostname -i)
mkdir -p /backup/$IP
#1.打包
tar zchf /backup/$IP/bak_$(date +%F_%w).tar.gz /var/spool/cron/root /etc/rc.local /server/scripts /var/html/www /app/logs &>/dev/null &&\
#2.删除
find /backup/ -type f -name "*.tar.gz" -mtime +7|xargs rm -f &&\
#3.推送
rsync -az /backup/ [email protected]::backup &>/dev/null
[root@web01 /server/scripts]# /bin/sh /server/scripts/bak.sh
[root@web01 /server/scripts]# ls /backup/
bak_2019-04-16_2.tar.gz
定时任务:
[root@web01 /server/scripts]# crontab -e
[root@web01 /server/scripts]# crontab -l|tail -2
######back.....
00 00 * * * /bin/sh /server/scripts/bak.sh >/dev/null 2>&1
[root@web01 /server/scripts]# find /backup/ -type f -name "*.tar.gz" -mtime +7|xargs rm -f
确保备份完整。
做flag和采集指纹
[root@nfs01 /server/scripts]# #采集人的指纹
[root@nfs01 /server/scripts]# md5sum oldboy.txt >zhiwen.log
[root@nfs01 /server/scripts]# cat zhiwen.log
348bd3ce10ec00ecc29d31ec97cd5839 oldboy.txt
[root@nfs01 /server/scripts]# #校验
[root@nfs01 /server/scripts]# md5sum -c zhiwen.log
oldboy.txt: 确定
[root@web01 /server/scripts]# cat bak.sh
#!/bin/sh
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
export RSYNC_PASSWORD=oldboy
IP=$(hostname -i)
mkdir -p /backup/$IP
#1.打包
tar zchf /backup/$IP/bak_${IP}_$(date +%F_%w).tar.gz /var/spool/cron/root /etc/rc.local /server/scripts /var/html/www /app/logs &>/dev/null &&\
touch /backup/$IP/bak_${IP}_$(date +%F_%w).flag &&\
#采集指纹
find /backup/ -type f -name "*.tar.gz"|xargs md5sum >/backup/$IP/bak_${IP}_$(date +%F_%w).flag &&\
#2.删除
find /backup/ -type f -name "*.tar.gz" -mtime +7|xargs rm -f &&\
#3.推送
rsync -az /backup/ [email protected]::backup &>/dev/null