已整理-rsync+inotify文件实时同步
目录:
语法:rsync [选项...] 源目录 目标目录
功能:同步与复制的差异
	复制:完全拷贝源到目标
	同步:增量拷贝,只传输变化过的数据
参数详解:
-n:       测试同步过程,不做实际修改
--delete:   删除目标文件夹内多余的文档
-a:       归档模式,相当于-rlptglD
-v:       显示详细操作信息
-z:       传输过程中启用压缩/解压
-r:       递归,包括目录/子目录及所有文件
-l:       保留符号链接文件
-p/-t:     保留文件的权限、时间标记
-o/-g:     保留文件的属主/属组标记
-D:       保留设备文件及其它特殊文件
-e:       基于通道传输
示例:
# rsync -av /opt/ceph-nautilus /opt/arch/       #把ceph-nautilus这个目录同步到/opt/arch这个目录下面,且在目录目录下生成ceph-nautilus目录
# rsync -av /opt/ceph-nautilus/ /opt/arch/       #把ceph-nautilus这个目录里面的文件,同步复制到/opt/arch这个目录下面,不会生成ceph-nautilus目录
# rsync -av --delete /root/repo /opt/arch/       #保持源和目标文件一致,--delete表示删除目标文件夹内多余的文档
# rsync --delete -a -e "ssh -p 22" /null/ ./       #基于ssh安全传输通道传输
rsync user@host:远程目录/
下载: rsync [...]   user@host:远程目录   本地目录
上传: rsync [...]   本地目录   user@host:远程目录
示例:
# rsync -av --delete /root/repo root@10.10.16.210:/opt/remote/         #上传至:/opt/remote/目录下
3、rsync实时同步
要求:
【1】、生成公钥与私钥,完成ssh无密码验证;
# ssh-keygen             #源主机:ceph-admin,生成/root/.ssh/id_rsa
# ssh-copy-id root@ceph-01     #把公钥复制到:ceph-01:/root/.ssh/authorized_keys 的这个文件中;
源主机: ceph-admin:/root/.ssh/known_hosts 里面内容是源主机登陆目标主机的日志信息;
【2】、监控目录内容变化:
# yum install inotify-tools     #安装inotify-tools工具,需要先yum install epel-release 安装epel源
inotifywait #监控程序
基本用法:
inotifywait     [选项]     目标文件夹
常用命令选项:
-m:       持续监控(捕获一个事件后不退出)
-r:       递归监控、包括子目录及文件
-q:       减少屏幕输出信息
-e:       指定监视的modify,move,create,delete,attrig等事件类别;
监视文件夹的变化:
# inotifywait -rmq /root/repo/           #另开一个shell窗口,在/root/repo目录下面操作创建文件,可以看到相关的信息输出
/root/repo/ CREATE wowo.txt
/root/repo/ OPEN wowo.txt
/root/repo/ ATTRIB wowo.txt
/root/repo/ CLOSE_WRITE,CLOSE wowo.txt
书写实时同步脚本:
# vim irsync.sh
#! /bin/bash
while inotifywait -rqq /root/repo/     #qq代表屏幕输出
do
  rsync -a --delete /root/repo root@ceph-01:/opt/remote/
done
# chmod +x irsync.sh
# ./irsync.sh &              #后台执行
# fg                     #调度到前台执行, Ctrl+z 暂停并调度到后台
# bg 1                   #让任务1在后台运行起来
创建配置文件:
# cat /etc/rsyncd.conf
uid = rsync
gid = rsync
use chroot = no
max connections = 4
timeout = 900
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
fake super = yes		#旧版本不需要,新版本需要,不然在centos 7上面会报:rsync: chgrp xxx (in test) failed: Operation not permitted (1)
[data]
path = /data/
ignore errors
read only = false
list = false
host allow = 10.0.0.0/8
host deny = 192.168.1.1/32
auth users = rsync_backup					#不需要创建系统用户
secrets file = /etc/rsync.password			#保存用户和密码的文件
# echo "rsync_backup:oldboy" > /etc/rsync.password		#属主是root
# chmod 600 /etc/rsync.password
# useradd -s /bin/nologin rsync
# chown -R rsync.rsync /data以
以上服务端配置完毕。
客户端操作:
# echo "oldboy" > /etc/rsync.password		      #生成密码文件, 只保存密码
# chmod 600 /etc/rsync.password				  #属主是root客
客户端同步文件至服务器端:
# rsync -avz /opt/software/node_exporter/ rsync_backup@10.10.17.244::data --password-file=/etc/rsync.password
客户端排除同步的文件名:
--exclude=a          	  #排除单个文件名为:a
--exclude={a,b}	           #排除多个文件名为:a、b
--exclude={a..z}	          #排除多个文件名从a到z
--exclude-from=文件名	       #排除的文件名写到一个文件中
服务器端排除文件:
exclude=a b	            			#排除a 和 b 这2个文件名
                    
                
                
            
        
浙公网安备 33010602011771号