rsync:仅在一个目录中排除特定文件类型

rsync: Exclude specific filetype in only one directory

我使用 rsync 备份我的数据,并希望仅排除一个目录(及其子目录)中的特定文件类型。例如我有:

$ ls Source/
Folder1/a.tar
Folder1/b.dat
Folder2/c.tar
Folder2/d.dat
Folder2/Subfolder3/e.tar
Folder2/Subfolder3/f.dat
Folder2/Subfolder3/g.pdf

现在我想同步除 .tar 文件之外的所有文件 Folder2 及其子文件夹。最后它应该是这样的:

$ ls Target/
Folder1/a.tar
Folder1/b.dat
Folder2/d.dat
Folder2/Subfolder3/f.dat
Folder2/Subfolder3/g.pdf

有人知道怎么做吗?我尝试了 --exclude 选项,但没有成功。

rsync 手册说

INCLUDE/EXCLUDE PATTERN RULES
...
       o      use ’**’ to match anything, including slashes.

所以你可以做到

rsync -a --exclude='Folder2/**.tar' Source/ Target

请注意,这不同于 bashglobstar 选项,您将在其中使用 Folder/**/*.tar