inotify slave部署
把master上指定文件下载到本地的主机指定目录
yum install rsync –y [root@localhost ~]# useradd rsync -s /sbin/nologin -M [root@localhost ~]# mkdir -p /home/yxh/back [root@localhost ~]# chown rsync.rsync /home/yxh/back/ echo rsync_backup:yxh >>/etc/rsync.password rsync_backup 为用户名 yxh 为密码 [root@localhost ~]# chmod 600 /etc/rsync.password [root@localhost ~]# rsync --daemon [root@localhost ~]# ss -tunlp | grep rsync tcp LISTEN 0 5 *:873 *:* users:(("rsync",pid=12133,fd=4)) tcp LISTEN 0 5 :::873 :::* users:(("rsync",pid=12133,fd=5)) 重启rsync [root@localhost back]# ps -ef | grep rsync root 13472 1 0 20:10 ? 00:00:00 rsync --daemon root 14185 9059 0 20:19 pts/1 00:00:00 grep --color=auto rsync [root@localhost back]# kill -9 13472 [root@localhost back]# ps -ef | grep rsync root 14253 9059 0 20:19 pts/1 00:00:00 grep --color=auto rsync [root@localhost back]# rsync --daemon failed to create pid file /var/run/rsyncd.pid: File exists [root@localhost back]# rm -fr /var/run/rsyncd.pid [root@localhost back]# ls [root@localhost back]# rsync --daemon
[root@localhost etc]# vi rsyncd.conf # /etc/rsyncd: configuration file for rsync daemon mode # See rsyncd.conf man page for more options. # configuration example: uid = rsync gid = rsync use chroot = no max connections = 400 pid file = /var/run/rsyncd.pid # exclude = lost+found/ # transfer logging = yes timeout = 900 # ignore nonreadable = yes # dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 [backup] path = /home/yxh/back/ ignore errors read only = no write only = no list = false fake super = yes auth users = rsync_backup secrets file = /etc/rsync.password
inotify master部署
master主机上的文件发生变化的时候 slave主机会自动进行同步变化的文件
[root@node2 ~]# yum install rsync –y [root@node2 ~]# wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz [root@node2 ~]# tar zxf inotify-tools-3.14.tar.gz [root@node2 ~]# cd inotify-tools-3.14 [root@node2 inotify-tools-3.14]# ./configure --prefix=/usr/local/inotify [root@node2 inotify-tools-3.14]# mkdir -p /home/yxh/back/ [root@node2 inotify-tools-3.14]# echo "yxh" >/etc/rsync.password [root@node2 inotify-tools-3.14]# chmod 600 /etc/rsync.password 测试同步 [root@node2 back]# ls test.txt [root@node2 back]# rsync -avz /home/yxh/back/test.txt rsync_backup@192.168.11.175::backup --password-file=/etc/rsync.password sending incremental file list test.txt sent 100 bytes received 43 bytes 286.00 bytes/sec total size is 7 speedup is 0.05
[root@node2 local]# vi inotify.sh #!/bin/bash host01=192.168.11.175 user=rsync_backup rsync_passfile=/etc/rsync.password inotify_home=/usr/local/inotify #judge if [ ! -e "$src" ] || [ ! -e "${rsync_passfile}" ] || [ ! -e "${inotify_home}/bin/inotifywait" ] || [ ! -e "/usr/bin/rsync" ]; then echo "Check File and Folder" exit 9 fi ${inotify_home}/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e close_write,delete,create,attrib $src | while read file do # rsync -avzP --delete --timeout=100 --password-file=${rsync_passfile} $src $user@$host01::$dst >/dev/null 2>&1 cd $src && rsync -aruz -R --delete ./ --timeout=100 $user@$host01::$dst --password-file=${rsync_passfile} >/dev/null 2>&1 done exit 0
3.执行脚本实现自动更新
[root@node2 local]# sh inotify.sh & 这种方式虽然可以实现脚本在后台运行 但是一旦关闭终端便会失效
nohup sh inotify.sh >run.log 2>&1 & 采取这种执行方式 即使关闭终端也可以生效 只要不重启系统即可一直在后台运行
[root@node2 local]# sh inotify.sh & [1] 32260 在master上添加一个test2.txt文件保存 [root@node2 back]# ls test.txt [root@node2 back]# vi test2.txt [root@node2 back]# ls test2.txt test.txt 然后到slave节点上查看指定目录 test2.txt被自动同步到本地来 [root@localhost back]# ls test2.txt test.txt [root@localhost back]# vi test2.txt 加入开机启动 # echo "/bin/bash /home/yxh/inotify.sh &" >>/etc/rc.local
NFS实现映射远程磁盘目录
nfs安装 在两台机器上安装nsf 、 portmap yum install nfs-utils portmap 88配置 88机器上的/uploaddir目录映射到89本地的/uploaddir目录 88编辑配置文件 [root]# vi /etc/exports /uploaddir/ 10.199.142.89(rw,sync,no_root_squash) systemctl start rpcbind systemctl start nfs 89配置 systemctl start rpcbind systemctl start nfs mkdir /uploaddir mount -t nfs 10.199.142.88:/uploaddir/ /uploaddir/ mount 10.199.142.88:/uploaddir on /uploaddir type nfs4
线上案例
vi /etc/rsync.password root:rootpass chmod 600 /etc/rsync.password
root@9 etc]# vi rsyncd.conf # /etc/rsyncd: configuration file for rsync daemon mode # See rsyncd.conf man page for more options. # configuration example: uid =root gid =root use chroot = yes max connections = 400 pid file = /var/run/rsyncd.pid # exclude = lost+found/ # transfer logging = yes timeout = 900 # ignore nonreadable = yes # dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 # [ftp] # path = /home/ftp # comment = ftp export area uid = root gid = root use chroot = no max connections = 10 strict modes = yes hosts allow = 88 port = 873 pid file = /var/run/rsyncd.pid lock file = /var/run/rsync.lock log file = /var/log/rsyncd.log [backup] path = /deploydir ignore errors read only = no write only = no list = false fake super = yes secrets file = /etc/rsync.password
[root@88 inotify-tools-3.14]# echo "rootpass" >/etc/rsync.password [root@88 inotify-tools-3.14]# chmod 600 /etc/rsync.password [root@88 uploaddir]# rsync -avz /uploaddir/22.txt root@10.89::backup --password-file=/etc/rsync.password
[root@88 ~]# vi inotify.sh #!/bin/bash src=/uploaddir host01=1.89 host02=1.90 user=root dst=backup rsync_passfile=/etc/rsync.password inotify_home=/usr #judge if [ ! -e "$src" ] || [ ! -e "${rsync_passfile}" ] || [ ! -e "${inotify_home}/bin/inotifywait" ] || [ ! -e "/usr/bin/rsync" ]; then echo "Check File and Folder" exit 9 fi ${inotify_home}/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e close_write,delete,create,attrib $src | while read file do cd $src && rsync -aruz -R --delete ./ --timeout=100 $user@$host01::$dst --password-file=${rsync_passfile} >/dev/null 2>&1 cd $src && rsync -aruz -R --delete ./ --timeout=100 $user@$host02::$dst --password-file=${rsync_passfile} >/dev/null 2>&1 done exit 0
[root@-88]# cat /etc/rsync.password rootpass [root@88]# cat /etc/rsync/rsync.password root:rootpass [root@88]# cat /etc/rsyncd.conf pid file = /var/run/rsyncd.pid uid = nobody gid = nobody use chroot = no log format = %t %a %m %f %b syslog facility = local3 timeout = 300 address = 10.8 [backup] uid =root gid =root use chroot = yes max connections = 400 path = /deploydir ignore errors read only = no write only = no list = false fake super = yes secrets file = /etc/rsync/rsync.password