共计 3388 个字符,预计需要花费 9 分钟才能阅读完成。
rsync 介绍
rsync 全称 remote sync,是一种更高效、可以本地或远程同步的命令,之所以高效是因为 rsync 会对需要同步的源和目的进度行对比,只同步有改变的部分,所以比 scp 命令更高效,但是rsync 本身是一种非加密的传输,可以借助 - e 选项来设置具备加密功能的承载工具进行加密传输
rsync 的工作模式
rsync 有四种工作模式分为:
1、shell 模式,也称作本地模式
2、远程 shell 模式,此时可以利用 ssh 协议承载其数据传输过程
3、列表模式,其工作方式与 ls 相似,仅列出源的内容:-nv
4、服务器模式,此时,rsync 可以工作在守护进程,能够接收客户端的数据请求;在使用时,可以在客户端使用 rsync 命令把文件发送到守护进程,也可以像服务器请求获取文件
rsync 命令选项
-n:测试,在不确定命令是否能按照意愿执行时,务必要实现测试
-v:详细输出模式,–verbose
-q:–quiet,静默模式
-c:–checksum,开启校验功能,强行对文件传输进行校验
-r:–recursive,递归复制
-a: –archives. 归档,保留文件的原有属性相当于 rlptgoD 的选项组合-p:–perms 保留文件的权限
-t: –times 保留文件的时间戳
-l:–links 保留文件的符号链接
-g:–group 保留文件的属组
-o:–owner 保留文件的属主
-D:–devices 保留设备文件
-e ssh:表示使用 ssh 协议作为继承
-z:对文件压缩后传输
–progress:显示进度条
根据同步的方向不同,分为推、拉两种方式,其命令用法为:
此处需要注意的地方有两点:
1、如果使用命令时只指定源而不指定目标,仅会将源以列表的形式显示而不同步
2、rsync 命令使用中,如果 源参数的末尾有斜线,只会复制指定目录的内容 ,而不复制目录本身, 没有斜线,则会复制目录本身,包括目录
rsync 生产环境使用方式
在中小企业的生产环境中经常有这么一种需求,A 服务器上的某些重要文件需要每天备份到 B 服务器上,此时就可以使用 rsync+crontab 来进行备份,其步骤为:
1、配置 rsync 服务器端
yum -y install xinetd rsync 是位于 xinetd 守护进程中
2、vim /etc/rsyncd.conf 创建 rsync 的配置文件
3、配置文件分为 全局配置段 和模块配置段,注意配置文件内的设置项使用格式
#Global Parameters
pid file = /var/run/rsyncd.pid 设置 rsync 运行时 pid 文件的位置
log file = /var/log/rsyncd.log 设置 rsync 运行时 log 文件的位置
lock file = /var/run/rsyncd.lock 设置 rsync 运行时 lock 文件的位置
uid = nobody
gid = nobody
uid 和 gid 这两个选项的作用是 指定在运行 rsync 时以哪个用户来替代 root,nobody 是系统默认值,不存在于系统用户中,如果此处设置为 nobody,则在模块配置段依然需要指定一个系统用户来运行 rsync
ignore errors = yes 是否忽略错误
list = no 是否允许列出名单
#Module Parameters
[module_name] 服务器模式下rsync 目的名称(DES)使用的是模块名称
path = /path/to/some_dir
uid = root
gid = root
如果全局配置段的 uid 和 gid 设置时不是 nobody 而是使用的一个系统账户,在模块配置段这两个选项可以不添加这两个选项
max connections = 5 最大连接用户数
timeout = 300 超时时间
read only = false 只读,适用于 Client 端 pull 场景
write only = false 只写,适用于 Client 端 push 场景
auth users = username 允许链接该模块的用户,该用户是虚拟用户 可以不存在
secrets file = /etc/rsync.passwd 用户密码(auth user)的存放文件
strict modes = yes 检查 secrets file 文件的权限是否满足要求
use chroot = no 是否禁锢用户家目录
max connections = 4 最大连接数
hosts allow = ipaddress/netmask 白名单
hosts deny = ipaddress/netmask 黑名单
此处需要注意:
(1)默认规则为允许访问,二者都不出现时
(2)只出现 hosts allow:定义白名单;但没有被匹配到的由默认规则处理,即为允许
(3)只出现 hosts deny:定义黑名单;出现在名单中的都被拒绝
(4)二者同时出现,先检查 hosts allow, 如果匹配就 allow,否则,检查 hosts deny 如果匹配则拒绝,如二者均无匹配,则使用默认的,即允许
4、为 auth user 用户创建 secrets file 文件存放账号和密码,
vim /etc/rsync.passwd 账号可以不存在,密码可以任意设置
5、因为开启了 strict modes = yes,所以要修改 /etc/rsync.passwd 文件权限
chmod 600 /etc/rsync.pass
6、将 rsync 服务设为开机启动并启动该服务,rsync 侦听在 873 端口
chkconfig rsync on
service xinetd start
7、使用命令测试是否可以正常同步
testuser 与 password 就是步骤 4 中定义在 rsync.passwd 文件中的用户和密码,test 目标则是 Module Parameters 中定义的模块名称
使用 password-file 文件登录
大部分的备份我们需要结合 crontab 来执行自动备份,此时就需要 rsync 在使用时结合 password-file 文件来免密码登录,操作步骤为:
1、vim /etc/rsync.passwd 创建存放密码的 password-file 文件来,此处注意的是该文件内容不同于服务器端,仅保存使用 rsync 命令时的用户的密码
2、安全起见还是需要修改 /etc/rsync.passwd 文件权限
chmod 600 /etc/rsync.pass
3、再次进行测试,使用 –password-file 指明存放密码的文件位置,步骤 1 中的密码此时就是 testuser 的密码,该用户名和密码需要与服务器端 /etc/rsync.passwd 文件中的用户名和密码匹配
4、使用 crontab -e 命令设置周期性任务,周期性任务保存在 /var/spool/cron/user_name 文件中,或者使用 crontab - l 可以查看
如果没有 –delete 选项,源服务器上已删除的部分再执行下一次周期任务时依然会继续保留在目标服务器上,目标服务器只同步源服务器新增的部分
增加 –delete 选项会将源和目标服务器上有差异的部分删除掉
RSync 实现文件备份同步详解 http://www.linuxidc.com/Linux/2014-09/106967.htm
利用 inotifywait 监控主机文件和目录 http://www.linuxidc.com/Linux/2013-03/81075.htm
利用 inotify+rsync 实现 Linux 文件批量更新 http://www.linuxidc.com/Linux/2012-01/52132.htm
inotify-tools+rsync 实时同步文件安装和配置 http://www.linuxidc.com/Linux/2012-06/63624.htm
rsync 同步完整配置 http://www.linuxidc.com/Linux/2013-06/85781.htm
CentOS 6.5 下 Rsync 远程同步 http://www.linuxidc.com/Linux/2014-05/101084.htm
Linux 文件夹对比并提取的差分文件技巧 -rsync 的妙用 http://www.linuxidc.com/Linux/2016-02/128307.htm
Rsync 的详细介绍:请点这里
Rsync 的下载地址:请点这里
本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-10/136143.htm