我正在尝试使用 rsync 备份我的主目录,我想排除一些包含垃圾的目录。我想特别排除/home/ben/.ccache
和/home/ben/build
。不幸的是,rsync 的文档信息过载,没有回答我的问题。这是我尝试过的:
rsync -arv --exclude "/home/ben/.ccache:/home/ben/build" /home/ben /media/ben/thumbdrive/
正确的做法是什么?
答案1
要排除多个目录,只需使用多个--exclude=path
开关。因此,正确编写的问题命令如下:
rsync -arv --exclude=.ccache --exclude=build /home/ben /media/ben/thumbdrive/
笔记:使用带有排除的相对路径。路径相对于源目录,此处为 /home/ben。
答案2
当有多个目录和/或文件需要排除时,请创建一个文本文件并使用开关--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
开头的文件:cf
/var/spool/lpd
另请参阅过滤规则手册页上的部分。
答案3
您还可以用花括号排除多个路径:
rsync -arv --exclude={.ccache,build} /home/ben /media/ben/thumbdrive/