我正在使用 rsnapshot 并且想通过绝对路径排除一个目录。
我在 rsnapshot.conf 中添加了exclude /home/user/data
rsnapshot 将使用这个 rsync 命令:
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded \
--exclude=/home/user/data /home \
/backupdir/hourly.0/localhost/
并且它可以工作,它排除了/home/user/data
目录,但我不清楚它为什么会起作用。阅读 rsync 的手册页(例如这个答案https://askubuntu.com/a/349625)以 / 开头的排除/包含模式锚定在传输的根目录,所以我认为它会失败,因为它试图排除
/home/home/user/data
有人可以澄清我这一点吗?
使用绝对路径排除目录的正确方法是什么?
谢谢您的帮助
答案1
我知道这已经很老了,但只是为了记录......
--exclude 指定图案,而不是目录树“/home”中的位置。同步不会向该模式添加任何内容。因此,由于您已指定--relative,因此不会添加/重复“/home”。
如果您在 rsync 命令中添加 -iv,rsync 将列出它将处理的“/home”中的所有目录和文件。您会注意到,由于排除模式“/home/user/data/”,任何包含“/home/user/data”的目录项都将被隐藏
如果您使用了 --exclude=data,那么名称中带有“data”的所有目录项都将被省略。例如,/home/user/data、/home/user2/data 或 /home/user3/data 也将被省略。因为所有目录中都包含模式“data”。