其他分享
首页 > 其他分享> > 已整理-rsync+inotify文件实时同步

已整理-rsync+inotify文件实时同步

作者:互联网

 

目录:

  1、rsync本地同步操作

  2、rsync远端同步操作

  3、rsync+inotify实时同步

 

1、rsync本地同步操作

语法:rsync [选项...] 源目录 目标目录

 

功能:同步与复制的差异
复制:完全拷贝源到目标
同步:增量拷贝,只传输变化过的数据

参数详解:

-n:       测试同步过程,不做实际修改
--delete:   删除目标文件夹内多余的文档
-a:       归档模式,相当于-rlptglD
-v:       显示详细操作信息
-z:       传输过程中启用压缩/解压
-r:       递归,包括目录/子目录及所有文件
-l:       保留符号链接文件
-p/-t:     保留文件的权限、时间标记
-o/-g:     保留文件的属主/属组标记
-D:       保留设备文件及其它特殊文件

 

示例:

# 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表示删除目标文件夹内多余的文档

 

 

2、rsync远端同步操作
列出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在后台运行起来

 

标签:opt,repo,rsync,inotify,实时,ceph,root,目录
来源: https://www.cnblogs.com/reachos/p/16391148.html