Linux下rsync设置+inotify设置文件同步

rsync设置

一、安装rsync(一般系统自带)

sudo apt-get install rsync

二、服务端配置
拷贝样例
sudo cp /usr/share/doc/rsync/examples/rsyncd.conf /etc/
配置rsyncd.conf
sudo vi /etc/rsyncd.conf
添加并修改rsyncd.secrets权限
sudo chmod 600 /etc/rsyncd.secrets
启动rsync
sudo rsync --daemon

三、客户端配置
添加并修改rsyncd.secrets权限(可非root)
sudo chmod 600 /etc/rsyncd.secrets
执行
sudo rsync -vzrtopg --delete --exclude "logs/" --progress backup@202.99.11.120::modu_name /opt/test --password-file=/etc/rsyncd.secrets

四、rsync命令参数
-v, --verbose 详细模式输出
-q, --quiet 精简输出模式
-c, --checksum 打开校验开关,强制对文件传输进行校验
-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
-r, --recursive 对子目录以递归模式处理
-R, --relative 使用相对路径信息
-b, --backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用--suffix选项来指定不同的备份文件前缀。
--backup-dir 将备份文件(如~filename)存放在在目录下。
-suffix=SUFFIX 定义备份文件前缀
-u, --update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件。(不覆盖更新的文件)
-l, --links 保留软链结
-L, --copy-links 想对待常规文件一样处理软链结
--copy-unsafe-links 仅仅拷贝指向SRC路径目录树以外的链结
--safe-links 忽略指向SRC路径目录树以外的链结
-H, --hard-links 保留硬链结
-p, --perms 保持文件权限
-o, --owner 保持文件属主信息
-g, --group 保持文件属组信息
-D, --devices 保持设备文件信息
-t, --times 保持文件时间信息
-S, --sparse 对稀疏文件进行特殊处理以节省DST的空间
-n, --dry-run现实哪些文件将被传输
-W, --whole-file 拷贝文件,不进行增量检测
-x, --one-file-system 不要跨越文件系统边界
-B, --block-size=SIZE 检验算法使用的块尺寸,默认是700字节
-e, --rsh=COMMAND 指定使用rsh、ssh方式进行数据同步
--rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息
-C, --cvs-exclude 使用和CVS一样的方法自动忽略文件,用来排除那些不希望传输的文件
--existing 仅仅更新那些已经存在于DST的文件,而不备份那些新创建的文件

五、rsyncd.conf常用配置
motd file = /etc/rsyncd.motd  #rsync启动时欢迎信息页面文件位置(文件内容自定义)
pid file = /var/run/rsyncd.pid  #pid文件的存放位置
port = 873  #默认端口
address =  #自定义ip地址
socket options =  #自定义套接字
listen backlog =  #连接数默认为5

[module_name]  #自定义模块名称
comment = public archive  #模块描述,一同显示给客户,默认没有描述定义
path = /var/www/pub/ #指定该模块的供备份的目录树路径,该参数是必须指定的
use chroot = yes  #默认为true,拥有者、组等信息同步与否
max connections = 10  #最大连接数
log file = /var/log/rsyncd.log  #日志文件位置,启动rsync后自动产生这个文件,无需提前创建
lock file = /var/run/rsyncd.lock  #支持max connections参数的锁文件
read only = yes  #默认为true,客户端只读
list = yes  #默认为true,显示rsync服务端模块列表
uid = nobody  #守护进程默认权限为nobody
gid = nogroup  #守护进程默认权限为nogroup
exlude =  #例外文件
exclude from =  #例外模块文件
include =  #包含文件
include from =  #包含模块文件
auth users = test  #认证用户列表,默认情况下无需密码就可以连接模块
secrets file = /etc/rsyncd.secrets  #定义用户名:密码对的文件
strict modes = yes  #该选项指定是否监测密码文件的权限,如果该选项值为true那么密码文件只能被rsync服务器运行身份的用户访问,其他任何用户不可以访问该文件。默认值为true。
hosts allow =  #允许的地址,逗号隔开
hosts deny =  #不允许的地址
ignore errors = no  #指定rsyncd在判断是否运行传输时的删除操作时忽略server上的IP错误
ignore nonreadable = yes  #指定rysnc服务器完全忽略那些用户没有访问权限的文件。这对于在需要备份的目录中有些文件是不应该被备份者得到的情况是有意义的。
transfer logging = no  #是否使rsync服务器使用ftp格式的文件来记录下载和上载操作在自己单独的日志中
timeout = 600  #超时时间
log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes.  #日志格式
refuse options = checksum dry-run  #通过该选项可以定义一些不允许客户对该模块使用的命令参数列表
dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz  #用来指定那些不进行压缩处理再传输的文件

[其他查看文档:https://download.samba.org/pub/rsync/rsyncd.conf.html]

inotify设置


一、安装inotify-tools

sudo apt-get install inotify-tools

二、两个命令
inotifywait:用于等待文件或文件集上的一个特定事件,它可以监控任何文件和目录设置,并且可以递归地监控整个目录树。
inotifywatch:用于收集被监控的文件系统统计数据,包括每个inotify事件发生多少次等信息

三、inotifywait参数
-m, 即--monitor,表示始终保持事件监听状态。
-r, 即--recursive,表示递归查询目录。
-q, 即--quiet,表示打印出监控事件。
-e, 即--event,通过此参数可以指定要监控的事件,常见的事件有modify、delete、create、attrib等

四、配置文件
/proc/sys/fs/inotify/
max_queued_events:inotify队列最大长度,如果值太小,会出现"** Event Queue Overflow **"错误,导致监控文件不准确
max_user_watches:要同步的文件包含多少目录,可以用:find /home/test/ -type d | wc -l 统计,必须保证max_user_watches值大于统计结果(这里/home/test/为同步文件目录)
max_user_instances:每个用户创建inotify实例最大值

五、监听
inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e close_write,modify,delete,create,attrib,move /opt/test/


实例:
rsync+inotify脚本
#!/bin/bash

srcdir=/home/user/test/

/usr/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e close_write,modify,delete,create,attrib,move $srcdir |  while read file
do
rsync -vzrtopg $srcdir --delete user@10.1.1.100::ftp  --password-file=/home/user/a.txt
echo "${file} was rsynced" >> /tmp/rsync.log 2>&1
done

作者测试环境说明:
系统: ubuntu 14.04 LTS
rsync版本: 3.1.0
inotify版本:



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值