Rsync 包含、排除和过滤器
Rsync include, exclude and filters
我正在尝试编写 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="/*",但显然 none 到目前为止有效.非常感谢任何帮助。谢谢你。
我终于找到了我的问题所在。我在双引号中有源目录,因此将 * 解释为文字......无论如何谢谢。
我正在尝试编写 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="/*",但显然 none 到目前为止有效.非常感谢任何帮助。谢谢你。
我终于找到了我的问题所在。我在双引号中有源目录,因此将 * 解释为文字......无论如何谢谢。