使用软件Rsync和Inotify,实现多服务器,Linux和windows系统文件的实时同步 两台Linux 主机之间文件实时同步 主机A: 192.168.254.201 主机B: 192.168.254.202 实验目的,实现在主机B上做修改,主机A上做到实时同步 1.1 主机A上的配置 1.1.1建立需要同步文件夹 Mkdir /opt/rsync 1.1.2安装Rsync Emerge rsync 我用的Gentoo,默认已经安装,配置文件在/etc/rsyncd.conf 1.1.3修改配置文件 Nano –w /etc/rsyncd.conf # Globel setting uid = root gid = root use chroot =no max connectiongs = 10 pid file = /var/run/rsyncd.pid lock file = /var/run/rsync.lock log file = /var/log/rsync.og # Folder Setting,Permit add more folder [images] path = /opt/image/ read only = no auth users = rsyncuser secrets file = /etc/rsyncd.secrets 1.1.4 写验证文件 Nano –w /etc/rsyncd.secrets rsyncuser:Password01 Chown -R 600 /etc/rsyncd.secrets 1.1.5 启动服务 Rsync --daemon --config=/etc/rsyncd.conf Echo –en ‘rsync –daemon –config=/etc/rsyncd.conf’ >> /etc/rc.local 1.2 主机B上面的配置 1.2.1 建立相同的目录 Mkdir /opt/rsync 1.2.2安装rsync和inotify Emerge rsync Emerge inotify-tools 1.2.3 建立访问密码 Echo –en ‘Password01’ > /etc/rsyncd.secrets Chmod 600 /etc/rsyncd.secrets 1.2.4配置同步脚本 nano -w /root/InotifyRsync.sh #!/bin/bash host_1=192.168.254.201 src=/opt/image/ dst=images user=valeRsync inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e modify,delete$ do rsync -avzP --delete --password-file=/etc/rsyncd.secrets $src $ echo "${file} was rsynced" done exit 0 1.2.5 测试运行
echo -ne ‘/root/InotifyRsync.sh &’ >> /etc/rc.local Sh /root/InotifyRsync.sh 另外开一个终端在/opt/rsync下做测试,检查A 主机是否有同步。 1.2.6 inotify支持的属性 IN_ACCESS,即文件被访问 IN_MODIFY,文件被 write IN_ATTRIB,文件属性被修改,如 chmod、chown、touch 等 IN_CLOSE_WRITE,可写文件被 close IN_CLOSE_NOWRITE,不可写文件被 close IN_OPEN,文件被 open IN_MOVED_FROM,文件被移走,如 mv IN_MOVED_TO,文件被移来,如 mv、cp IN_CREATE,创建新文件 IN_DELETE,文件被删除,如 rm IN_DELETE_SELF,自删除,即一个可执行文件在执行时删除自己 IN_MOVE_SELF,自移动,即一个可执行文件在执行时移动自己 IN_UNMOUNT,宿主文件系统被 umount IN_CLOSE,文件被关闭,等同于(IN_CLOSE_WRITE | IN_CLOSE_NOWRITE) IN_MOVE,文件被移动,等同于(IN_MOVED_FROM | IN_MOVED_TO |