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。