inotify
一种强大的、细粒度的、异步文件系统监控机制,它满足各种各样的文件监控需要,可以监控文件系统的访问属性、读写属性、权限属性、创建、删除、移动等操作。inotify-tools 是一个C库和一组命令行的工作提供Linux下inotify的简单接口,inotify-tools安装后会得到inotifywait和inotifywatch命令
inotifywait
监控有关文件的各种变化
inotifywait [-hcmrq] [-e <event> ] [-t <seconds> ] [--format <fmt> ] [--timefmt <fmt> ] <file> [ ... ]
| 选项 | 说明 |
|---|---|
| --fromfile < file > | 指定从文件中读取排除文件列表 |
| -m, --monitor | 事件第一次发生后不退出,而是继续监听 |
| -d, --daemon | 后台持续运行,需要配合--outfile指定日志输出文件 |
| -o, --outfile | 输出事件到文件中而不是标准输出 |
| -s, --syslog | 输出错误到syslog中而不是标准错误 |
| -r, --recursive | 递归监听子目录,忽略符号链接 |
| -q, --quiet | 输出少量的信息 |
| --exclude < pattern > | 排除指定文件,大小写敏感 |
| --excludei < pattern > | 排除指定文件,大小写不敏感 |
| -t < seconds >, --timeout < seconds > | 指定事件的超时时间 |
| -e < event >, --event < event > | 指定监听的时间,可使用多次 |
| -c, --csv | 输出格式为CSV格式 |
| --format < fmt > | 指定输出的格式 |
输出格式的详细信息请参考
inotifywait的man手册
| 事件 | 说明 |
|---|---|
| access | 目录里的文件被读取了 |
| modify | 目录里的文件被编辑了 |
| attrib | 目录里的文件属性被改变了 |
| close_write | 写模式打开的文件被关闭了 |
| close_nowrite | 只读模式打开的文件被关闭了 |
| close | 打开的文件被关闭了 |
| open | 目录里的文件被打开了 |
| moved_to | 文件或目录被移入了监听的目录 |
| moved_from | 文件或目录被移出了监听的目录 |
| move | 有文件或目录被在监听的目录中被移动了 |
| create | 有文件或目录被在监听的目录中被创建了 |
| delete | 有文件或目录被在监听的目录中被删除了 |
| unmount | 文件所在的文件系统被卸载了 |
inotifywatch
统计文件系统访问的次数
inotifywatch的 使用方法和inotifywait差不多
rsync
rsync是一个远程数据同步工具,只传送两个文件的不同部分
Access via remote shell:
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
Access via rsync daemon:
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
工作模式
rsync 有2种不同的工作模式
shell模式:使用远程shell程序(如ssh或rsh)进行连接,一个冒号时使用这种模式daemon模式:使用TCP直接连接rsync daemon,两个冒号或URL写法时使用这种模式
| 选项 | 说明 |
|---|---|
| -v, --verbose | 输出更详细的信息 |
| -a, --archive | 试用归档模式,等同于-rlptgoD |
| -r, --recursive | 递归处理目录 |
| -u, --update | 忽略接收端中更新的文件 |
| --inplace | 替换接收端的文件 |
| --append | 追加到接收端的文件 |
| -d, --dirs | 不递归处理目录 |
| -l, --links | 保持软链接的形式 |
| -L, --copy-links | 使用软链接对应的源文件 |
| -H, --hard-links | 保持硬连接 |
| -p, --perms | 保留文件的权限 |
| -E, --executability | 保留可执行权限 |
| --chmod=CHMOD | 修改文件权限 |
| -A, --acls | 保留访问策略 |
| -X, --xattrs | 保留额外的属性 |
| -o, --owner | 保留用户属性(只能超级用户使用) |
| -g, --group | 保留组属性 |
| -t, --times | 保留修改时间 |
| --delete | 删除接收端多余的文件 |
| -m, --prune-empty-dirs | 忽略空的文件 |
| --exclude=PATTERN | 排除指定模式的文件 |
| --exclude-from=FILE | 从文件中读取排除模式 |
| --include=PATTERN | 包含指定模式的文件 |
| --include-from=FILE | 从文件中读取包含模式 |
| --files-from=FILE | 从文件中读取传输文件列表 |
| --progress | 显示传输进度 |
| --list-only | 只列出要传输的文件 |
| --daemon | 后台运行 |
参考
Linux下同步工具inotify+rsync使用详解
inotifywait命令
rsync命令
Inotify: 高效、实时的Linux文件系统事件监控框架
Linux-Rsync服务器/客户端搭建实战