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

Oph*_*erV 8 macos rsync fswatch

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

rsync -rtuv /dir1 /dir2

我怎样才能实现这个目标fswatch

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

Dan*_*hka 21

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 Code Online (Sandbox Code Playgroud)

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

Rsync选项:

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

你需要fswatch:

brew install fswatch
Run Code Online (Sandbox Code Playgroud)

  • 非常好的忍者帖子.也许在`fswatch`之后使用`-or`会更好,因为递归. (4认同)
  • 请注意:即使您排除了某些内容,fswatch 也会扫描整个树。https://github.com/emcrisostomo/fswatch/issues/151。也就是说,您的“node_modules”(如果有的话)将被完全扫描。 (2认同)