使用 Rsync 同步 Linux 文件

当你想在两台 Linux 之间同步文件时,其实有一个程序很适合你,那就是 Rsync


首先需要安装 Rsync,服务端和客户端都要安装

yum -y install rsync

然后我们需要编辑配置文件,在此直接放置一份模板

vim /etc/rsyncd.conf

#设置服务器信息提示文件名称,在该文件中编写提示信息
motd file = /etc/rsyncd.motd
#开启 Rsync 数据传输日志功能
transfer logging = yes
#设置日志文件名称,可以通过 log format 参数设置日志格式
log file =/var/log/rsyncd.log
#设置 Rsync 进程号保存文件名称
pid file =/var/run/rsyncd.pid
#设置锁文件名称
lock file =/var/run/rsync.lock
#设置服务器监听的端口号,默认为 873
port = 873
#设置服务器所监听网卡接口的 IP 地址
address = 172.16.1.100
#设置进行数据传输时所使用的账户名称或 ID 号,默认使用 nobody
uid = nobody
#设置进行数据传输时所使用的组名称或 GID 号,默认使用 nobody
gid = nobody
#设置 user chroot 为 yes 后,rsync 会首先进行 chroot 设置,将根映射到 path 参数路径下,对客户
#端而言,系统的根就是 path 参数所指定的路径。但这样做需要 root 权限,并且在同步符号
#连接资料时仅会同步名称,而内容将不会同步。
use chroot = no
#是否允许客户端上传数据,这里设置为只读。
read only = yes
#设置并发连接数,0 代表无限制。超出并发数后,如果依然有客户端连接请求,则将会收
#到稍后重试的提示消息
max connections = 10
#模块,Rsync 通过模块定义同步的目录,模块以 [name] 的形式定义,这与 Samba 定义共
#享目录是一样的效果。在 Rsync 中也可以定义多个模块
[syncproject]
#comment 定义注释说明字串
comment = Sync File
#同步目录的真实路径通过 path 指定
path = /syncproject
#忽略一些 IO 错误
ignore errors
#exclude 可以指定例外的目录,即将 common 目录下的某个目录设置为不同步数据
#exclude = nosync/
#设置允许连接服务器的账户,账户可以是系统中不存在的用户
auth users = syncuser
#设置密码验证文件名称,注意该文件的权限要求为只读,建议权限为 600,仅在设置 auth users
#参数后有效
secrets file = /etc/rsyncd.secrets
#设置允许哪些主机可以同步数据,可以是单个 IP,也可以是网段,多个 IP 与网段之间使用空格分隔
hosts allow=172.16.1.200/255.255.255.255
#设置拒绝所有(除 hosts allow 定义的主机外)
hosts deny=*
#客户端请求显示模块列表时,本模块名称是否显示,默认为 true
list= false

将 Rsync 使用的账户和密码写入到文件,并赋予 600 权限保证其他人不可读

echo "syncuser:password" > /etc/rsyncd.secrets  && chmod 600 /etc/rsyncd.secrets

创建一个 Rsync 的 MOTD 文件

echo “welcome to access” >/etc/rsyncd.motd

防火墙开启端口允许访问(默认端口 873)

firewall-cmd --add-service=rsyncd --permanent

客户端可以直接使用命令同步

rsync -vzrtopg --progress [email protected]::syncproject /syncproject

参数主要是:详细输出,递归子文件夹,压缩传输,同步时间,权限,所属组,所属用户


参考 https://www.linuxidc.com/Linux/2017-06/144757.htm

参考 http://man.linuxde.net/rsync

点赞