Rsync是一种快速并且非常通用的文件复制工具,它以delta-transfer算法闻名,通过仅发送源文件和目的地中现有文件之间的差异来减少在网络上发送的数据量。RSyc广泛用于备份和镜像,并作为日常使用的复制命令。

官网rsync.samba.org/

环境:

Centos 7 

[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

ip: 192.168.253.153   rsync服务端

ip :192.168.253.137   rsync客户端

0.先把客户端和服务端的防火墙和selinux关了

systemctl  stop firewalld
setenforce 0

1.服务端安装采用编译安装

cd /usr/local/src
mkdir rsync
cd rsync
yum install gcc gcc-devel  -y
wget https://download.samba.org/pub/rsync/src/rsync-3.1.3.tar.gz
tar -zxf rsync-3.1.3.tar.gz
cd rsync-3.1.3
./configure --prefix=/usr/local/rsync 
make && make install
PATH="/usr/local/rsync/bin/:$PATH"

2.服务端编写配置文件/etc/rsyncd.conf(文末会解释每一行意义)

[root@localhost rsync-3.1.3]# cat /etc/rsyncd.conf 
#create 2018.5.29 ip 192.168.253.153 by Hal
uid = rsync
gid = rsync 
use chroot = no 
max connections = 200 
timeout = 300 
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.253.0/24
hosts deny = 0.0.0.0/32 
auth users = rsync_backup 
secrets file = /etc/rsync.password 
[backup] 
comment = "this is a comment" 
path = /backup

3.服务端添加相关文件和目录


 


[root@localhost rsync]# mkdir /backup
[root@localhost backup]# chown -R rsync:rsync /backup
[root@localhost rsync]# useradd rsync
[root@localhost rsync]# cat /etc/rsync.password 
rsync_backup:123456
[root@localhost rsync]# chmod 600 /etc/rsync.password

4.服务端启动rsync

[root@localhost rsync]# rsync --daemon

5.查看一下端口有没有打开

Rsync配置文件中的uid和gid rsync配置文件位置_rsync安装部署

成功

 

6.在客户端yum安装rsync

yum install rsync -y

7.客户端创建密码文件并修改权限


[root@localhost ~]# cat /etc/rsync_passwd 
123456
[root@localhost ~]# chmod 600 /etc/rsync_passwd


[root@localhost ~]# echo "hello world" > hello.txt
[root@localhost ~]# rsync -avz -P hello.txt  rsync_backup@192.168.253.153::backup --password-file=/etc/rsync_passwd 
sending incremental file list
hello.txt
             12 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=0/1)

sent 108 bytes  received 43 bytes  100.67 bytes/sec
total size is 12  speedup is 0.08

9.查看一下服务端的/backup目录是否有hello.txt文件

[root@localhost backup]# cat /backup/hello.txt 
hello world


 


rsync配置文件详解

#create 2018.5.29 ip 192.168.253.153 by Hal  
uid = rsync     #rsync使用的用户,默认nobody
gid = rsync     #rsync使用的gid 默认nobody
use chroot = no    #是否限定在该目录下,默认为true,当有软连接时,需要改为fasle,如果为
                   #true就限定为模块默认目录,通常都在内网使用rsync所以不配也可以
max connections = 200 #设置最大连接数timeout = 300 #超时时间 建议300-600
pid file = /var/run/rsyncd.pid    #pid文件位置
lock file = /var/run/rsync.lock  #指定lock文件用来支持“max connections ”参数使总连接不会超过限制
log file = /var/log/rsyncd.log #日志文件路径
ignore errors #忽略io错误
read only = false #指定客户端是否可以上传文件,默认
truelist = false #是否允许客户端查看可用模块 
hosts allow = 192.168.253.0/24 #允许连接的ip段或个别ip,默认任何人都可以连接
hosts deny = 0.0.0.0/32 #不允许连接的IP段或个别ip
auth users = rsync_backup #指定以空格或逗号分隔用户,他们可以使用这个模块,用户不需要再本
                          #系统存在,默认所有用户都可以无密码登录
secrets file = /etc/rsync.password #指定用户名和密码文件 格式: 用户名:密码 密码不超过8位
                                   #这个是密码文件  全线最好是600
[backup] comment = "this is a comment" #此参数指定在客户端获取可用模块列表时显示在模块名称旁边的描述字
                                       ##符串,默认没有这个参数
path = /backup #模块在服务端的绝对路径

 

 

 

 

rsync常用命令

 

 

 

 

 


命令格式


Local: rsync [OPTION...] SRC... [DEST] =====>本地的推送格式 

 

  Access via remote shell: 

 

  Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST] 

 

  Push: rsync [OPTION...] SRC... [USER@]HOST:DEST 

 

  Access via rsync daemon: 

 

  Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST] 

 

  rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST] 

 

  Push: rsync [OPTION...] SRC... [USER@]HOST::DEST 

 

  rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST


 


常用的选项


-v 详细模式输出 传输时候显示进度等信息


-z 传输时进行压缩提高传输速率 --compuress-level=num 可以按级别压缩


-r 对子目录以递归模式,即目录下的所有目录都同样传输


-t 保持文件时间信息


-o 保持文件属性信息


-g 保持稳健属组信息


-a 归档模式 相当于 rtopg


-P 显示同步过程及传输时进度信息


-e 使用信道协议 指定替代rsh 的shell程序 如ssh


--exclude=PATTERN 指定排除不需要传输的文件 支持*来代替任意字符


-D 保持设备文件信息


-l 保留软连接


常用的选项为 avz


 

 


常见用法


将当前目录的hello.txt推送到服务端的backup模块
rsync -avz -P hello.txt  rsync_backup@192.168.253.153::backup --password-file=/etc/rsync_passwd 
或者
rsync -avz -P hello.txt  rsync://rsync_backup@192.168.253.153:/backup --password-file=/etc/rsync_passwd

将远端的backup目录拉取到当前目录
rsync -avz -P   rsync://rsync_backup@192.168.253.153:/backup ./  --password-file=/etc/rsync_passwd 
或者
rsync -avz -P   rsync_backup@192.168.253.153::backup ./  --password-file=/etc/rsync_passwd
也可以利用ssh
利用ssh传输
[root@localhost ~]# rsync -avz -P -e 'ssh -p 22' ./hello.txt  root@192.168.253.153:/backup/ 
root@192.168.253.153's password: root@192.168.253.153's password: 
sending incremental file list


sent 50 bytes  received 12 bytes  17.71 bytes/sec
total size is 0  speedup is 0.00