它出现在下面的代码中,rsync
忽略--exclude
. 我将如何更正它并将其扩展到多个目录?
$ rsync --help | grep Usage
Usage: rsync [OPTION]... SRC [SRC]... DEST
$ man rsync | grep -- '--exclude'
--exclude=PATTERN exclude files matching PATTERN
$ sudo rsync -avz --exclude='/home/erwann/.cache/' '/home/erwann' '/run/media/erwann/bkup'
sending incremental file list
erwann/.cache/mozilla/firefox/otj9do4j.default-release/cache2/
erwann/.cache/mozilla/firefox/otj9do4j.default-release/cache2/index
erwann/.cache/mozilla/firefox/otj9do4j.default-release/cache2/doomed/
erwann/.cache/mozilla/firefox/otj9do4j.default-release/cache2/entries/
模式考虑路径名中不属于源路径的部分。
.cache
这意味着要匹配直接位于源路径下的目录/home/erwann
,您将使用/erwann/.cache/
as 模式(因为/home
目录是rsync
用作“传输根目录”的目录):通过将排除模式锚定在路径的顶部
/
,我们避免在文件层次结构的较低部分匹配它。/
如果在源路径的末尾添加,/home/erwann
则成为“传输根”,因此可以将模式缩短为/.cache/
. 但是,我们现在还必须添加erwann
到目标路径才能获得与以前相同的效果:从
rsync
手册: