Rsync包含,排除和过滤

时间:2017-01-05 16:31:26

标签: macos scripting include rsync options

我正在尝试编写rsync脚本以快速复制OSx上一个目录中的文件。我遇到了包含和排除选项的问题。例如,我想要复制的目录是:

$HOME/Library/Dir1/RandomDir/cache/

我最初使用rsync来同步缓存目录,但是OSx没有在源路径中使用通配符。我正在使用的命令是:

rsync -avP "$HOME/Library/Dir1/*/cache/" Dest/Dir

当我运行此命令时,OSx无法找到该目录,因为它正在查找Dir1 / * /的字面互穿,并且*未被视为通配符。

接下来我尝试实现--include和--exclude选项,但是我无法让它工作。

我正在使用

rsync -avP --include="*/" --include="cache/" --exclude"*" $HOME/Library/Dir1/ Dest/Dir/

当我运行此命令时,它不会仅复制缓存目录。我的理解是rsync按照输入的顺序实现包含和排除,所以我的逻辑是rsync将包含Dir1目录下的所有内容(处理通配符问题),然后只包含缓存目录,然后它会排除其他一切。我想使用rsync来保存整个副本中的文件属性和时间戳的归档功能。

谁能告诉我这里哪里出错了?我已尝试过该命令的几种变体,例如--include =" / cache"和--exclude =" / *",但显然到目前为止还没有工作。任何帮助都非常感谢。谢谢。

1 个答案:

答案 0 :(得分:0)

我终于找到了我的问题所在。我有双引号的源目录,因此将*解释为文字...无论如何,谢谢。