如何使用fswatch和rsync自动同步目录?

时间:2016-01-03 10:12:21

标签: macos rsync fswatch

我想使用rsync自动在两个本地目录之间运行单向同步。意味着在/dir1或其子目录中检测到更改时,应运行以下命令:

rsync -rtuv /dir1 /dir2

如何使用fswatch来实现此目标?

是否可以为rsync提供参数,仅复制fswatch事件给出的已更改的实际文件?

1 个答案:

答案 0 :(得分:19)

alias run_rsync='rsync -azP --exclude ".*/" --exclude ".*" --exclude "tmp/" ~/Documents/repos/my_repository username@host:~'
run_rsync; fswatch -o . | while read f; do run_rsync; done

第二行无条件地运行run_rsync然后 - 当前目录中的每次更改(或指定精确路径而不是.

Rsync选项:

  • -a - 代表“archive”并递归同步并保留符号链接,特殊和设备文件,修改时间,组,所有者和权限。
  • -z - compression
  • -P - 结合了标志--progress和--partial。第一个为您提供转移的进度条,第二个允许您恢复中断的转移
  • - exclude - 按模式排除文件

您需要fswatch

brew install fswatch