如何使用 rsync 的包含和排除优先级?

How to use include and exclude precedence with rsync?

我正在尝试使用 rsync 备份一台机器,在阅读了大量 SO QA 和手册页之后,我仍然无法理解 include/exclude 优先级的工作原理,因此我可以传输正确的文件集.混淆具体细节,我正在尝试以下操作:

递归包含:

/home/erik/foo
/home/erik/bar
/home/erik/baz

递归地包含 /git,但 排除 一些特定的子目录,例如 /git/src/github.com/foo/git/src/github.com/bar

到目前为止,我 认为 的 rsync 命令应该可以完成此操作。它没有,我已经尝试了很多以不同方式失败的变体:

rsync -am \
  --include='*/' \
  --include='/home/erik/foo' \
  --include='/home/erik/bar' \
  --include='/home/erik/baz' \
  --include='/git' \
  --exclude='/git/bin' \
  --exclude='/git/src/github.com/foo' \
  --exclude='/git/src/github.com/bar' \
  --exclude='*' \
  / nfs.example.com:/data/pool/backup/laptop

一些具体问题:

我不确定是否有更原生的方式来交叉 post 一个答案,但我在 Stack Exchange 上询问并得到了 this excellent answer that solved what I was trying to do perfectly, with context