第一种工作模式:local
rsync -avz /etc/hosts /tmp/ == cp
rsync -avz --delete /null/ /tmp/ ===rm
第二种工作模式:remote shell
push: (推送本地内容到其他主机上)
rsync -avzP -e ‘ssh -p 22‘ /tmp/ root@192.168.254.150:/tmp/
pull:(获取其他主机的内容)
rsync -avzP -e ‘ssh -p 22‘ root@192.168.254.150:/tmp/ /tmp/
关键语法说明:
1)-avz相当于-vzrttopgD1,表示同步时文件和目录属性不变。
2)-P显示同步的过程,可以用--progress 替换
3)-e ‘ssh-p 22’ ,表示通过ssh的通道传输数据,-p 22 可省略
4) wuyuda@192.168.254.150:/opt 远程的主机系统用户,地址,路径
5) /tmp 本地路径
rsync 服务端:
1)rsync在backup-server中 /etc/rsyncd.conf的配置
uid=rsync
gid=rsync
use chroot=no
max connection=2000
timeout=600
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsync.lock
log file=/var/log/rsyncd.log
ignore errors
read only=false
list=false
hosts allow=192.168.254.0/24 #(backup服务端IP全称/24 或 *)
host deny=0.0.0.0/32
auth users=rsync_backup
secrets file=/etc/rsync.password
fake super = yes
################################
[backup]
comment=backup server by wyd
path=/backup/
2)启动rsync
rsync --daemon 启动rsync
cat /var/run/rsyncd.pid 查看rsync的pid号
ps -ef|grep rsync|grep -v grep 查看rsync的pid号
netstat -lntup|grep rsync 查看rsync的端口号
ss -lntup|grep rsync 查看rsync的端口号
3)创建rsync用户,及共享目录/backup
useradd rsync -s /sbin/nologin -M 添加虚拟用户rsync 并且不创建家目录
id rsync 查看用户id
mkdir /backup
chown -R rsync /backup/ 将/backup/目录的属主权限递归赋予给rsync
ls -ld /backup/ 查看该目录的情况
4)创建密码文件
echo "rsync_backup:wyd" > /etc/rsync.password
cat /etc/rsync.password
ll /etc/rsync.password
chmod 600 /etc/rsync.password 更改该目录的权限,不可读
ll /etc/rsync.password
5)加入开机自启动:
echo "rsync --daemon" >> /etc/rc.local
cat /etc/rc.local
lsof(list open files)是一个列出当前系统打开文件的工具
lsof -i :873 列出谁在使用873端口
rsync客户端:(先要关闭backup-server服务端的防火墙)
1)创建密码文件:
echo "wyd" > /etc/rsync.password
chmod 600 /etc/rsync.password
ls -l /etc/rsync.password
cat /etc/rsync.password
2)rsync操作
push 和 pull都是客户端的操作:
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST (将文件从客户端
推向服务端备份)
rsync -avz /tmp/ rsync_backup@backup-server::backup/ --password
-file=/etc/rsync.password
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST] (将文件从服务端
碑文目录拉回客户端)
rsync -avz rsync_backup@backup-server::backup/ /tmp/ --password
-file=/etc/rsync.password
backup-server服务端,同步安全优化:
pkill rsync
lsof -i :873
rsync --daemon --address=192.168.254.154
netstat -lntup|grep rsync
杀进程:
killall rsync
pkill rsync
kill -9 rsync
kill rsync之后需要rm -f /var/run/rsyncd.pid 再 rsync --daemon
kill -USR2 `cat /var/run/rsyncd.pid` 这条命令同上
kill -HUP `cat /var/run/rsyncd.pid` 直接rsync --daemon
rsync优点:
1:增量同步备份,支持socket(daemon),集中备份
rsync缺点:
1.大量小文件同时同时同步的时候,比对时间较长,有的时候,rsync进程停止.
解决: a.打包同步. b.drbd(文件系统同步复制block)
2.同步大文件,10G这样的大文件有时也会问题,中断.未完整同步前,是隐藏文件.
无差异同步:
push(推):本地有,远端就有,本地没有,删除远端独有的内容
rsync -avz --delete /tmp/ rsync://rsync_backup@192.168.254.154/backup
--password-file=/etc/rsync.password
pull(拉) 远端有本地就有,远端没有,删除本地独有文件
rsync -avz --delete rsync://rsync_backup@192.168.254.154/backup /tmp/
--password-file=/etc/rsync.password
推:备份远端数据 拉:备份本地数据 (建议--delete参数尽量不用)
同步的时候排除文件:
客户端排除参数, 上面的命令加: --exclude={a,b,c}
服务端排除参数,在/etc/rsync.conf里加exclude=a b c test/liming.txt
tar 命令的排除参数同rsync
定时备份任务:
在客户端lamp01执行:
创建脚本目录:mkdir /server/scripts -p
cd /server/scripts && vim bak.sh
#!/bin/sh
path=/backup
dir="`ifconfig ens33|awk -F ‘[ ]‘+ ‘NR==2{print $3}‘`_$(date +%F)"
mkdir $path/$dir -p &&/bin/cp /var/spool/cron/root $path/$dir/cron_root_$(date +%F) &&/bin/cp /etc/rc.local $path/$dir/rc.local_$(date +%F) &&rsync -az $path/ rsync_backup@backup-server::backup/ --password-
file=/etc/rsync.password
#将本地文件推向备份服务器备份
/bin/sh /server/scripts/bak.sh (执行脚本)
在客户端lnmp02执行:
在lnmp02中创建目录 mkdir -p /server/scripts
将lamp01中的监本文件复制到lnmp02中 scp /server/scripts/bak.sh root@lnmp02:/tmp
查看lnmp02客户端/tmp目录是否有bak.sh ll /tmp
在lnmp02中将bak.sh 复制到脚本目录下 cp -p /tmp/bak.sh /server/scripts/
在lnmp02中测试 /bin/sh /server/scripts/bak.sh
原文:https://blog.51cto.com/14956085/2571733