Sersync+rsync实现文件同步.docx
- 文档编号:9318353
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:15
- 大小:21.87KB
Sersync+rsync实现文件同步.docx
《Sersync+rsync实现文件同步.docx》由会员分享,可在线阅读,更多相关《Sersync+rsync实现文件同步.docx(15页珍藏版)》请在冰豆网上搜索。
Sersync+rsync实现文件同步
Sersync+rsync实现文件同步
Rsync的介绍
在使用sersync之前,我们必须安装配置好rsync服务器。
这里我们需要注意的是,纯粹的使用rsync做单向同步时,rsync的守护进程是运行在文件推送的服务器上,而接收的服务器是运行rsync客户端。
使用sersync做文件实时同步刚好相反,用于接收文件的服务器运行rsync守护进程。
rsync的安装
到这里http:
//rsync.samba.org/ftp/rsync/下载最新的安装包,现在最新版本是rsync-3.0.9,
我们以RedHatLinux为例讲解。
1、下载rsync安装包
#wgethttp:
//rsync.samba.org/ftp/rsync/rsync-3.0.9.tar.gz
2、卸载rsync(如果系统默认安装rsync)
#rpm-qa|greprsync
#rpm-ersync-2.6.8-3.1
3、安装新版rsync
#tar-zxvfrsync-3.0.9
#cdrsync-3.0.9
#./configure
#make&&makeinstall
rsync服务器的配置文件rsyncd.conf
下面我们将涉及到三个文件rsyncd.conf,rsyncd.secrets和rsyncd.motd。
rsyncd.conf是rsync服务器主要配置文件。
rsyncd.secrets是登录rsync服务器的密码文件。
rsyncd.motd是定义rysnc服务器信息的,也就是用户登录信息。
下面我们分别建立这三个文件。
1.mkdir/etc/rsyncd
注:
在/etc目录下创建一个rsyncd的目录,我们用来存放rsyncd.conf和rsyncd.secrets文件;
1.touch/etc/rsyncd/rsyncd.conf
注:
创建rsyncd.conf,这是rsync服务器的配置文件;
1.touch/etc/rsyncd/rsyncd.secrets
注:
创建rsyncd.secrets,这是用户密码文件;
1.chmod600/etc/rsyncd/rsyncd.secrets
注:
为了密码的安全性,我们把权限设为600;
1.touch/etc/rsyncd/rsyncd.motd
注:
创建rsyncd.motd文件,这是定义服务器信息的文件。
下一步就是我们修改rsyncd.conf和rsyncd.secrets和rsyncd.motd文件的时候了。
rsyncd.conf文件内容:
1.#Minimalconfigurationfileforrsyncdaemon
2.#Seersync
(1)andrsyncd.conf(5)manpagesforhelp
3.
4.#Thislineisrequiredbythe/etc/init.d/rsyncdscript
5.pidfile=/var/run/rsyncd.pid
6.port=873
7.address=192.168.1.171
8.#uid=nobody
9.#gid=nobody
10.uid=root
11.gid=root
12.
13.usechroot=yes
14.readonly=no
15.
16.
17.#limitaccesstoprivateLANs
18.hostsallow=192.168.1.0/255.255.255.010.0.1.0/255.255.255.0
19.hostsdeny=*
20.
21.maxconnections=5
22.motdfile=/etc/rsyncd/rsyncd.motd
23.
24.#Thiswillgiveyouaseparatelogfile
25.logfile=/var/log/rsync.log
26.
27.#Thiswilllogeveryfiletransferred-upto85,000+peruser,persync
28.#transferlogging=yes
29.
30.logformat=%t%a%m%f%b
31.timeout=300
32.
33.[linuxsirhome]
34.path=/home
35.list=yes
36.ignoreerrors
37.authusers=linuxsir
38.secretsfile=/etc/rsyncd/rsyncd.secrets
39.comment=linuxsirhome
40.exclude= beinan/ samba/
41.
42.[beinan]
43.path=/opt
44.list=no
45.ignoreerrors
46.comment=optdir
47.authusers=beinan
48.secretsfile=/etc/rsyncd/rsyncd.secrets
密码文件:
/etc/rsyncd/rsyncd.secrets的内容格式;
1.用户名:
密码
2.linuxsir:
222222
3.beinan:
333333
注:
linuxsir是系统用户,这里的密码值得注意,为了安全,你不能把系统用户的密码写在这里。
比如你的系统用户linuxsir密码是abcdefg,为了安全,你可以让rsync中的linuxsir为222222。
rsyncd.motd文件;
它是定义rysnc服务器信息的,也就是用户登录信息。
比如让用户知道这个服务器是谁提供的等;类似ftp服务器登录时,我们所看到的linuxsir.orgftp……。
当然这在全局定义变量时,并不是必须的,你可以用#号注掉,或删除;我在这里写了一个rsyncd.motd的内容为:
1.+++++++++++++++++++++++++++
2.+linuxsir.org rsync 2002-2007+
3.+++++++++++++++++++++++++++
rsyncd.conf文件代码说明
1.pidfile=/var/run/rsyncd.pid
注:
告诉进程写到/var/run/rsyncd.pid文件中;
1.port=873
注:
指定运行端口,默认是873,您可以自己指定;
1.address=192.168.1.171
注:
指定服务器IP地址;
1.uid=nobody
2.gid=nobdoy
注:
服务器端传输文件时,要发哪个用户和用户组来执行,默认是nobody。
如果用nobody用户和用户组,可能遇到权限问题,有些文件从服务器上拉不下来。
所以我就偷懒,为了方便,用了root。
不过您可以在定义要同步的目录时定义的模块中指定用户来解决权限的问题。
1.usechroot=yes
用chroot,在传输文件之前,服务器守护程序在将chroot到文件系统中的目录中,这样做的好处是可能保护系统被安装漏洞侵袭的可能。
缺点是需要超级用户权限。
另外对符号链接文件,将会排除在外。
也就是说,你在rsync服务器上,如果有符号链接,你在备份服务器上运行客户端的同步数据时,只会把符号链接名同步下来,并不会同步符号链接的内容;这个需要自己来尝试;
1.readonly=yes
注:
readonly是只读选择,也就是说,不让客户端上传文件到服务器上。
还有一个writeonly选项,自己尝试是做什么用的吧;
1.#limitaccesstoprivateLANs
2.hostsallow=192.168.1.0/255.255.255.010.0.1.0/255.255.255.0
注:
在您可以指定单个IP,也可以指定整个网段,能提高安全性。
格式是ip与ip之间、ip和网段之间、网段和网段之间要用空格隔开;
1.maxconnections=5
注:
客户端最多连接数;
1.motdfile=/etc/rsyncd/rsyncd.motd
注:
motdfile是定义服务器信息的,要自己写rsyncd.motd文件内容。
当用户登录时会看到这个信息。
1.logfile=/var/log/rsync.log
注:
rsync服务器的日志;
1.transferlogging=yes
注:
这是传输文件的日志;
1.[linuxsirhome]
注:
模块,它为我们提供了一个链接的名字,链接到哪呢,在本模块中,链接到了/home目录;要用[name]形式;
1.path=/home
注:
指定文件目录所在位置,这是必须指定的;
1.authusers=linuxsir
注:
认证用户是linuxsir,是必须在服务器上存在的用户;
1.list=yes
注:
list意思是把rsync服务器上提供同步数据的目录在服务器上模块是否显示列出来。
默认是yes。
如果你不想列出来,就no;如果是no是比较安全的,至少别人不知道你的服务器上提供了哪些目录。
你自己知道就行了;
1.ignoreerrors
注:
忽略IO错误,详细的请查文档;
1.secretsfile=/etc/rsyncd/rsyncd.secrets
注:
密码存在哪个文件;
1.comment=linuxsirhome data
注:
注释可以自己定义,写什么都行,写点相关的内容就行;
1.exclude= beinan/ samba/
注:
exclude是排除的意思,也就是说,要把/home目录下的beinan和samba排除在外;beinan/和samba/目录之间有空格分开;
启动rsync服务器及防火墙的设置
启动rsync服务器
启动rsync服务器相当简单,–daemon是让rsync以服务器模式运行;
1./usr/bin/rsync--daemon --config=/etc/rsyncd/rsyncd.conf
rsync服务器和防火墙
Linux防火墙是用iptables,所以我们至少在服务器端要让你所定义的rsync服务器端口通过,客户端上也应该让通过。
1.iptables-AINPUT-ptcp-mstate--stateNEW -mtcp--dport873-jACCEPT
查看一下防火墙是不是打开了873端口;
1.iptables-L
通过rsync客户端来同步数据
1.rsync-avzPlinuxsir@linuxsir.org:
:
linuxsirhome linuxsirhome
Password:
这里要输入linuxsir的密码,是服务器端提供的,在前面的例子中,我们用的是222222,输入的密码并不显示出来;输好后就回车;
注:
这个命令的意思就是说,用linuxsir用户登录到服务器上,把linuxsirhome数据,同步到本地目录linuxsirhome上。
当然本地的目录是可以你自己定义的,比如linuxsir也是可以的;当你在客户端上,当前操作的目录下没有linuxsirhome这个目录时,系统会自动为你创建一个;当存在linuxsirhome这个目录中,你要注意它的写权限。
说明:
-a参数,归档模式,表示以递归方式传输文件,并保持所有文件属性,相当于-rlptgoD,-r是递归-l是链接文件,意思是拷贝链接文件;-p表示保持文件原有权限;-t保持文件原有时间;-g保持文件原有用户组;-o保持文件原有属主;-D相当于块设备文件;
-z传输时压缩;
-P传输进度;
-v传输时的进度等信息,和-P有点关系,自己试试。
可以看文档;
1.rsync-avzP --deletelinuxsir@linuxsir.org:
:
linuxsirhome linuxsirhome
这回我们引入一个–delete选项,表示客户端上的数据要与服务器端完全一致,如果linuxsirhome目录中有服务器上不存在的文件,则删除。
最终目的是让linuxsirhome目录上的数据完全与服务器上保持一致;用的时候要小心点,最好不要把已经有重要数据的目录,当做本地更新目录,否则会把你的数据全部删除;
1.rsync-avzP --delete --password-file=rsync.password linuxsir@linuxsir.org:
:
linuxsirhome linuxsirhome
这次我们加了一个选项–password-file=rsync.password,这是当我们以linuxsir用户登录rsync服务器同步数据时,密码将读取rsync.password这个文件。
这个文件内容只是linuxsir用户的密码。
我们要如下做;
1.touchrsync.password
2.chmod600rsync.password
3.echo"222222">rsync.password
4.rsync-avzP --delete --password-file=rsync.password linuxsir@linuxsir.org:
:
linuxsirhome linuxsirhome
注:
这样就不需要密码了;其实这是比较重要的,因为服务器通过crond计划任务还是有必要的;
让rsync客户端自动与服务器同步数据
编辑crontab
crontab-e
加入如下代码:
1.100***rsync-avzP --delete --password-file=rsync.password linuxsir@linuxsir.org:
:
linuxsirhome linuxsirhome
sersync的介绍
sersync主要用于服务器同步,web镜像等功能。
基于boost1.43.0,inotifyapi,rsynccommand.开发。
目前使用的比较多的同步解决方案是inotify-tools+rsync,另外一个是google开源项目Openduckbill(依赖于inotify-tools),这两个都是基于脚本语言编写的。
相比较上面两个项目,本项目优点是:
sersync是使用c++编写,而且对linux系统文件系统产生的临时文件和重复的文件操作进行过滤(详细见附录,这个过滤脚本程序没有实现),所以在结合rsync同步的时候,节省了运行时耗和网络资源。
因此更快。
摘自:
sersync原理
使用Linux2.6内核的inotify监控Linux文件系统事件,被监听目录下如果有文件发生修改,sersync将通过内核自动捕获到事件,并将该文件利用rsync同步到多台远程服务器。
sersync仅仅同步发生增、删、改事件的单个文件或目录,不像rsync镜像同步那样需要比对双方服务器整个目录下数千万的文件,并且支持多线程同步,因此效率非常高。
安装sersync
到这里HatLinux为例讲解。
1.wget
2.mkdir/usr/sersync
3.tarxzfsersync2.5_32bit_binary_stable_final.tar.gz-C/usr/sersync/
就这样,sersync安装完成,下面介绍如何配置及使用。
配置sersync
sersync的配置文件在/usr/sersync/confxml.xml。
首先创建连接rsyncd的密码文件:
1.echo"123456">/usr/sersync/rsync.pas
2.chmod600/usr/sersync/rsync.pas
下面是confxml.xml文件的一些配置解释:
1.
xmlversion=”1.0″encoding=”ISO-8859-1″?
>
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
—监控事件的过程中过滤特定文件,和特定文件夹的文件–>
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
—设置要监控的事件–>
23.
24.
25.
26.
27.
—设置要监控的目录–>
28.
29.
—指定远端rsync服务器的地址和模块名–>
30.
31.
32.
33.
34.
—是否启用验证,并指定密码存放文件–>
35.
–port=874–>
36.
–timeout=100–>
37.
38.
39.
–defaultevery60minsexecuteonce–>
40. –600mins–> 41. —是否启用执行完整rsync,并指定执行周期–> 42. 43. —设置完整执行rsync时的过滤条件–> 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. –prefix/opt/tongbu/mmm.shsuffix–> 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 请根据自己的具体情况修改。 sersync2命令使用说明 1.在主服务器上开启sersync守护进程,使sersync在后台运行,开启实时同步。 ./sersync-d 过程如下: 1.[root@localhostGNU-Linux-x86
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Sersync rsync 实现 文件 同步