---dxwang
什么是rsync
rsync,remote synchronize顾名思意就知道它是一款实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限、时间、软硬链接等附加信息。 rsync是用 “rsync 算法”提供了一个客户机和远程文件服务器的文件同步的快速方法,而且可以通过ssh方式来传输文件,这样其保密性也非常好,另外它还是免费的软件。
rsync 包括如下的一些特性:
能更新整个目录和树和文件系统;
有选择性的保持符号链链、硬链接、文件属于、权限、设备以及时间等;
对于安装来说,无任何特殊权限要求;
对于多个文件来说,内部流水线减少文件等待的延时;
能用rsh、ssh 或直接端口做为传输入端口;
支持匿名rsync 同步文件,是理想的镜像工具
检查rsync
rpm -qa|grep rsync |
安装服务端
1、 在root用户操作
2、 添加两个文件/etc/rsync.pas和/etc/rsyncd.conf
rsyncd.conf
uid = root gid = root use chroot = no max connections = 4 strict modes = yes port = 873 [ext-lib] path = /data/storm/ext-lib/ comment = try to realize file synchronization ignore errors read only = no list = no auth users = storm secrets file = /etc/rsync.pas hosts allow = 10.27.95.101 // 客户端的IP地址,多IP以逗号分隔 hosts deny = 0.0.0.0/0 |
rsync.pas
storm_bak |
3、 安装inotify-tools
tar -zxvf inotify-tools-3.14.tar.gz cd inotify-tools-3.14 ./configure --prefix=/usr/local/inotify make make install |
4、 启动rsync-monitor.sh(在/data/storm/rsync)
#!/bin/bash ps -ef|grep "/usr/bin/rsync --daemon"|grep -v grep > /data/storm/rsync/rsync-info.log num=`grep "/usr/bin/rsync --daemon" /data/storm/rsync/rsync-info.log|wc -l` echo $num if [ $num -eq 0 ];then echo "[$(date +‘%F %T‘)] rsync is down,need restart" echo "-----" >> /data/storm/rsync/rsync-info-forever.log cat /data/storm/rsync/rsync-info.log >> /data/storm/rsync/rsync-info-forever.log /usr/bin/rsync --daemon else echo "[$(date +‘%F %T‘)] rsync is running" fi |
5、 启动rsync-inotify-monitor.sh(在/data/storm/rsync)
#!/bin/bash host=10.27.95.101,10.27.95.102 // 客户端IP src=/data/storm/ext-lib/ des=ext-lib user=storm /usr/local/inotify/bin/inotifywait -mrq --timefmt ‘%d/%m/%y %H:%M‘ --format ‘%T %w%f%e‘ -e modify,delete,create,attrib $src | while read files do IFS=, for each in $host do /usr/bin/rsync -vzrtopg --delete --progress --password-file=/etc/rsync.pas $src [email protected]$each::$des done echo "${files} was rsynced" >> /data/storm/rsync/rsync-inotify.log 2>&1 done |
安装客户端
1、 在目录/data/storm/rsync目录上传三个文件rsyncd.conf、rsync.pas和rsync-monitor.sh
rsyncd.conf
uid=root gid=root use chroot=no max connections=4 strict modes=yes [ext-lib] path = /data/storm/ext-lib/ comment = try to realize file synchronization ignore errors read only = no list = no auth users = storm secrets file = /data/storm/rsync/rsync.pas hosts allow = 10.27.95.100 // 服务端IP hosts deny = 0.0.0.0/0 |
rsync.pas,rsync.pas的权限是600
storm:storm_bak |
rsync-monitor.sh
#!/bin/bash num=`ps -ef|grep "/usr/bin/rsync --daemon"|wc -l` if [ $num -eq 1 ];then echo "[$(date +‘%F %T‘)] rsync is down,need restart" /usr/bin/rsync --daemon --config=/data/storm/rsync/rsyncd.conf else echo "[$(date +‘%F %T‘)] rsync is running" fi |
2、 启动rsync-monitor.sh
版权声明:本文为博主原创文章,未经博主允许不得转载。