Rsync(remote sync)是UNIX及类UNIX平台下一款神奇的数据镜像备份软件,它不像FTP或其他文件传输服务那样需要进行全备份,Rsync可以根据数据的变化进行差异备份,从而减少数据流量,提高工作效率。可以使用它进行本地数据或远程数据的复制,Rsync可以使用SSH安全隧道进行加密数据传输。Rsync服务器端定义源数据,Rsync客户端仅在源数据发生改变后才会从服务器上实际复制数据至本地,如果源数据在服务器端被删除,则客户端数据也会被删除,以确保主机之间的数据是同步的。Rsync使用TCP 873端口。
# yum安装
yum install rsync
# 启动Rsync
systemctl start rsyncd
# 允许开机自启动
systemctl enable rsyncd
# 检查是否已经成功启动
netstat -lnp |grep 873
因为Rsync是Andrew Tridgell(Samba的作者)与Paul Mackerras合作开发的软件,所以Rsync配置文件与Samba配置文件比较相似。Rsync主要分为三个配置文件,分别是:rsyncd.conf(主配置文件)、rsyncd.secrets(密码文件)和rsyncd.motd(服务器信息文件)。
下面的案例演示了如何共享/common目录,为此,我们需要创建/common目录,并复制一些测试文件存放在该目录下。本例需要手动创建配置文件
mkdir /common
cp /etc/init.d/* /common/
#/etc/rsyncd.conf
#设置服务器信息提示文件名称,在该文件中编写提示信息
motd file=/etc/rsyncd.motd
#开启Rsync数据传输日志功能
transfer logging=yes
#设置日志文件名称,可以通过1og format参数设置日志格式
log file=/var/1og/rsyncd.1og
#设置Rsync进程号保存文件名称
pid file=/var/run/rsyncd.pid
#设置锁文件名称
lock file=/var/run/rsync.lock
#设置服务器监听的端口号,默认为873
port=873
#设置服务器所监听网卡接口的IP地址,这里服务器IP地址为192.168.5.5
address=192.168.5.5
#设置进行数据传输时所使用的账户名称或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中也可以定义多个模块
[common]
#comment定义注释说明字串
comment=Web content
#同步目录的真实路径通过path指定
path=/common
#忽略一些IO错误
ignore errors
#exclude可以指定例外的目录,即将common目录下的某个目录设置为不同步数据
#exclude=test/
#设置允许连接服务器的账户,账户可以是系统中不存在的用户
auth users=zhangsan,wangwu
#设置密码验证文件名称,注意该文件的权限要求为只读,建议权限为600,仅在设置auth users参数后有效
secrets file=/etc/rsyncd.secrets
#设置允许哪些主机可以同步数据,可以是单个IP,也可以是网段,多个IP与网段之间使用空格分隔
hosts allow=192.168.5.0/255.255.255.0
#设置拒绝所有(除hosts allow定义的主机外)
hosts deny=*
#客户端请求显示模块列表时,本模块名称是否显示,默认为true
list=false
接下来,通过echo的方式创建密码文件/etc/rsyncd.secrets,在该文件中输入两个账户:zhangsan账户的密码是123,wangwu账户的密码是456。需要注意的是,密码文件不可以对所有的人开放可读权限,为了安全,建议设置权限为600。创建服务器提示信息文件并向该文件中导入欢迎词。
echo "zhangsan:123" > /etc/rsyncd.secrets
echo "wangwu:456" >> /etc/rsyncd.secrets
chmod 600 /etc/rsyncd.secrets
echo "Welcome to access" > /etc/rsyncd.motd
systemctl restart rsyncd
客户端同步数据
在客户端主机中同样是使用rsync命令进行初始化数据传输,使用同样的程序。
yum install rsync
rsync -vzrtopg --progress zhangsan@192.168.5.12::common /test
rsync命令的描述和用法如下。
描述:一个快速、多功能的远程(或本地)数据复制工具。
用法:下表较全面地介绍了rsync的语法格式,SRC表示源路径,DEST表示目标路径。
本地复制 | |
rsync [选项] SRC... [DEST] |
|
通过远程shell复制 | |
下载数据 |
rsync [选项] [USER@]HOST:SRC…[DEST] |
上传数据 |
rsync [选项] SRC... [USER@]HOST:DEST |
通过rsync远程复制 | |
下载数据 |
Rsync [选项] [USER@]HOST::SRC…[DEST] |
Rsync [选项]rsync://[USER@]HOST[:PORT]/SRC…[DEST] |
|
上传数据 |
Rsync [选项]SRC…[USER@]HOST::DEST |
Rsync [选项]SRC...rsync://[USER@]HOST[:PORT]/DEST |
选项:-v,--verbose 显示详细信息
-q,--quiet 静默模式,无错误信息
-a,--archive 归档模式,主要保留文件属性,等同于-rlptgoD
-r,--recursive 递归
-b,--backup 如果目标路径已经存在同名文件,将旧的文件重命名为~filename,可以使用--suffix指定不同的备份前缀。
--back-dir 将备份文件保存至指定目录
--suffix 指定备份文件前缀
-u,--update 如果目标地址中的文件比将要下载的文件新,则不执行同步,也就是说,不会用旧的文件覆盖新的文件。
-l,--links 保留符号链接
-p,--perms 保留文件权限属性
-H,--hard-links 保留硬链接
-A,--acls 保留ACL权限
-X,--xattrs 保留文件附加属性
-o,--owner 保留文件所有者属性
-g,--group 保留文件所属组属性
--devices 保留设备文件
--specials 保留特殊文件
-D 等同于-devices-specials
-t 保留修改时间属性
-W,--whole-file 不做增量检查,直接复制全部文件
-e,--rsh=COMMAND 指定远程shell
--existing 仅同步目标路径中已经有的文件,不下载源路径下新的文件
--delete 删除那些仅在目标路径中存在的文件(源路径中不存在)
-z,--compress 传输过程中对数据进行压缩
--include=PATTERN 匹配不排除的文件
--exclude=PATTERN 匹配需要排除的文件
--progress 显示数据传输的进度信息
--partial 保留因故障未传输完成的文件
-P 等同于--progress-partial
--password-file=FILE 指定密码文件,将密码写入文件,实现非交互式数据同步
--list-only 仅列出服务器模块列表,需要rsync 服务器设置list=true
原文:https://www.cnblogs.com/opsprobe/p/11809399.html