rsync 远程同步工具

rsync(Remote Synchronize,远程同步)是Linux系统下的数据镜像备份工具。使用快速增量备份工具可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。
rsyncd

特性

  • 无须特殊权限即可安装。
  • 支持匿名传输,以方便进行网站镜像。
  • 可以镜像保存整个目录树和文件系统。
  • 可以很容易做到保持原来文件的权限、时间、软硬链接等等。
  • 快速:第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件。rsync 在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽。
  • 安全:可以使用scp、ssh等方式来传输文件,当然也可以通过直接的socket连接。

安装

不同的Linux发行版安装方法不一样(apt、rpm、yum),请自行查找安装方法。

原理

rsync是在服务端(同步源)启动一个守护进程rsyncd,在客户端(同步目的地)主动使用rsync命令从服务端同步文件。

rsync默认运行在873端口,由于1024以下端口为特权端口,仅root用户可以使用,所以默认运行rsync的为root用户。

服务器端

本机IP为192.168.1.1。

配置文件

执行vim /etc/rsyncd.conf命令创建配置文件,并输入以下内容:

### 全局配置参数
port = 873 # rsync默认端口,1024以下只有root用户可以使用,可更改为1024以上端口
uid = root # rsyncd服务的运行用户,默认是nobody
gid = root # rsyncd服务的运行组,默认也是nobody
use chroot = yes # 在传输前切换到指定的目录下,并将其监禁在内
max connections = 100 # 最大并发连接数
transfer logging = true # 记录传输日志
log format = %h %o %f %l %b # 设置日志文件格式
log file = /var/log/rsyncd.log # 指定日志文件,而不把日志发送给syslog
pid file = /var/run/rsyncd.pid # 指定rsyncd的pid文件
hosts allow = 192.168.1.2 # 设置白名单,多个IP逗号隔开,只有白名单内的IP可以进行同步
timeout = 300 # 设定超时时间

### 自定义模块,可以指定模块参数
[secrets]
path = /opt/rsync # 服务器端同步目录
ignore errors # 忽略IO错误
read only = no // 设置no,客户端可以上传文件,yes是只读
write only = no // 设置no,客户端可以下载文件,yes不能下载
list = yes // 客户请求时,可以列出文件列表,不建议打开,会被扫描出rsync未授权访问漏洞
auth users = vpser # 虚拟用户名,与Linux系统用户无关,多个用户名逗号隔开
secrets file = /etc/rsyncd.secrets # 密码文件,文件格式为:用户名:密码

密码文件

执行vim /etc/rsyncd.secrets命令创建密码文件,并输入以下内容:

# 如果配置文件里面的端口为1024以下,这里必须使用root用户
root:test1234

启动守护进程

首先需要在/etc/xinetd.d下添加一个守护进程,具体操作请百度。

rsync --daemon --config=/etc/rsyncd.conf
如果修改了/etc/rsyncd.conf配置文件,需要使用kill -9 rsync进程pid将进程rsync杀掉,并重新启动或者直接使用service rsyncd restart重启rysncd服务。

客户端

本机IP为192.168.1.2。

密码文件

执行命令echo "test1234" > /etc/rsyncd.secrets创建密码文件。

客户端的密码文件只需要输入密码即可

同步文件到客户端

rsync -auv --port 873 --progress --delete --password-file=/etc/rsyncd.secrets root@192.168.1.1::secrets /opt/rsync

OPTION选项 功能
-a 这是归档模式,表示以递归方式传输文件,并保持所有属性,它等同于-r、-l、-p、-t、-g、-o、-D 选项。-a 选项后面可以跟一个 --no-OPTION,表示关闭 -r、-l、-p、-t、-g、-o、-D 中的某一个,比如-a --no-l 等同于 -r、-p、-t、-g、-o、-D 选项。
-r 表示以递归模式处理子目录,它主要是针对目录来说的,如果单独传一个文件不需要加 -r 选项,但是传输目录时必须加。
-v 表示打印一些信息,比如文件列表、文件数量等。
-l 表示保留软连接。
-L 表示像对待常规文件一样处理软连接。如果是 SRC 中有软连接文件,则加上该选项后,将会把软连接指向的目标文件复制到 DEST。
-p 表示保持文件权限。
-o 表示保持文件属主信息。
-g 表示保持文件属组信息。
-D 表示保持设备文件信息。
-t 表示保持文件时间信息。
–delete 表示删除 DEST 中 SRC 没有的文件。
–exclude=PATTERN 表示指定排除不需要传输的文件,等号后面跟文件名,可以是通配符模式(如 *.txt)。
–progress 表示在同步的过程中可以看到同步的过程状态,比如统计要同步的文件数量、 同步的文件传输速度等。
-u 表示把 DEST 中比 SRC 还新的文件排除掉,不会覆盖。
-z 加上该选项,将会在传输过程中压缩。

如果想要同步到服务端,只需将::secrets部分放到最后即可:
rsync -auv --port 873 --progress --delete --password-file=/etc/rsyncd.secrets /opt/rsync root@192.168.1.1::secrets

 

posted @ 2021-02-11 11:48  ageovb  阅读(184)  评论(0编辑  收藏  举报