rsync 创建排除的目录

rsync 创建排除的目录

我对 rsync 如何包含/排除文件和目录感到困惑。我有一个排除文件:

/home/pi/rsync-exclude.txt

内容:

/proc/*
/sys/*
/dev/*
/boot/*
/tmp/*
/run/*
/mnt/*
/media/*

.Trashes
._.Trashes
.fseventsd
.Spotlight-V100
.DS_Store
.AppleDesktop
.AppleDB
Network Trash Folder
Temporary Items

.bash_history
/etc/fake-hwclock.data
/var/lib/rpimonitor/stat/

我使用以下 rsync 语法:

sudo rsync -avH --delete-during --delete-excluded --exclude-from=/home/pi/rsync-exclude.txt / /mnt/

但是 rsync 正在创建目录 /mnt/proc、/mnt/sys 等。它们是空的,但我希望它们根本不存在。

我可以使用不同的语法来使 rsync 完全忽略目录吗?

答案1

您的表达式排除目录的内容 ( /foo/*),而不是目录本身 ( /proc)。例如:

$ mkdir -p foo/{1..3}/{1..3}
$ cat exclude.txt 
/1/*
/2
$ rsync -avH --exclude-from=exclude.txt foo/ bar
sending incremental file list
created directory bar
./
1/
3/
3/1/
3/2/
3/3/

sent 296 bytes  received 89 bytes  770.00 bytes/sec
total size is 0  speedup is 0.00

可以看出,只需使用目录路径就足以排除它及其所有内容。奇怪的是,您在排除列表的末尾使用了它:

/var/lib/rpimonitor/stat/

相关内容