Fre*_*Ben 219 command-line rsync
我正在尝试使用 rsync 备份我的主目录,并且我想排除一些包含垃圾的目录。我想特别排除/home/ben/.ccache和/home/ben/build。不幸的是,rsync 的文档信息过载,并没有回答我的问题。这是我尝试过的:
rsync -arv --exclude "/home/ben/.ccache:/home/ben/build" /home/ben /media/ben/thumbdrive/
Run Code Online (Sandbox Code Playgroud)
这样做的正确方法是什么?
Fre*_*Ben 283
好吧,我真的觉得很愚蠢。在我发布这个问题之前,我的朋友向我展示了如何去做,这真的很简单。要排除多个目录,您只需使用多个--exclude=path开关。所以我上面正确写的命令如下:
rsync -arv --exclude=.ccache --exclude=build /home/ben /media/ben/thumbdrive/
Run Code Online (Sandbox Code Playgroud)
注意:使用排除的相对路径。路径是相对于源目录的,这里是 /home/ben。
use*_*759 130
当有多个目录和/或文件要排除时,制作一个文本文件并使用--exclude-from开关。创建一个名为的文件,exclude_me.txt并在其中列出您的排除项。示例 ( /home/ben/exclude_me.txt):
.ccache
build
.java
.gvfs
.xsession-errors
Run Code Online (Sandbox Code Playgroud)
然后你的 rsync 看起来像这样:
rsync -arv --exclude-from='/home/ben/exclude_me.txt' /home/ben /media/ben/thumbdrive/
Run Code Online (Sandbox Code Playgroud)
这是有关过滤规则的一些信息,可能会有所帮助:
/dir/ 表示排除根文件夹 /dir/dir/*意味着获取根文件夹/dir而不是内容dir/ 意味着排除名称包含的任何文件夹 dir/
排除的示例:/dir/, /usr/share/directory/, /var/spool/dir/
/var/spool/lpd/cf意味着跳过以其中cf任何文件夹开头的文件/var/spool/lpd
另请参阅手册页上的过滤规则部分。
小智 101
您还可以排除大括号内的多个路径:
rsync -arv --exclude={.ccache,build} /home/ben /media/ben/thumbdrive/
Run Code Online (Sandbox Code Playgroud)