Rsync配置参数详解-什么是Rsync
Rsync(remote synchronize)是⼀个远程数据同步⼯具,可通过LAN/WAN快速同步多台主机间的⽂件。Rsync使⽤所谓的“Rsync算法”来使本地和远 程两个主机之间的⽂件达到同步,这个算法只传送两个⽂件的不同部分,⽽不是每次都整份传送,因此速度相当快。
  Rsync本来是⽤于替代rcp的⼀个⼯具,⽬前由维护,所以f⽂件的格式类似于samba 的主配置⽂件。Rsync可以通过rsh或ssh使⽤,也能以daemon模式去运⾏,在以daemon⽅式运⾏时Rsync server会打开⼀个873端⼝,等待客户端去连接。连接时,Rsync server会检查⼝令是否相符,若通过⼝令查核,则可以开始进⾏⽂件传输。第⼀次连通完成时,会把整份⽂件传输⼀次,以后则就只需进⾏增量备份。
  Rsync⽀持⼤多数的类Unix系统,⽆论是Linux、Solaris还是BSD上都经过了良好的测试。此外,它在windows平台下也 有相应的版本,如cwRsync和Sync2NAS等⼯具。
  Rsync的基本特点如下:
  1.可以镜像保存整个⽬录树和⽂件系统;
  2.可以很容易做到保持原来⽂件的权限、时间、软硬链接等;
  3.⽆须特殊权限即可安装;
  4.优化的流程,⽂件传输效率⾼;
  5.可以使⽤rsh、ssh等⽅式来传输⽂件,当然也可以通过直接的socket连接;
  6.⽀持匿名传输。
Rsync只所以同步⽂件的速度相当快,是因为“Rsync同步算法”能在很短的时间内计算出需要备份的数据,关于Rsync的同步算法描述如下: 假定在1号和2号两台计算机之间同步相似的⽂件A与B,其中1号对⽂件A拥有访问权,2号对⽂件B拥有访问权。并且假定主机1号与2号之间的⽹络带宽很 ⼩。那么rsync算法将通过下⾯的五个步骤来完成:
1、2号将⽂件B分割成⼀组不重叠的固定⼤⼩为S字节的数据块,最后⼀块可能会⽐S ⼩。
2、2号对每⼀个分割好的数据块执⾏两种校验:⼀种是32位的滚动弱校验,另⼀种是128位的MD4强校验。
3、2号将这些校验结果发给1号。
4、1号通过搜索⽂件A的所有⼤⼩为S的数据块(偏移量可以任选,不⼀定⾮要是S的倍数),来寻与⽂件B的某⼀块有着相同的弱校验码和强校验码的 数据块。这项⼯作可以借助滚动校验的特性很快完成。
5、1号发给2号⼀串指令来⽣成⽂件A在2号上的备份。这⾥的每⼀条指令要么是对⽂件B经拥有某⼀个数据块⽽不须重传的证明,要么是⼀个数据块,这 个数据块肯定是没有与⽂件B的任何⼀个数据块匹配上的。
在⽂件中[module]之前的所有参数都是全局参数,当然也可以在全局参数部分定义模块参数,这时候该参数的值就是所有模块的默认值。
port
指定后台程序使⽤的端⼝号,默认为873。
motd file
“motd file”参数⽤来指定⼀个消息⽂件,当客户连接服务器时该⽂件的内容显⽰给客户,默认是没有motd⽂件的。
log file
“log file”指定rsync的⽇志⽂件,⽽不将⽇志发送给syslog。⽐如可指定为“/var/log/rsyncd.log”。
pid file
指定rsync的pid⽂件,通常指定为“/var/run/rsyncd.pid”。
syslog facility
指定rsync发送⽇志消息给syslog时的消息级别,常见的消息级别是:uth, authpriv, cron, daemon, ftp, kern, lpr, mail, news, security, sys-log, user, uucp, local0, local1, local2, local3,local4, local5, local6和local7。默认值是daemon。
主要是定义服务器哪个⽬录要被同步。其格式必须为“[module]”形式,这个名字就是在rsync 客户端看到的名字,其实有点象Samba服务器提供的共享名。⽽服务器真正同步的数据是通过 path 来指定的。我们可以根据⾃⼰的需要,来指定多个模块,模块中可以定义以下参数:
comment
给模块指定⼀个描述,该描述连同模块名在客户连接得到模块列表时显⽰给客户。默认没有描述定义。
path
指定该模块的供备份的⽬录树路径,该参数是必须指定的。
use chroot
如果”use chroot”指定为true,那么rsync在传输⽂件以前⾸先chroot到path参数所指定的⽬录下。这样做的原因是实现额外的安全防护,但是缺 点是需要以roots权限,并且不能备份指向外部的符号连接所指向的⽬录⽂件。默认情况下chroot值为true。
uid
该选项指定当该模块传输⽂件时守护进程应该具有的uid,配合gid选项使⽤可以确定哪些可以访问怎么样的⽂件权限,默认值
是”nobody”。
gid
该选项指定当该模块传输⽂件时守护进程应该具有的gid。默认值为”nobody”。
max connections
指定该模块的最⼤并发连接数量以保护服务器,超过限制的连接请求将被告知随后再试。默认值是0,也就是没有限制。
list
该选项设定当客户请求可以使⽤的模块列表时,该模块是否应该被列出。如果设置该选项为false,可以创建隐藏的模块。默认值是true。read only
该选项设定是否允许客户上载⽂件。如果为true那么任何上载请求都会失败,如果为false并且服务器⽬录读写权限允许那么上载是允许的。默认值 为true。
update是什么
exclude
⽤来指定多个由空格隔开的多个⽂件或⽬录(相对路径),并将其添加到exclude列表中。这等同于在客户端命令中使⽤–exclude来指定模式,⼀个模块只能指定⼀个exclude选项。但是需要注意的⼀点是该选项有⼀定的安全性问题,客户很有可能绕过exclude列表,如果希望确保特定的 ⽂件不能被访问,那就最好结合uid/gid选项⼀起使⽤。
指定⼀个包含exclude模式的定义的⽂件名,服务器从该⽂件中读取exclude列表定义。
include
⽤来指定不排除符合要求的⽂件或⽬录。这等同于在客户端命令中使⽤–include来指定模式,结合include和exclude可以定义复杂的exclude/include规则 。
include from
指定⼀个包含include模式的定义的⽂件名,服务器从该⽂件中读取include列表定义。
auth users
该选项指定由空格或逗号分隔的⽤户名列表,只有这些⽤户才允许连接该模块。这⾥的⽤户和系统⽤户没有任何关系。如果”auth
users”被设置,那么客户端发出对该模块的连接请求以后会被rsync请求challenged进⾏验证⾝份这⾥使⽤的 challenge/response认证协议。⽤户的名和密码以明⽂⽅式存放在”secrets file”选项指定的⽂件中。默认情况下⽆需密码就可以连接模块(也就是匿名⽅式)。
secrets file
该选项指定⼀个包含定义⽤户名:密码对的⽂件。只有在”auth users”被定义时,该⽂件才有作⽤。⽂件每⾏包含⼀个
username:passwd对。⼀般来说密码最好不要超过8个字符。没有默认的 secures file名,需要限式指定⼀个(例
如:/etc/rsyncd.passwd)。注意:该⽂件的权限⼀定要是600,否则客户端将不能连接服务器。
strict modes
该选项指定是否监测密码⽂件的权限,如果该选项值为true那么密码⽂件只能被rsync服务器运⾏⾝份的⽤户访问,其他任何⽤户不可以访问该⽂ 件。默认值为true。
hosts allow
该选项指定哪些IP的客户允许连接该模块。客户模式定义可以是以下形式: 单个IP地址,例如:192.167.0.1
整个⽹段,例如:192.168.0.0/24,也可以是192.168.0.0/255.255.255.0 多个IP或⽹段需要⽤空格隔开,“*”则表⽰所有,默认是允许所有主机连接。
hosts deny
指定不允许连接rsync服务器的机器,可以使⽤hosts allow的定义⽅式来进⾏定义。默认是没有hosts deny定义。
ignore errors
指定rsyncd在判断是否运⾏传输时的删除操作时忽略server上的IO错误,⼀般来说rsync在出现IO错误时将将跳过–delete操 作,以防⽌因为暂时的资源不⾜或其它IO错误导致的严重问题。
ignore nonreadable
指定rysnc服务器完全忽略那些⽤户没有访问权限的⽂件。这对于在需要备份的⽬录中有些⽂件是不应该被备份者得到的情况是有意义的。
lock file
指定⽀持max connections参数的锁⽂件,默认值是/var/run/rsyncd.lock。
使rsync服务器使⽤ftp格式的⽂件来记录下载和上载操作在⾃⼰单独的⽇志中。
log format
通过该选项⽤户在使⽤transfer logging可以⾃⼰定制⽇志⽂件的字段。其格式是⼀个包含格式定义符的字符串,可以使⽤的格式定义符如下所⽰:
%h 远程主机名
%a 远程IP地址
%l ⽂件长度字符数
%p 该次rsync会话的进程id
%o 操作类型:"send"或"recv"
%f ⽂件名
%P 模块路径
%m 模块名
%t 当前时间
%u 认证的⽤户名(匿名时是null)
%b 实际传输的字节数
%c 当发送⽂件时,该字段记录该⽂件的校验码
默认log格式为:”%o %h [%a] %m (%u) %f %l”,⼀般来说,在每⾏的头上会添加”%t [%p] “。在源代码中同时发布有⼀个叫rsyncstats的perl脚本程序来统计这种格式的⽇志⽂件。
timeout
通过该选项可以覆盖客户指定的IP超时时间。通过该选项可以确保rsync服务器不会永远等待⼀个崩溃的客户端。超时单位为秒钟,0表⽰没有超时定 义,这也是默认值。对于匿名rsync服务器来说,⼀个理想的数字是600。
refuse options
通过该选项可以定义⼀些不允许客户对该模块使⽤的命令参数列表。这⾥必须使⽤命令全名,⽽不能是简称。但发⽣拒绝某个命令的情况时服务器将报告错误 信息然后退出。如果要防⽌使⽤压缩,应该是:”dont compress = *”。
dont compress
⽤来指定那些不进⾏压缩处理再传输的⽂件,默认值是*.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz
在对rsync服务器配置结束以后,下⼀步就需要在客户端发出rsync命令来实现将服务器端的⽂件备份到客户端来。rsync是⼀个功能⾮常强⼤ 的⼯具,其命令也有很多功能特⾊选项,我们下⾯就对它的选项⼀⼀进⾏分析说明。 Rsync的命令格式可以为以下六种:
  rsync [OPTION]... SRC DEST
  rsync [OPTION]... SRC [USER@]HOST:DEST
  rsync [OPTION]... [USER@]HOST:SRC DEST
  rsync [OPTION]... [USER@]HOST::SRC DEST
  rsync [OPTION]... SRC [USER@]HOST::DEST
  rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]
  对应于以上六种命令格式,rsync有六种不同的⼯作模式:
  1)拷贝本地⽂件。当SRC和DES路径信息都不包含有单个冒号”:“分隔符时就启动这种⼯作模式。如:rsync -a /data /backup
  2)使⽤⼀个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号”:“分隔符时启动 该模式。如:rsync -avz *.c foo:src
  3)使⽤⼀个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号”:“分隔符时启动 该模式。如:rsync -avz foo:src/bar /data
  4)从远程rsync服务器中拷贝⽂件到本地机。当SRC路径信息包含”::“分隔符时启动该模式。如:rsync -av
root@172.16.78.192::www /databack
  5)从本地机器拷贝⽂件到远程rsync服务器中。当DST路径信息包含”::“分隔符时启动该模式。如:rsync -av /databack root@172.16.78.192::www
  6)列远程机的⽂件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。如:rsync -v
rsync://172.16.78.192/www
rsync参数的具体解释如下:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。