8.1. rsync简介及入门
- Date:
小技巧
关于同步文件这个软件,也可以通过脚本和文件服务器(ftp/nfs等)来实现。
8.1.1. rsync简介
- 参考:
8.1.1.1. rsync服务使用的原因、场景、方案
- rsync和nfs比较:
- nfs:
nfs是网络共享文件系统。把远程的服务器存储文件挂载到本地,当作本地的文件系统使用。用来存储数据
nfs一般都需要做备份。nfs中数据一般越来越多,所以一般增量备份不会很频繁。如果nfs挂了,使用备份数据会有一个时间差中间的数据没有。
- rsync
提供时时的增量同步。可以解决增量备份耗费cpu的问题,又解决了增量备份恢复数据有一段时间没有备份数据的问题。
- rsync场景:
一般rsync用来做数据备份。
- 方案:
- 一般rsync不会单独使用一般的使用方法有两种:
- rsync结合inotify
inotify解决的问题:rsync不能时时同步,而且如果文件数量达到百万千万时,文件比较就比较耗时且消耗资源。
rsync结合sersync
原理是用inotify/sersync监控数据变化,如果有变化,用rsync来做数据传输。
- 增量备份一般方案:
定时任务crontab结合rsync
8.1.1.2. rsync服务端口
rsync默认监听TCP端口 873
8.1.1.3. rsync历史
rsync首度发布于1996年6月19日。原始作者为安德鲁·垂鸠(Andrew Tridgell)与保罗·麦可拉斯(Paul Mackerras)。
CentOS5一般是rsync2.X版本
CentOS6一般是rsync3.X版本
- 版本比较:
2.X远程同步是比较完以后再传输数据 3.X远程同步时比较的同时传输已经比较的数据。
8.1.1.4. rsync工作原理
rsync是cs架构的,也就是必须有客户端和服务端的,您必须通过以守护进程模式运行rsync(命令行中的”rsync –daemon”)并设置一个简短易用的配置文件(/etc/rsyncd.conf)来将一台或另一台机器设置为”rsync服务器” )。
任何安装了rsync的机器都可以与运行rsync守护进程的机器同步。您可以使用它来进行备份,镜像文件系统,分发文件或任意数量的类似操作。通过使用只传输文件之间的差异(类似于补丁文件)的”rsync算法”,然后压缩它们 - 您将得到一个非常高效的系统。
Rsync很容易设置。而不是有一个脚本的FTP会话,或其他形式的文件传输脚本 rsync 只复制文件的差异,实际上差异就是已经改变的文件,如果你想要的安全可以通过ssh。但它的意思是:
- 区别:
只传输实际更改的文件,而不是整个文件。这使得更新速度更快,尤其是在像调制解调器这样的慢速链路上。即使只更改了一个字节,FTP也会传输整个文件。
- 压缩:
差异的细小部分随即进行压缩,进一步节省文件传输时间并减少网络负载。
- 安全外壳:
你的安全意识就是这样,你应该都使用它。来自rsync的流通过ssh协议来加密会话,而不是rsh,这也是一个选项。
- 作为备份/镜像工具,rsync是相当通用的,提供了超出上述的许多功能。以下是一些rsync的其他主要功能:
支持复制链接,设备,所有者,组和权限
排除和排除类似于GNU tar的选项
CVS排除模式,用于忽略CVS将忽略的相同文件
不需要root权限
管理文件传输以最小化延迟成本
支持匿名或认证的rsync服务器(理想的镜像)
8.1.1.5. rsync工作方式
- rsync传输数据一般有三种方式:
单个主机本地多个目录之间使用(功能类似cp)
借助ssh、rcp等通道来传输数据(功能类似rcp)
以守护进程(socket)方式传输数据(rsync自身提供的功能,比较重要)
8.1.2. rsync入门
8.1.2.1. rsyncd的主要参数设置
我们使用一天服务器指定为rsync的服务器,需要运行rsync指定–daemon以守护进程运行并且需要给它提供一个配置文件,这个配置就是、/etc/rsyncd.conf文件。
主要的全局的参数
- motdfile
这个是欢迎提示信息,指定的是文件名,把内容写到这个文件里面
- pidfile
守护进程的运行pid文件
- port
运行端口,默认是873
- address
默认是监听在所有ip上的,有时候我们只需要监听在内部ip上就需要改变这个值
主要的模块参数
- comment
注释信息
- path
需要同步的路径,这个参数必须指定的。
- usechroot
如果为true,rsync守护进程将在与客户端开始文件传输的时候切换到指定路径运行,提供更高的安全性。
- charset
存储文件名的字符集
- maxconnections
指定最大连接数
- logfile
日志文件路径
- syslogfacility
运行你指定系统日志工具名称的,默认是daemon,你可以设置其他值,比如auth,authpriv,cron,daemon,ftp,
kern,lpr,mail,news,security,syslog,user,uucp,local0-7. maxverbosity
这个参数是控制日志级别的,数值范围1-4,默认1,越大日志信息越丰富。同步文件夹大的时候,建议设置默认值1,避免日志文件过大。
- lockfile
锁文件,默认是/var/run/rsyncd.lock.
- readonly
这个是只读的,默认都是只读的。
- writeonly
这个参数控制客户端是否可以下载的,默认是可以下载的,不建议修改。
- list
此参数确定当客户要求提供可用模块列表时,是否列出此模块
- uid
守护进程以那个用户身份运行
- gid
守护进程以那个用户组运行
- exclude
该参数采用空格分隔的守护进程排除模式列表
- include
该参数采用空格分隔的守护进程包含模式列表
- excludefrom
类似exclude,不过需要写到文件里面,每行一个,这个参数写文件名
- includefrom
类似include,不过需要写到文件里面,每行一个,这个参数写文件名
- incomingchmod
对进入文件chmod修改权限的
- outgoingchmod
对出去的文件chmod修改权限的。
- authusers
认证的用户
- secretsfile
密码文件,配合authusers使用,格式为”username:password”或者”@groupname:password”
- strictmodes
是否检查密码文件的权限,默认值true,适应windows操作系统运行rsync
- hostsallow
- 运行的主机,格式直接也是比较多的。常用格式如下
-192.168.2.2 -192.168.2.2/24 -192.168.2.2/255.255.255.0 - 主机名
- hostsdeny
不允许的主机
- ignoreerrors
忽略i/o错误
- ignorenonoreadable
这告诉rsync守护程序完全忽略用户不可读的文件
- transferlogging
这个参数使得每个文件的日志记录下载和上传的格式有点类似于ftp守护进程所使用的格式
- logformat
日志格式的,特别多,参考https://rsync.samba.org/ftp/rsync/rsyncd.conf.html
- timeout
此参数允许您覆盖客户端选择此模块的I/O超时。使用这个参数你可以确保rsync不会永远等待死客户端,默认600s
- dontcompress
不压缩
8.1.2.2. 样例的配置文件
1uid = root
2gid = root
3use chroot = yes
4max connections = 4
5syslog facility = local5
6pid file = /var/run/rsyncd.pid
7
8[ftp]
9 path = /var/ftp/pub
10 comment = whole ftp area (approx 6.1 GB)
11
12[sambaftp]
13 path = /var/ftp/./pub/samba
14 comment = Samba ftp area (approx 300 MB)
15
16[rsyncftp]
17 path = /var/ftp/./pub/rsync
18 comment = rsync ftp area (approx 6 MB)
19
20[sambawww]
21 path = /public_html/samba
22 comment = Samba WWW pages (approx 240 MB)
23
24[cvs]
25 path = /data/cvs
26 comment = CVS repository (requires authentication)
27 auth users = tridge, susan
28 secrets file = /etc/rsyncd.secrets
密码文件样例:
1tridge:mypass
2susan:herpass
注意
密码文件格式为username:password,且这个用户不必要在系统存在,密码文件权限为600。