我对 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/