rsync远程同步

一 关于rsync

·rsync远程同步

rsync(Remote Sync) 是一个Unix/linux下的文件同步和传输工具。Rsync通过“rsync算法”提供了一个客户机和远程文件服务器的文件同步的快速技巧。每次只传送两个文件的不同部份(即支持增量备份),而不是每次都整份传送

·rsync的特点

能更新整个目录树和文件系统;

有选择性的保持符号链链、硬链接、文件属性、权限、设备以及时间等;

传输前执行压缩,因此特别适用于异地备份、镜像服务器等应用。

能用rsh、ssh 或直接端口做为传输端口;

支持匿名rsync 同步文件,是理想的镜像工具;

Rsync可以通过rsh或ssh使用,也能以daemon模式去运行,在以daemon形式运行时Rsync server会打开一个873端口,等待客户端去联接

官方网站:

·rsync的工作流程

在远程同步任务中,负责发起rsync同步操作的客户机称为发起端,而负责响应来自飞机的rsync同步操作的服务器称为备份源。在下行同步(下载)中,备份源负责提供文档的原始位置,发起端应对该位置具有读取权限;在上行同步(上传)中,备份源负责提供文档的目标位置,发起端应对该位置具有写入权限。如下图所示:

linux同步服务器时间_同步时间服务器 linux_linux同步windows时间

·rsync同步源

使用rsync同步工具时,备份源既可以是SSH服务器,也可以是以服务器模式运行的rsync程序(本文以RHEL6系统中的rsync-3.0.6-5为例讲解)

指备份操作的远程服务器,也称为备份源

主要包括两种:rsync源、SSH源

RHEL6系统中的rsync默认已安装

·rsync的基本用法

格式:rsync 【选项】 源文件 目标文件

常见的选项:

-a,--archive 归档模式,表示以递归的形式传输文件,并且保持文件属性,等同于-rlptgoD

-r,–recursive 对子目录以递归模式处理

-l,--links 表示拷贝链接文件

-p , --perms 表示保持文件原有权限

-t , --times 表示保持文件原有时间

-g , --group 表示保持文件原有属用户组

-o , --owner 表示保持文件原有属主

-D , --devices 表示块设备文件信息

-z , --compress 表示压缩传输

-H 表示硬联接文件

-A 保留ACL属性信息

-P 显示传输进度

-u, --update 仅仅进行更新,也就是跳过所有早已存在于目标位置,并且文件时间晚于要备份的文件。(不覆盖更新的文件)

--port=PORT 指定其他的rsync服务端口

--delete 删除这些目标位置有而原始位置没有的文件

--password-file=FILE 从FILE中得到密码

--bwlimit=KBPS 限制I/O带宽,KBytes /second

--filter “- 文件名”需要过滤的文件

--exclude= :需要过滤的文件

-v 显示同步过程的详尽信息

二 SSH备份源与发起端的配置

·配置SSH备份源

使用SSH合同的用处是才能基于更安全的远程联接,增强备份的保密性。这种形式的备份源最容易配置,只要确认源文件夹的位置,并打算一个备份操作用户即可

以服务A(备份源)为例,若要将网站目录/var/www/html作为备份源,允许用户rget做下行备份,用户rput做上行备份

1在备份源服务器(IP192.168.1.1)上新建备份用户rget、rput,分别拿来下载、上传

同步时间服务器 linux_linux同步windows时间_linux同步服务器时间

2确认sshd服务正常运行,且准许用户rget、rput能访问ssh服务器

在/etc/ssh/sshd_config文件中添如下配置项,只容许rget和rput能远程登陆ssh服务器。并重启sshd服务,确保更改生效。

linux同步windows时间_同步时间服务器 linux_linux同步服务器时间

3调整备份源所提供文档所在目录的权限(如/var/www/html目录),使rget用户有权读取、rput用户有权写入

linux系统中,正常创建的目录权限为755,文件权限为644,因此对于rget用户来说,默认权限早已满足下行备份的要求

linux同步windows时间_linux同步服务器时间_同步时间服务器 linux

但是对于rput用户来说,要才能写入才有权限做上行备份,建议使用ACL访问控制机制设置用户rput对/var/www/html的写入权限(不改变其他用户对该目录的原有权限,如httpd服务的运行用户daemon对该目录具有的权限)

同步时间服务器 linux_linux同步服务器时间_linux同步windows时间

其中”-R”选项表示递归操作,”-m”选项表示更改权限,default表示在html/目录新建的文档用户rput也具有rwx权限。当须要消除所设置的ACL属性时,setfacl的-x或-b选项,分别表示拿来某些删掉和全部删掉。到此SSH备份源配置完毕

·发起端的SSH备份操作示例

有了SSH备份源服务器之后,就可以使用rsync工具在发起端来执行远程同步了;实际上备份源与发起端可以是同一台主机同步时间服务器 linux,其疗效相当于本地备份而不是异地备份

将服务器192.168.1.1中的/var/www/html文件夹与客户机(192.168.1.2)本地的/wwwroot文件夹进行同步,保持文件权限和属性、软/硬链接、ACL属性、删除/wwwroot目录中多余的文件,并在传输过程中进行压缩

下行同步SSH备份源:

1确保备份源服务器中/var/www/html目录下有文件

2在发起端客户机上打算目标目录

3在客户机上执行rsync实现下行同步

linux同步windows时间_同步时间服务器 linux_linux同步服务器时间

4验证同步结果

上行同步SSH备份源:

将客户机中的/usr/share/doc/HTML/目录中的内容上传同步到SSH服务器的/var/www/html目录下,由于备份用户rput并非root用户,因此”-g”、”-o”等选 项将难以使用

同步时间服务器 linux_linux同步服务器时间_linux同步windows时间

·编写rsync备份

实际生产环境中的备份工作一般是按计划重复执行的,例如每天上22:30对服务器网站目录做一次下行同步同步时间服务器 linux,定期任务可以交给 crond服务来完成,而实际的备份操作则可以讲到中

由于计划备份中的脚本在后台执行,无法按照提示来输入密码,因此编撰rsync备份脚本时怎么解决交互验证的问题就成为关键所在

SSH备份源的无交互验证:

对于SSH服务器来说,采用秘钥验证是防止交互式登陆的最佳方式,只要在客户机中创建无公钥句子的秘钥对,然后将私钥文件分发给服务器中的备份用户,就可以实现无密码手动登入了

1在客户机上创建秘钥对

linux同步服务器时间_同步时间服务器 linux_linux同步windows时间

2将私钥文件分发给服务器

同步时间服务器 linux_linux同步windows时间_linux同步服务器时间

3在客户机测试SSH的秘钥验证

linux同步服务器时间_同步时间服务器 linux_linux同步windows时间

成功实现免交互手动登入后,再次使用rsync访问SSH备份源时,也就不再提示须要密码验证了,注意,执行脚本的必须是在客户机中创创建秘钥对的用户

脚本内容如下

linux同步服务器时间_linux同步windows时间_同步时间服务器 linux

1对建好的备份脚本设置适当权限

2创建crond计划任务

每天22:30执行脚本

三 rsync备份源与发起端的配置

rsync除了仅用作远程同步的发起端(客户端),也可以作为守护进程运行,为其他客户机提供备份源,配置rsync备份源须要构建配置文件 rsync.conf,创建备份帐户,然后将rsync程序以”- -daemon”选项运行

·配置rsync备份源

1构建/etc/rsyncd.conf配置文件

配置文件rsyncd.conf坐落/etc/目录下,需自行构建,配置内容的格式与samba服务器类似,具体可以参考man指南页,下面将以源目录/var/www/html、备份帐号backuper为例

linux同步windows时间_同步时间服务器 linux_linux同步服务器时间

基于安全性考虑,对于rsync 的备份源最好仅容许以只读方法做下行同步,若确实须要做上行同步时,建议改用SSH备份源。另外,下行备份可以采用匿名的形式,只要将其中的”auth users”和”secrets file”配置记录除去就可以了

下面是常见的全局配置参数,

port:指定后台程序使用的端口号,默认为873。

uid:该选项指定当该模块传输文件时守护进程应当具有的uid,配合gid选项使用可以确定什么可以访问怎么样的文件权限,默认值是" nobody" 。

gid:该选项指定当该模块传输文件时守护进程应当具有的gid。默认值为" nobody" 。

max connections:指定该模块的最大并发联接数目以保护服务器,超过限制的联接恳求将被告知此后再试。默认值是0,也就是没有限制。

lock file:指定支持max connections参数的锁文件,默认值是/var/run/rsyncd.lock。

motd file:" motd file" 参数拿来指定一个消息文件,当顾客联接服务器时该文件的内容显示给顾客,默认是没有motd文件的。

log file:" log file" 指定rsync的日志文件,而不将日志发送给syslog。

pid file:指定rsync的pid文件,通常指定为“/var/run/rsyncd.pid”,存放进程ID的文件位置。

hosts allow = 单个IP地址或网路地址 //允许访问的客户机地址

下面是常见的模块配置参数

主要是定义服务器那个目录要被同步输出。

其格式必须为“[共享模块名]”形式,这个名子就是在rsync客户端见到的名子,其实有点象Samba服务器提供的共享名。而服务器真正同步的数据是通过 path来指定的。

Comment:给模块指定一个描述,该描述连同模块名在顾客联接得到模块列表时显示给顾客。默认没有描述定义。

Path:指定该模块的供备份的目录树路径,该参数是必须指定的。

read only :yes为只容许下载,no为可以下载和上传文件到服务器

exclude:用来指定多个由空格隔开的多个文件或目录(相对路径),将其添加到exclude列表中。这等同于在客户端命令中使用—exclude或----filter来指定个别文件或目录不下载或上传(既不可访问)

exclude from:指定一个包含exclude模式的定义的文件名,服务器从该文件中读取exclude列表定义,每个文件或目录须要占用一行

include: 用来指定不排除符合要求的文件或目录。这等同于在客户端命令中使用--include来指定模式,结合include和exclude可以定义复杂的exclude/include规则。

include from:指定一个包含include模式的定义的文件名,服务器从该文件中读取include列表定义。

auth users:该选项指定由空格或冒号分隔的用户名列表,只有那些用户才准许联接该模块。这里的用户和系统用户没有任何关系。如果" auth users" 被设置linux是什么,那么客户端发出对该模块的联接恳求之后会被rsync恳求challenged进行验证身分这儿使用的challenge/response合同。用户的名和密码以明文形式储存在" secrets file" 选项指定的文件中。默认情况下无需密码就可以联接模块(也就是匿名方法)。

secrets file:该选项指定一个包含定义用户名:密码对的文件。只有在" auth users" 被定义时,该文件才有作用。文件每行包含一个username:passwd对。一般来说密码最好不要超过8个字符。没有默认的secures file名,注意:该文件的权限一定要是600arm linux,否则客户端将不能联接服务器。

hosts allow:指定什么IP的顾客容许联接该模块。定义可以是以下方式:

单个IP地址,例如:192.167.0.1,多个IP或网关须要用空格隔开,

整个网关,例如:192.168.0.0/24,也可以是192.168.0.0/255.255.255.0

“*”则表示所有,默认是容许所有主机联接。

hosts deny:指定不容许联接rsync服务器的机器,可以使用hosts allow的定义方法来进行定义。默认是没有hosts deny定义。

list:该选项设定当顾客恳求可以使用的模块列表时,该模块是否应当被列举。如果设置该选项为false,可以创建隐藏的模块。默认值是true。

Timeout:通过该选项可以覆盖顾客指定的IP超时时间。通过该选项可以确保rsync服务器不会永远等待一个崩溃的客户端。超时单位为秒钟,0表示没有超时定义,这也是默认值。对于匿名rsync服务器来说,一个理想的数字是600

2为备份帐户创建数据文件:

添加一行用户记录,以逗号分隔,用户名称为backuper,密码为pwd123。由于帐号信息采用明文储存,因此应调整文件权限,避免帐号信息泄漏。

3启动rsync服务程序

执行”rsync --daemon”命令就可以启动rsync服务,以独立窃听服务的形式运行,若要关掉rsync服务,可以采用kill进程的形式

linux同步windows时间_同步时间服务器 linux_linux同步服务器时间

将”rsync --daemon”保存到/etc/rc.local文件中,确保系统启动后手动启动rsync服务。

或者可以将rsync交给超级服务xinted管理,只需更改相应配置并启动xinetd服务即可启动rsync服务

同步时间服务器 linux_linux同步windows时间_linux同步服务器时间

如果没有安装xinet软件包,请先安装

4在iptables防火墙上创建规则容许873端口的通讯

若selinux开启要更改selinux的布尔值:

·rsync发起端的备份操作示例

使用rsync备份工具实现备份操作。

格式1:

rsync 选项 用户名@备份源服务器IP::共享模块名 目标目录

格式2:

rsync 选项 rsync://用户名@备份源服务器IP/共享模块名 目标目录

1在客户机上执行rsync命令实现下行同步操作

将服务器中的wwwroot共享模块中的内容下载到本地的/myweb、目录中

linux同步windows时间_同步时间服务器 linux_linux同步服务器时间

linux同步服务器时间_linux同步windows时间_同步时间服务器 linux

2编撰rsync脚本

rsync备份源的无交互验证,对于rsync备份源来说,可使用环境变量RSYNC_PASSWORD来储存密码。执行 rsync备份任务时,会手动读取该变量,并在须要时发送给rsync源服务器来进行验证

无交互式验证

linux同步服务器时间_linux同步windows时间_同步时间服务器 linux

脚本内容

同步时间服务器 linux_linux同步服务器时间_linux同步windows时间

设置x权限:

设置计划任务,在 crond计划任务中按指定计划执行脚本

本文原创地址://gulass.cn/xhsyrmlsxycw.html编辑:刘遄,审核员:暂无