如何排除 rsync/rsnapshot 中的符号链接

如何排除 rsync/rsnapshot 中的符号链接

我用来rsnapshot管理我的备份。该文件/home/foo/bar是文件夹的符号链接,我想排除它。该--exclude选项不起作用,因为如果模式以 a 结尾,/那么它将仅匹配目录,而不匹配符号链接。

我怎么能这样做呢?

手册rsync页说:

如果模式以 a 结尾,/则它将仅匹配目录,而不匹配常规文件、符号链接或设备。

所以我要问的是:如何从rsnapshot文件夹的符号链接中排除?

如果链接是/home/foo/bar,则以下哪一行配置是正确的?

exclude /home/foo/bar/

exclude /home/foo/bar

exclude /home/foo/bar**

exclude /home/foo/bar***

这是我现在使用的配置文件:

config_version  1.2
snapshot_root   /media/satellite/rsnapshot/

cmd_cp      /bin/cp
cmd_rm      /bin/rm
cmd_rsync   /usr/bin/rsync
cmd_logger  /usr/bin/logger

retain      hourly  6
retain      daily   7
retain      weekly  4

verbose     2
loglevel    3

lockfile    /var/run/rsnapshot.pid

exclude /home/roberto/media/
exclude /home/roberto/media
exclude /home/roberto/media**
exclude /home/roberto/media***

backup  /home/      localhost/
backup  /etc/       localhost/
backup  /usr/local/ localhost/
backup  /var/www/   localhost/

/home/roberto/media符号链接在哪里/media,即目录

答案1

除非您在配置文件中设置rsync_short_args或,否则您将使用 来执行复制。rsync_long_argsrsnapshotrsync -a

默认操作是rsync -a将符号链接复制为符号链接,并忽略符号链接的目标。 (显然,如果符号链接的目标位于源文件树中,它将被复制,但这是因为它的位置而不是因为它是包含的符号链接的目标。)

如果你想排除符号链接本身,你只需要在一行中引用它exclude

exclude /foo/bar

我没有包含前导,/home因为这是源树的根,并且过滤器始终基于源的根。

相关内容