如何用rsync排除多个目录?
我试图使用rsync备份我的主目录,我想排除一些包含垃圾的目录。 我想特别排除/home/ben/.ccache
和/home/ben/build
。 不幸的是rsync的文档是信息过载,并没有回答我的问题。 这是我试过的:
rsync -arv --exclude "/home/ben/.ccache:/home/ben/build" /home/ben /media/ben/thumbdrive/
这样做的正确方法是什么?
好吧,我觉得真的很蠢。 在我发布这个问题之前,我的朋友告诉我该怎么做,这很简单。 要排除多个目录,只需使用多个--exclude=path
开关。 所以我上面的命令写得如下:
rsync -arv --exclude=.ccache --exclude=build /home/ben /media/ben/thumbdrive/
当要排除多个目录和/或文件时,请创建一个文本文件并使用--exclude-from
开关。 创建一个名为exclude_me.txt
的文件,并在其中列出您的排除项。 示例( /home/ben/exclude_me.txt
):
.ccache build .java .gvfs .xsession-errors
然后你的rsync看起来像:
rsync -arv --exclude-from='/home/ben/exclude_me.txt' /home/ben /media/ben/thumbdrive/
这是有关过滤规则的一些信息,可能会有所帮助:
-
/dir/
表示排除根文件夹/dir
-
/dir/*
表示获取根文件夹/dir
但不是内容 -
dir/
表示在名称中包含dir/
任何位置排除任何文件夹 -
示例排除:
/dir/, /usr/share/directory/, /var/spool/dir/ /var/spool/lpd/cf
表示在/var/spool/lpd
任何文件夹中跳过以cf
开头的文件
另请参见手册页上的过滤规则部分。
您还可以在花括号中排除多个路径:
rsync -arv --exclude={.ccache,build} /home/ben /media/ben/thumbdrive/