1 背景

在使用rsync进行文件同步的时候,需要排除一些文件或目录。此时可使用rsync命令的–exlude选项,使用方法如下:

rsync [OPTIONS] --exclude 'file_or_directory' source/ destination/

通过文件样式排除文件

rsync -av --exclude 'test*' sourcedir/ destinationdir/
rsync -av --exclude '*3' sourcedir/ destinationdir/
rsync -av --exclude '*.iso' sourcedir/ destinationdir/

根据文件大小排除

通过文件大小进行排除的时候,不能使用–exclude选项

rsync -av --max_size=500m sourcedir/ destinationdir/  # 排除所有大于500MB的文件
rsync -av --min_size=1m sourcedir/ destinationdir/  # 排除所有小于1MB的文件

排除多个文件或目录

rsync -av --exclude '*.txt' --exclude 'dir3' --exclude 'dir4' sourcedir/ destinationdir/

上面的命令可以简化为如下形式:

rsync -av --exclude={'*.txt','dir3','dir4'} sourcedir/ destinationdir/

从列表中移除文件和列表

当有大量的文件或目录需要移除的时候,可使用–exclude-from选项。首先需要创建一个文本文件,里面包含需要排除的文件或目录,假设文本文件名称为list.txt,内容如下:

testfile2.txt
*.txt
dir3
dir4
test*
*2*

则使用下面的命令进行排除:

rsync -av -- exclude-from={'list.txt'} sourcedir/ destinationdir/

Reference

https://phoenixnap.com/kb/rsync-exclude-files-and-directories