第一种工作模式: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.password2)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.passwordbackup-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 --daemonrsync优点:
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