搭建企业级全网数据定时备份方案[cron + rsync]
1.1.1. 服务端的配置[192.168.25.141]
Rsync的端口是:873
man rsyncd.conf 查看帮助
Rsync是Redhat默认自带的,这里只是做了rsync服务器端的后台监测运行
1.vim /etc/rsyncd.conf # 注意将里面的注释信息全部删除后创建daemon后台运行进程 vi /etc/rsyncd.conf -->man rsyncd.conf 查看帮助 ######rsyncd.conf####### uid = rsync ----->非系统虚拟用户 gid = rsync use chroot =no -->防止出现安全问题 maxconnections = 200 --->最大连接数 timeout = 300 --->超时时间 pid file =/var/run/rsyncd.pid --->进程pid所在的文件 lock file =/var/run/rsync.lock -->锁 log file =/var/log/rsyncd.log -->出错的日志文件 [backup] --->模块 path = /backup ->可以理解为共享目录 ignore errors --->忽略错误 read only =false --->可读写 list = false -->是否允许列表 hosts allow =192.168.25.0/24 --->允许的主机 hosts deny =0.0.0.0/32 auth users =rsync_backup -->虚拟用户 secrets file= /etc/rsync.password -->用户对应的密码文件 #######rsyncd.config######## 启动/关闭rsync服务进程 /usr/bin/rsync --daemon --config=/etc/rsyncd.conf pkill rsync 检查rsync服务/端口 ps -ef|grep rsync|grep -v "grep" ->检查一下进程 netstat -lntup|grep 873 ->检查端口 ==> ss -lntup|grep 873 ==> lsof -i:873
查看日志,确认服务开启[执行完daemon后,会开启日志文件]
cat /var/log/rsyncd.log
创建用户rsync
useradd rsync -s /sbin/nologin -M 虚拟用户,不需要创建家目录
创建共享目录backup
mkdir /backup chown -R rsync.rsync /backup ls -ld /backup
写入密码进入/etc/rsync.password
echo "rsync_backup:ftl600@HHH" >> /etc/rsync.password ->这里 rsync_backup rsync的虚拟用户名,ftl600@HHH是rsync的虚拟用户名的密码 cat /etc/rsync.password chmod 600 /etc/rsync.password ls -dl /etc/rsync.password
开机自启动
echo "rsync --daemon">>/etc/rc.local tail /etc/rc.local
1.1.2. 客户端的配置[192.168.25.142]
写入密码到rsync.password文件
echo "ftl600@HHH" > /etc/rsync.password -->只需要密码 cat /etc/rsync.password chmod 600 /etc/rsync.password -->必须是只读文件 ls -dl /etc/rsync.password
1.1.3. 测试同步效果
客户端/etc/hosts目录以及目录本身同步到服务端的back目录(配置文件里配置的module)下
客户端:
rsync -avz /etc/hosts rsync_backup@192.168.25.141::backup --password-file=/etc/rsync.password rsync -avz rsync_backup@192.168.25.141::backup /tmp --password-file=/etc/rsync.password
服务端:
注意: 1.使用绝对路径 2. destination must be a directory when copying more than 1 file
1.1.4 Rsync无差异同步[可选]
无差异同步(尽量不用) 尽量不用,用之前一定要备份
以本地/tmp为准,tmp有服务器端有,服务器多余的文件删除
push: rsync -avz --delete /tmp rsync_backup@192.168.25.137::backup --password-file=/etc/rsync.password
以服务器端为准,服务器端有,同步到本地/tmp, /tmp多余的文件删除排除
pull: rsync -avz --delete rsync_backup@192.168.25.137::backup /tmp --password-file=/etc/rsync.password
1.服务端:/etc/rsyncd.conf里面添加exclude= a b test/h.txt
2.客户端:
rsync -avz --exclude=/tmp/{1,2} /tmp/ rsync_backup@192.168.25.137::backup --password-file=/etc/rsync.password rsync -avz --exclude=/tmp/{a..g} /tmp/ rsync_backup@192.168.25.137::backup --password-file=/etc/rsync.password rsync -avz --exclude-from=paichu.txt /tmp/ rsync_backup@192.168.25.137::backup --password-file=/etc/rsync.password
1.1.5. 脚本配合rsync实现实时同步
1.编写脚本文件hh.sh
#!/bin/sh IP="$(ifconfig eth0|awk -F '[ :]+' 'NR==2{print $4}')" path="/backup_$IP.$(date +%F)" dir="$IP.$(date +%F)" echo ".................Starting copy rc.local................" mkdir -p $path/$dir $$\ /bin/cp /etc/rc.local $path/$dir/rc.local_$(date +%F) echo ".................Ending copy rc.local................" echo ".................Starting rsync......................." rsync -az $path rsync_backup@192.168.25.141::backup --password-file=/etc/rsync.password echo ".................Ending rsync......................." exit
2.设置定时任务
crontab -e #################Crontab for rsync########### 0 0 20 8 * /bin/sh /home/omd/hh.sh >/dev/null 2>&1
更多参考
作者:小a玖拾柒
-------------------------------------------
个性签名: 所有的事情到最後都是好的,如果不好,那說明事情還沒有到最後~
本文版权归作者【小a玖拾柒】和【博客园】共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利!