我使用 rsync 作为外部硬盘的备份工具。不过,我想通过不复制多个程序的无用缓存文件来节省时间。我想通过省略位于树中某个名为 Cache、cache 或 cache2 的文件夹下的每个文件来实现此目的。实际上,暗示完整路径中的缓存文件夹的名称的任何变体。
它们可以位于以下路径中:
.cache/google-chrome/Default/Cache/1e1cb5d5222c54c4_0
.cache/mozilla/firefox/smifthya.default/cache2/entries/15444D7EEEAF61418021BC35F25FD997974458B5
Run Code Online (Sandbox Code Playgroud)
因此,我尝试通过以下几行排除这些缓存文件,到目前为止尚未成功。
到目前为止我尝试过的:
rsync -va --delete --exclude={*Cache*, *cache*} /var/www/ $MYEXDISK/www
rsync -va --delete --exclude '*cache*' /var/www/ $MYEXDISK/www
rsync -va --delete --exclude 'cache*' /var/www/ $MYEXDISK/www
rsync -va --delete --exclude={Cache*, cache*} /var/www/ $MYEXDISK/www
Run Code Online (Sandbox Code Playgroud)
谁能告诉我排除任何文件的正确语法,在该文件的路径中存在缓存或缓存的变体?
我相信你想要:
set -B- 大括号扩展模式(可能是可选的)
rsync -va --delete --exclude={**/Cache*,**/cache*} /var/www/ $MYEXDISK/www
请参阅YoLinux,然后搜索INCLUDE/EXCLUDE PATTERN RULES. 相关信息是:
使用“**”来匹配任何内容,包括斜杠。
这{...,...,...}称为支撑扩展。它有非常具体的规则。
echo --exclude={foo,bar}=>--exclude=foo --exclude=barecho --exclude={foo, bar}=>--exclude={foo, bar}echo --exclude={foo}=>--exclude={foo}echo --exclude=\'{foo,bar}\'=>--exclude='foo' --exclude='bar'echo --exclude=\'{"foo bar",baz}\'=>--exclude='foo bar' --exclude='baz'echo --exclude={'foo bar',baz}=>--exclude=foo bar --exclude=bazecho --exclude=\'{foo bar,baz}\'=>--exclude='{foo bar,baz}'| 归档时间: |
|
| 查看次数: |
2488 次 |
| 最近记录: |