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

 

目录:

  1、rsync本地同步操作

  2、rsync远端同步操作

  3、rsync+inotify实时同步

   4、rsyncd 服务模式

 

1、rsync本地同步操作

语法: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安全传输通道传输

 

 

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在后台运行起来

 

4、rsync 服务模式

创建配置文件:

# 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个文件名

 

posted on 2022-06-19 19:20  tengq  阅读(1233)  评论(0编辑  收藏  举报

导航