当我使用文件夹名称和通配符从删除服务器下载时,我想忽略特定文件夹下的任何文件或文件夹。
我想排除“/*.old/”下的所有文件或文件夹,但该文件夹可以存在于多个位置。
我是否必须指定具有多个条目的位置,例如?或者有一种方法可以让我在旧文件夹出现的任何地方都排除它?
--exclude='*/*.old*/*'
--exclude='*/*/*.old*/*'
--exclude='*/*/*/*.old*/*'
--exclude='*/*/*/*/*.old*/*'
这是我正在使用的命令
rsync -amHAXxzvR --update --numeric-ids --progress --include='*/' --include=*.sas7bdat --exclude='*.old/' --exclude=* -e "ssh -T -c blowfish-cbc -o Compression=yes -x" [email protected]:/XXX/ /mnt/z/XXX/.
我想排除名称为 /sasdata.old/ 的任何文件夹及其子文件夹。此文件夹可以位于任何位置。
答案1
您只需将其指定为不依赖于源树顶部的目录:
--exclude '*.old/'
现在看到你的完整命令后,很清楚为什么你仍然无法让它工作。包含和排除选项从左到右应用:对于任何给定的文件或目录,第一个匹配的文件或目录就是所应用的文件或目录。因此,在您的情况下,您需要先排除不需要的目录,然后再将它们全部包含在内。
看我对超级用户的回答了解完整详情。
尝试这个,
rsync -aHAX -xu -z -v -R --numeric-ids --progress --prune-empty-dirs \
--exclude='*.old/' --include='*/' \
--include='*.sas7bdat' --exclude='*' \
-e "ssh -T -c blowfish-cbc -x" \
[email protected]:/XXX/ /mnt/z/XXX/.