rsync/rsnapshot 和 exlude/include 目录,绝对路径

rsync/rsnapshot 和 exlude/include 目录,绝对路径

我正在使用 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”。

相关内容