一、安装rsync
安装rsync,我们可以分为两种方式:源码方式安装和RPM方式安装。注意:rsync软件无论是服务器端还是客户端都是同一个软件包。

1、源码方式安装
# 源码方式安装rsync,需要到其官网下载对应的安装包。rsync官网:rsync.samba.org 
1)、下载
wget https://download.samba.org/pub/rsync/src/rsync-3.2.3.tar.gz
2)、解压并安装
tar -xvf rsync-3.2.3.tar.gz
3)、编译安装
# 源码安装rsync时,其编译时所需要的gcc库文件尽量提前安装完毕
# 默认安装到/usr/local/目录下
./configure
make &&make install
4)、设置开机启动
echo “/usr/local/bin/rsync --daemon -config=/etc/rsyncd.conf” >>/etc/profile

2、 yum方式安装
1)#yum -y install  rsync
2)#cat /etc/rsyncd.conf
uid = rsync                            #运行进程的用户
gid = rsync                            #运行进程的用户组
port = 873                             #监听端口
fake super = yes                       #无需让rsync以root身份运行,允许接收文件的完整属性
use chroot = no                        #禁锢推送的数据至某个目录,不允许跳出该目录
max connections = 200                  #最大连接数
timeout = 600                          #超时时间
ignore errors                          #忽略错误信息
read only = false                      #对备份数据可读写
list = false                           #不允许查看模块信息
auth users = rsync_backup              #定义虚拟用户,作为连接认证用户
secrets file = /etc/rsync.password     #定义rsync服务用户连接认证密码文件路径
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log     
#hosts allow = 10.0.0.0/24
#hosts deny = 0.0.0.0/32    
#####################################
[data]                               #定义模块信息      装到哪里哪里就是服务端
comment = welcome to data!                 #模块注释信息
path = /data                         #定义接收备份数据目录

3).增加rsync用户
useradd -s /sbin/nologin -M rsync 
4).增加密码文件/etc/rsync.password
echo 'rsync_backup:1' >/etc/rsync.password
chmod 600 /etc/rsync.password
5).创建备份保存目录
mkdir -p /data
chown -R rsync. /data/
6).systemctl start rsyncd
systemctl enable rsyncd

二.rsync有三种调用方式,第一种是本地模式,第二种是远程访问模式(ssh),第三种是C/S架构、守护进程模式
OPTION相关
-a:–archive archive mode 权限保存模式,相当于 -rlptgoD 参数,存档,递归,保持属性等。
-r:–recursive 复制所有下面的资料,递归处理。
-p:–perms 保留档案权限,文件原有属性。
-t:–times 保留时间点,文件原有时间。
-g:–group 保留原有属组。
-o:–owner 保留档案所有者(root only)。
-D:–devices 保留device资讯(root only)。
-l:–links 复制所有的连接,拷贝连接文件。
-z:–compress 压缩模式,当资料在传送到目的端进行档案压缩。
-H:–hard-links 保留硬链接文件。
-A:–acls 保留ACL属性文件,需要配合–perms。
-P 等同于 --partial --progress,断点续传并显示进度
--partial 表示保留部分传输的文件,即中断后可断点续传,
--progress 显示传输过程中的进度;
--version:输出rsync版本。
-v:–verbose 复杂的输出信息。
-u:–update 仅仅进行更新,也就是跳过已经存在的目标位置,并且文件时间要晚于要备份的文件,不覆盖新的文件。
--port=PORT:定义rsyncd(daemon)要运行的port(预设为tcp 873)。
--delete:删除那些目标位置有的文件而备份源没有的文件。
--delete-before: 接收者在传输之前进行删除操作
--password-file=FILE :从 指定密码文件中获取密码。 密码文件的权限需要设置为600,
--bwlimit=KBPS:限制 I/O 带宽。防止带宽占满,导致用户请求无法访问,内网没有关系
--filter "-filename":需要过滤的文件。
--exclude=filname:需要过滤的文件。
--append 表示追加数据到较短的文件,会在增量同步时计算文件大小并直接追加新的数据到文件,节省IO校验的过程 
2.1.Local:#本地模式
    rsync [OPTION...] SRC... [DEST] 
        rsync -avzP /src/ /dest/  #只拷贝src目录下的所有文件到dest下
        rsync -avzP /src  /dest/  #把整个src目录和目录下文件到dest下
2.2.Access via remote shell:#远程访问模式
    Pull:     rsync [OPTION...] [USER@]HOST:SRC... [DEST] 
    #从远程拉取 更新
    #USER:远程服务器上必须存在的用户
    #HOST:IP或者hosts里面的存在解析的主机名
        rsync -avzP root@10.0.0.41:/root/test.txt /tmp/
        当远程机器的ssh端口不是22时,需要通过-e 'ssh -p 9022' 指定端口
    Push:     rsync [OPTION...] SRC... [USER@]HOST:DEST
    #推送到远程 上传 
        rsync -avzP /tmp/ root@10.0.0.41:/tmp/
2.3.Access via rsync daemon:#C/S架构、守护进程模式                
    Pull:     rsync [OPTION...] [USER@]HOST::SRC... [DEST]
            rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
        rsync -avz rsync_backup@10.0.0.41::data /tmp/ --password-file=/etc/client.rsync 
        rsync -avz rsync://rsync_backup@10.0.0.41:873/data /tmp/ --password-file=/etc/client.rsync
        rsync -avz rsync://rsync_backup@10.0.0.41/data /tmp/ --password-file=/etc/client.rsync
    Push:     rsync [OPTION...] SRC... [USER@]HOST::DEST
            rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
        rsync -avz /tmp/ rsync_backup@10.0.0.41::data  --password-file=/etc/client.rsync 
        rsync -avz /tmp/ rsync://rsync_backup@10.0.0.41:873/data --password-file=/etc/client.rsync
        rsync -avz /tmp/ rsync://rsync_backup@10.0.0.41/data --password-file=/etc/client.rsync

2.4 显示远程机器上的文件列表
rsync -list root@10.0.0.41:/root/ #远程模式
rsync -v     rsync_backup@10.0.0.41::data/test/     --password-file=/etc/client.rsync 
rsync -list rsync_backup@10.0.0.41::data/test/  --password-file=/etc/client.rsync