rsync+inotify实现文件时时备份单项同步

源服务器          10.13.114.16

目标服务器        10.13.114.17

目的:实现源服务器10.13.114.16 /home/admin/www/文件夹文件实时同步到目标服务器10.13.114.17 /home/admin/www目录下

第一步:源服务器端安装rsync

wget http://docs.linuxtone.org/soft/lemp/CentOS-Base.repo -O /etc/yum.repos.d/CentOS-Base.repo

yum -y install vim-enhanced

wget http://www.samba.org/ftp/rsync/rsync-3.0.8.tar.gz

tar -zxvf rsync-3.0.8.tar.gz

cd rsync-3.0.8

./configure –prefix=/usr/local/rsync –disable-ipv6

make && make install

cd /usr/local/rsync/

mkdir etc

mkdir var

vim /usr/local/rsync/etc/rsyncd.conf

1 log file = /usr/local/rsync/var/rsyncd.Log 

2 pid file = /usr/local/rsync/var/rsyncd.Pid 

3 lock file = /usr/local/rsync/var/rsyncd.Lock 

4 #secrets file = /usr/local/rsync/etc/rsyncd.Pas 

5 motd file = /usr/local/rsync/etc/rsyncd.Motd 

6 hosts allow = 10.13.114.17/32 

7 list = yes 

8 uid = root 

9 gid = root 

10 use chroot = no 

11 max connections = 30 

12 [www] 

13 path = /home/admin/www 

14 comment = bakup www 

15 read only = no 

16 auth users = admin 

vim /usr/local/rsync/etc/rsyncd.motd

 

17 welcome 

这是欢迎词,可以不设置

在服务端和客户端都创建admin用户,用于同步

useradd admin

在源端生成公钥,拷贝到目标段,实现免密码登录

ssh-keygen -t rsa

拷贝.ssh/id_rsa.pub到服务器端的.ssh/authorized_keys文件中

然后设置权限为

在目标段执行

#chmod 600 .ssh/authorized_keys

启动源的rsync服务

rsync –daemon –config=/usr/local/rsync/etc/rsyncd.conf

查看

ps -ef |grep rsync

端口为873

第二步:源服务器端安装inotify

wget http://sourceforge.net/projects/inotify-tools/files/inotify-tools/3.13/inotify-tools-3.13.tar.gz/download

tar -zxvf inotify-tools-3.13.tar.gz

cd inotify-tools-3.13

./configure –prefix=/usr/local/inotify

make && make install

cd /usr/local/inotify/bin

18 #!/bin/sh 

19 SRC=/home/admin/www 

20 DST=admin@10.13.114.17:/home/admin 

21  

22 /usr/local/inotify/bin/inotifywait -mrq -e modify,delete,create,attrib ${SRC} | while read status 

23 do 

24     su – admin -c “/usr/bin/rsync  -ahqzt  –delete  $SRC $DST” 

25     echo “`date +’%Y-%m-%d %H:%M:%S’`  ${status} has rsynced” >>rsync.log 

26 done 

启动monitor.sh

#chmod +x monitor.sh

#./monitor.sh &

可以放到rc.local实现开机启动

cat “/usr/local/inotify/bin/monitor.sh &” >> /etc/rc.local

然后在源端的/home/admin/www下创建删除文件,都会同步到目标端

注释:

/usr/local/bin/inotifywait -mrq -e modify,delete,create,attrib ${src}

-m 是保持一直监听

-r 是递归查看目录

-q 是打印出事件

-e create,move,delete,modify,attrib 是指 监听 创建 移动 删除 写入 权限” 事件

/usr/bin/rsync -ahqzt –delete $SRC $DST

-a 存档模式

-h 保存硬连接

-q 制止非错误信息

-z 压缩文件数据在传输

-t 维护修改时间

-delete 删除于多余文件

rsync的完整参数说明:

-v, –verbose 详细模式输出

-q, –quiet 精简输出模式

-c, –checksum 打开校验开关,强制对文件传输进行校验

-a, –archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD

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

-R, –relative 使用相对路径信息

-b, –backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用–suffix选项来指定不同的备份文件前缀。

–backup-dir 将备份文件(~filename)存放在在目录下。

-suffix=SUFFIX 定义备份文件前缀

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

-l, –links 保留软链结

-L, –copy-links 想对待常规文件一样处理软链结

–copy-unsafe-links 仅仅拷贝指向SRC路径目录树以外的链结

–safe-links 忽略指向SRC路径目录树以外的链结

-H, –hard-links 保留硬链结

-p, –perms 保持文件权限

-o, –owner 保持文件属主信息

-g, –group 保持文件属组信息

-D, –devices 保持设备文件信息

-t, –times 保持文件时间信息

-S, –sparse 对稀疏文件进行特殊处理以节省DST的空间

-n, –dry-run现实哪些文件将被传输

-W, –whole-file 拷贝文件,不进行增量检测

-x, –one-file-system 不要跨越文件系统边界

-B, –block-size=SIZE 检验算法使用的块尺寸,默认是700字节

-e, –rsh=COMMAND 指定使用rshssh方式进行数据同步

–rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息

-C, –cvs-exclude 使用和CVS一样的方法自动忽略文件,用来排除那些不希望传输的文件

–existing 仅仅更新那些已经存在于DST的文件,而不备份那些新创建的文件

–delete 删除那些DSTSRC没有的文件

–delete-excluded 同样删除接收端那些被该选项指定排除的文件

–delete-after 传输结束以后再删除

–ignore-errors 及时出现IO错误也进行删除

–max-delete=NUM 最多删除NUM个文件

–partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输

–force 强制删除目录,即使不为空

–numeric-ids 不将数字的用户和组ID匹配为用户名和组名

–timeout=TIME IP超时时间,单位为秒

-I, –ignore-times 不跳过那些有同样的时间和长度的文件

–size-only 当决定是否要备份文件时,仅仅察看文件大小而不考虑文件时间

–modify-window=NUM 决定文件是否时间相同时使用的时间戳窗口,默认为0

-T –temp-dir=DIR DIR中创建临时文件

–compare-dest=DIR 同样比较DIR中的文件来决定是否需要备份

-P 等同于 –partial

–progress 显示备份过程

-z, –compress 对备份的文件在传输时进行压缩处理

–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中得到密码

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

-h, –help 显示帮助信息

要排除同步某个目录时,为rsync添加–exculde=PATTERN参数,注意,路径是相对路径,具体查看man rsync

要排除某个目录的事件监听的处理时,为inotifywait添加–exclude–excludei参数,具体查看man inotifywait

共有 0 条评论

Top