文件(目录)实时同步

一: rsync 基本使用方法*参数


rsync常用选项:
 -a, --archive       //归档
 -v, --verbose       //啰嗦模式
 -q, --quiet         //静默模式
 -r, --recursive     //递归
 -p, --perms         //保持原有的权限属性
 -z, --compress      //在传输时压缩,节省带宽,加快传输速度
 --delete            //在源服务器上做的删除操作也会在目标服务器上同步
 --port              //指定端口

二: 安装inotify-tools工具


//查看服务器内核是否支持inotify
[root@ayay-web ~]# ll /proc/sys/fs/inotify/
总用量 0
-rw-r--r-- 1 root root 0 4月  28 15:46 max_queued_events   #设置inotify实例事件(event)队列可容纳的事件数量。
-rw-r--r-- 1 root root 0 4月  28 15:46 max_user_instances  #设置每个用户可以运行的inotifywait或inotifywatch命令的进程数。
-rw-r--r-- 1 root root 0 4月  28 15:46 max_user_watches    #设置inotifywait或inotifywatch命令可以监视的文件数量(单进程)
**如果有这个三个以max开头的文件,则表示服务器内核支持inotify**
#安装inotify的几种方法
#1.rpm安装包    -> 需要提前下载好rpm包,Github下载,需要具有访问github的网络
  wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
  tar xzvf inotify-tools-3.14.tar.gz
  cd inotify-tools-3.14
  ./configure --prefix=/usr/local/inotify-3.14
  make && make install
//2.yum安装      -> 提前配置好自己的镜像仓库源
  # 检查自己的内核版本,如果低于2.6.13,就需要重新编译内核加入inotify的支持。
  uname -r 
  # 备份本地源
  mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak
  # 配置阿里的
  wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
  yum clean all
  yum makecache
  # 如果阿里域名无法解析,配置以下文件
  cat >> /etc/resolv.conf <

三: inotify参数配置(可选)


# 查看系统默认参数值
 sysctl -a | grep max_queued_events
# 结果是:fs.inotify.max_queued_events = 16384
 sysctl -a | grep max_user_watches
# 结果是:fs.inotify.max_user_watches = 8192
 sysctl -a | grep max_user_instances
# 结果是:fs.inotify.max_user_instances = 128
# 修改参数:
sysctl -w fs.inotify.max_queued_events="99999999"
sysctl -w fs.inotify.max_user_watches="99999999"
sysctl -w fs.inotify.max_user_instances="65535"
####################
vi /etc/sysctl.conf #添加以下代码
fs.inotify.max_queued_events=99999999
fs.inotify.max_user_watches=99999999
fs.inotify.max_user_instances=65535
:wq! #保存退出

四: 创建脚本 && inotify基本命令使用

脚本的创建根据实际情况来决定:可选择nohup、crontab等工具


inotifywait命令参数
-m  是要持续监视变化。
-r  使用递归形式监视目录。
-q  减少冗余信息,只打印出需要的信息。
-e  指定要监视的事件列表。
--timefmt 是指定时间的输出格式。
--format  指定文件变化的详细信息。
–timefmt 说明:
Ymd分别表示年月日,H表示小时,M表示分钟
–format 说明:
参数  说明
%w  表示发生事件的目录
%f  表示发生事件的文件
%e  表示发生的事件
%Xe 事件以“X”分隔
%T  使用由–timefmt定义的时间格式
 
可监控的事件:
 
参数    说明
access  访问,读取文件。
modify  修改,文件内容被修改
attrib  属性,文件元数据被修改。
move    移动,对文件进行移动操作。
create  创建,生成新文件
open    打开,对文件进行打开操作
close   关闭,对文件进行关闭操作。
delete  删除,文件被删除。
########详细配置 https://blog.csdn.net/weixin_32722049/article/details/116582420 ######
语法格式:inotifywatch [参数]

常用参数:

-a      按指定事件计数的升序排序输出
--d     按指定事件计数的降序排序输出
-fromfile        从文件中读取需要监控的文件或排除的文件
-z     输出表格的行和列,即使元素为空
-r     监视一个目录下的所有子目录
-t     设置超时时间
-e      只监听指定的事件
-- -exclude   不处理文件名与指定的POSIX扩展,区分大小写
-- -excludei  不处理文件名与指定的POSIX扩展,不区分大小写

五: 交互式 ?? 非交互式

  1. 交互式的操作可以在脚本中使用expect命令,从而达到全自动的效果。
    expect 命令的具体使用方法 — (后期整理)
  2. 非交互式可以选择
    2.1 在rsync的配置中配置相关的目录、用户、密码等信息。
    2.2 配置密钥认证

发表回复