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同步操作的服务器称为备份源。在下行同步(下载)中,备份源负责提供文档的原始位置,发起端应对该位置具有读取权限;在上行同步(上传)中,备份源负责提供文档的目标位置,发起端应对该位置具有写入权限。如下图所示:
·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,分别拿来下载、上传
2确认sshd服务正常运行,且准许用户rget、rput能访问ssh服务器
在/etc/ssh/sshd_config文件中添如下配置项,只容许rget和rput能远程登陆ssh服务器。并重启sshd服务,确保更改生效。
3调整备份源所提供文档所在目录的权限(如/var/www/html目录),使rget用户有权读取、rput用户有权写入
在linux系统中,正常创建的目录权限为755,文件权限为644,因此对于rget用户来说,默认权限早已满足下行备份的要求
但是对于rput用户来说,要才能写入才有权限做上行备份,建议使用ACL访问控制机制设置用户rput对/var/www/html的写入权限(不改变其他用户对该目录的原有权限,如httpd服务的运行用户daemon对该目录具有的权限)
其中”-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实现下行同步
4验证同步结果
上行同步SSH备份源:
将客户机中的/usr/share/doc/HTML/目录中的内容上传同步到SSH服务器的/var/www/html目录下,由于备份用户rput并非root用户,因此”-g”、”-o”等选 项将难以使用
·编写rsync备份
实际生产环境中的备份工作一般是按计划重复执行的,例如每天上22:30对服务器网站目录做一次下行同步同步时间服务器 linux,定期任务可以交给 crond服务来完成,而实际的备份操作则可以讲到中
由于计划备份中的脚本在后台执行,无法按照提示来输入密码,因此编撰rsync备份脚本时怎么解决交互验证的问题就成为关键所在
SSH备份源的无交互验证:
对于SSH服务器来说,采用秘钥验证是防止交互式登陆的最佳方式,只要在客户机中创建无公钥句子的秘钥对,然后将私钥文件分发给服务器中的备份用户,就可以实现无密码手动登入了
1在客户机上创建秘钥对
2将私钥文件分发给服务器
3在客户机测试SSH的秘钥验证
成功实现免交互手动登入后,再次使用rsync访问SSH备份源时,也就不再提示须要密码验证了,注意,执行脚本的必须是在客户机中创创建秘钥对的用户
脚本内容如下
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为例
基于安全性考虑,对于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进程的形式
将”rsync --daemon”保存到/etc/rc.local文件中,确保系统启动后手动启动rsync服务。
或者可以将rsync交给超级服务xinted管理,只需更改相应配置并启动xinetd服务即可启动rsync服务
如果没有安装xinet软件包,请先安装
4在iptables防火墙上创建规则容许873端口的通讯
若selinux开启要更改selinux的布尔值:
·rsync发起端的备份操作示例
使用rsync备份工具实现备份操作。
格式1:
rsync 选项 用户名@备份源服务器IP::共享模块名 目标目录
格式2:
rsync 选项 rsync://用户名@备份源服务器IP/共享模块名 目标目录
1在客户机上执行rsync命令实现下行同步操作
将服务器中的wwwroot共享模块中的内容下载到本地的/myweb、目录中
或
2编撰rsync脚本
rsync备份源的无交互验证,对于rsync备份源来说,可使用环境变量RSYNC_PASSWORD来储存密码。执行 rsync备份任务时,会手动读取该变量,并在须要时发送给rsync源服务器来进行验证
无交互式验证
脚本内容
设置x权限:
设置计划任务,在 crond计划任务中按指定计划执行脚本
本文原创地址://q13zd.cn/xhsyrmlsxycw.html编辑:刘遄,审核员:暂无