一.rsync简介

1.什么是rsync

  • rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。并且可以不进行改变原有数据的属性信息,实现数据的备份迁移特性。
  • rsync(remote synchronize)是Liunx/Unix下的一个远程数据同步工具。
  • 它可通过LAN/WAN快速同步多台主机间的文件和目录,并适当利用rsync算法(差分编码)以减少数据的传输。
  • rsync算法并不是每一次都整份传输,而是只传输两个文件的不同部分,因此其传输速度相当快

2.rsync的优点

  • 可以镜像保存整个目录树和文件系统。
  • 可以做到保持原来文件的权限、时间、软硬连接等。
  • 无需特殊权限即可安装。
  • 快速:第一次同步时rsync复制全部内容,但在下一次值传输修改过的内容
  • 压缩传输:rysnc在传输的过程中可以实行压缩及解压缩操作,可以使用更少的带宽
  • 安全:可以使用scp、ssh等方式来进行文件传输
  • 支持匿名传输,以方便进行网站镜像
  • rsync不仅可以远程同步数据(类似于scp),而且可以本地同步数据(类似于cp),做差异同步

3.rsync同步的方式

  1. 全量备份:原有的数据全部传送,把原来的文件和新的文件一起统一传送,全量复制,效率低
  2. 差量备份:备份上次完全备份以后有变化的数据(针对的是上次的完全备份,备份过程中不清除存档属性)
  3. 增量备份:在传输数据之前通过算法将你有的数据和我有的数据进行对比,把不一样的数据通过网络传输增量复制,效率高

4.rsync的认证方式

rsync有两种常用的认证方式,一种是rsync-daemon方式,另外一种是ssh方式。 在平时使用过程,我们使用最多的是rsync-daemon方式。 注意:在使用rsync时,服务器和客户端都必须安装rsync程序。

4.1 rsync-daemon认证

rsync在rsync-daemon认证方式下,默认监听TCP的873端口。

rsync-daemon认证方式是rsync的主要认证方式,这个也是我们经常使用的认证方式。 并且也只有在此种模式下,rsync才可以把密码写入到一个文件中。

注意: rsync-daemon认证方式,需要服务器和客户端都安装rsync服务 并且只需要rsync服务器端启动rsync,同时配置rsync配置文件。 客户端启动不启动rsync服务,都不影响同步的正常进行。

4.2 ssh认证

rsync在ssh认证方式下,可通过系统用户进行认证,即在rsync上通过ssh隧道进行传输,类似于scp工具。 此时同步操作不在局限于rsync中定义的同步文件夹。

注意: ssh认证方式,不需要服务器和客户端配置rsync配置文件 只需要双方都安装rsync服务,并且也不需要双方启动rsync

若rsync服务端SSH为标准端口,此时rsync使用方式如下:

rsync -avzp  /root/test root@10.10.10.10:/root/
# 从远端服务器下载到本地
rsync -avzp root@10.10.10.10:/var/  /root/test

若rsync服务端SSH为非标准端口,可通过rsync的-e参数进行端口指定。使用方式如下:

rsync -avz /root/test -e 'ssh -p 1234' root@10.10.10.10:/root/

5. rsync-daemon认证配置

5.1 服务端配置

  1. 安装rsync
yum install rsync -y
# 配置开机自启动
systemctl enable rsyncd
systemctl start rsyncd
  1. 修改配置文件
 编辑配置文件 vim  /etc/rsyncd.conf

cat >> /etc/rsyncd.conf  << EOF
uid = rsync
gid = rsync
port = 873
fake super = yes 
use chroot = no 
max connection = 200
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 = yes
auth users = myuser
secrets file = /etc/rsync.passwd

[backup]
comment = backup_dir
path = /bakup 

[date]
comment =date_dir
path = /test1/date

EOF

 # 以用户rsync用户启动,此用户对应后续创建的无法登录shell的系统用户
uid = rsync
gid = rsync
# 监听端口信息(默认为873)
port = 873

 #无需让rsync以root身份运行,允许接受文件的完整性
fake super = yes      
#禁锢推送的数据至某个目录,不允许跳出该目录
use chroot = no        
 #最大连接数
max connection = 200  
#超时时间
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 = yes          

# 定义虚拟用户,作为连接认证用户,此为myuser
auth users = myuser

#定义rsync服务用户连接认证密码文件路径
secrets file = /etc/rsync.passwd

#定义模块信息,可设置多个模块,此为backup模块
[backup]
#模块注释信息
comment = commit   
#定义接受备份数据目录
path = /bakup      
# 此为date模块
[date]
comment =date
path = /date

其余配置参数说明

# 在独立运行时,用于指定的服务器运行的 IP 地址
address = IP

# 无需让rsync以root身份运行,允许接收文件的完整属性
fake super = yes   

# 指定当客户请求列出可以使用的模块列表时,该模块是否应该被列出。
# 默认为 true,如果设置该选项为 false,可以创建隐藏的模块
list = false 

模块其余参数说明

# 指定多个由空格隔开的多个文件或目录(相对路径)
# 并将其添加到 exclude 列表中。这等同于在客户端命令中使用 –exclude 来指定模式。
exclude = exclude_file

# 指定一个包含 exclude 规则定义的文件名,服务器从该文件中读取 exclude 列表定义
exclude from = exclude-file.txt

# 指定多个由空格隔开的多个文件或目录(相对路径),并将其添加到 include 列表中。
# 这等同于在客户端命令中使用 –include 来指定模式 。
include = include-file.txt

# 指定一个包含 include 规则定义的文件名,服务器从该文件中读取 include 列表定义
include from = exclude-file.txt

# 一个模块只能指定一个exclude 参数、一个include 参数
# 结合 include 和 exclude 可以定义复杂的exclude/include 规则
# 这几个参数分别与相应的rsync 客户命令选项等价,唯一不同的是它们作用在服务器端
  1. 创建用户
 # 创建一个rsync进程运行时使用的普通用户 rsync
 useradd rsync -M -s /sbin/nologin
  1. 创建两个模块中的备份目录
mkdir -p /backup /test1/date
  1. 修改目录所有者
chown -R rsync:rsync /backup;chown -R rsync:rsync /test1/date
  1. 创建rsync软件专用的账号密码
#服务端需要定义一个客户端连接    虚拟用户名和密码
#密码文件形式  user:passwd
# 该存放密码文件的位置和名称随意,但需要与rsync.conf中的secrets file指定的路径一致
echo "myuser:123456" > /etc/rsync.passwd
# 降低文件权限为600,必须是600
chmod 600 /etc/rsync.passwd
  1. 以上配置完成,重启服务
systemctl restart rsyncd

5.2 客户端配置

  • 在客户端安装完毕rsync服务后,是不需要启动rsync服务的。
  • 我们只需要在客户端创建连接rsync服务器时,验证码用户所需要的密码文件即可。
  • 账号和密码需要与/etc/rsync.passwd中的一致
  1. 安装rsync
yum install rsync -y
  1. 提供密码认证

客户端进行密码认证时有2个简便方法,默认是无密码文件,无密码变量,需要自己手动输入虚拟用户的密码

方式一:使用密码文件,将密码写入到密码文件中,使用时调用密码文件即可

#密码写入到密码文件,此密码文件无位置名称限制
echo “123456”>>/etc/rsync.passwd    
chmod 600 /etc/rsync.passwd            # 修改权限,必须是660

# 查看 rsync 守护程序分配的所有 模块 列表,可以执行下面命令。
   rsync rsync://192.168.106.29

# 使用示例参考
rsync -avzP   /var/nginx.log  账户@主机名::模块名
rsync -avzP  --password-file=/etc/rsync.passwd   /var/nginx.log  myuser@192.168.106.29::date
# 从远端服务器下载文件到本地
rsync -avzP  --password-file=/etc/rsync.passwd    myuser@192.168.106.29::backup /etc/nginx/backup

方式二:使用密码变量,RSYNC_PASSWORD

export RSYNC_PASSWORD='123456' # 导入myuser的密码

rsync -avzP    /var/nginx.log  myuser@192.168.106.29::backup

# 撤销这个密码变量,或重启失效
unset RSYNC_PASSWORD
  • reward_image1
此作者没有提供个人介绍。
最后更新于 2026-03-30