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场景