准备两台linux主机,操作系统为ubuntu10.04:
一台作为rsync的服务端,假设ip为192.85.1.9.
一台作为rsync的客户端,假设ip为192.85.1.112.
rsync能够实现文件从客户端指定目录传输到服务端指定目录,但不监控和实时功能.
lsync采用inotify原理监听某一目录,如果目录内发生增、删、改、利用rsync协议自动同步到多个服务器.inotify已并入ubuntu内核.
rsync和lsync都可通过系统软件包管理器安装,可以通过下载编译源文件安装:
rsync:http://www.samba.org/ftp/rsync/src/rsync-3.0.7.tar.gz
lsync:http://lsyncd.googlecode.com/files/lsyncd-1.26.tar.gz
服务端不用安装lsync.
打开/etc/rsyncd.conf文件(若没有则新建),输入以下内容:
[data]
path =/usr/lib/oracle/xe/data
uid =root
gid =root
address= 192.85.1.112
logformat= %t %a %m %f %b
syslogfacility = local3
说明:
[data]是路径别名,在配置客户端lsync时用于替代目标路径,即path,path是服务端存放同步文件的目录路径,可以按需要修改.
uid,gid是目标目录的所属者,如果不设则默认为-2(nobody).
address指定监听的ip,这个ip指客户端地址,端口默认为873.
logformat指定日志文件格式.
syslogfacility取决于rsync的启动方式,daemon方式则设为local3.
客户端rsync同样需要在/etc/下新建rsyncd.conf文件,但不用写入任何东西.
配置lsync配置文件lsyncd.conf.xml,文件地址可以用locate命令查找.
下面是设置好的文件内容:
<lsyncd version="1">
<settings>
<logfile filename="/var/log/lsyncd"/>
<binary filename="/usr/bin/rsync"/>
<callopts>
<option text="-avz"/>
<option text="--force"/>
<option text="-lt%r"/>
<option text="--delete"/>
<exclude-file/>
<source/>
<destination/>
</callopts>
</settings>
<directory>
<sourcepath="/home/ls/alipay_update/"/>
<targetpath="192.85.1.9::data"/>
</directory>
</lsyncd>
logfile指定 lsyncd的日志文件.
binary指定rsync程序路径.
Callopts标签下的子标签都是设置调用rsync时使用的参数,具体参数函数可以参考附录,%r会被替代成-r
directory指定目录,其中source子标签指定源文件目,该目录存放需要同步的文件;target标签指定rsync服务端地址和目标目录路径,data即服务端配置文件中[]的内容
系统默认的内容有很多类似<!--描述信息-->的行,表示注释信息或关闭的配置项.
服务端:
终端输入/usr/bin/rsync–-daemon –config=/etc/rsyncd.conf启动rsync.
服务启动后可用psauxf|grep 'rsync'查看进程,若出现类似以下信息则说明启动成功:
客户端:
终端输入/usr/bin/rsync--daemon启动rsync.
输入/usr/bin/lsyncd--conf/etc/lsyncd.conf.xml启动lsync.
再在可以在客户指定
可能出现的错误:
ERROR: chroot failed
rsyncerror: error starting client-server protocol (code 5) at main.c(1522)[receiver=3.0.3]
原因:服务器端的目录不存在或无权限,创建目录并修正权限可解决问题.
似乎没有直接关闭的方法,但能用psaux命令查出进程号,使用kill命令关闭进程
psaux:
kill2247
kill2281
rsync命令(部分)
-v,--verbose 详细模式输出
-q,--quiet 精简输出模式
-c,--checksum 打开校验开关,强制对文件传输进行校验
-a,--archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
-r,--recursive 对子目录以递归模式处理
-R,--relative 使用相对路径信息
-b,--backup创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用--suffix选项来指定不同的备份文件前缀。
--backup-dir将备份文件(如~filename)存放在在目录下。
-l,--links 保留软链结
-L,--copy-links 想对待常规文件一样处理软链结
--delete删除那些DST中SRC没有的文件
--force强制删除目录,即使不为空
--exclude=PATTERN指定排除不需要传输的文件模式
--include=PATTERN指定不排除而需要传输的文件模式
--exclude-from=FILE排除FILE中指定模式的文件
--include-from=FILE不排除FILE指定模式匹配的文件
--version打印版本信息
--address绑定到特定的地址
--config=FILE指定其他的配置文件,不使用默认的rsyncd.conf文件
--port=PORT指定其他的rsync服务端口
--blocking-io对远程shell使用阻塞IO
-stats给出某些文件的传输状态
--progress在传输时现实传输过程
--log-format=formAT指定日志文件格式
--password-file=FILE从FILE中得到密码
参考资料
http://blog.sina.com.cn/s/blog_6cf467320100m2sw.html
http://www.itlearner.com/article/4605