我不确定标题是否正确。我的 rsnapshot.conf 中有一行
backup [email protected]:/mnt/rsnapshot/ srv01/
因此 rsnapshot 会创建一个目录RSNAPSHOT_ROOT/daily.0/srv01/mnt/rsnapshot
并将备份文件放在那里。对我来说,这/mnt/rsnapshot
部分是不必要的;我宁愿直接将备份文件放在 中RSNAPSHOT_ROOT/daily.0/srv01/
。有什么方法可以实现这一点吗?
答案1
rsnapshot
使用--relative
标志来rsync
保存路径名信息。在大多数情况下,您可能确实希望保留(至少部分)该信息,尤其是在备份本地目录时。但是,就您而言,您确实不需要保留前导路径前缀。
使用较新的版本rsync
(v.2.6.7+),您可以通过在所需的切点处--relative
插入 来明确控制要保存的路径名前缀部分。不会有效地更改路径名,但它会告诉您只想保留 后面的路径名部分。由于您想切断整个路径名,只需将 附加到源路径的末尾,如下所示:./
./
rsync
--relative
./
./
backup [email protected]:/mnt/rsnapshot/./ srv01/
编辑
好的,看起来这个./
技巧在这种情况下不起作用,因为rsnapshot
删除了尾随的/
。相反,您应该能够--relative
在每个备份点的基础上禁用该选项,方法是在您的backup
行中添加第四列,如下所示:
backup [email protected]:/mnt/rsnapshot/ srv01/ +rsync_long_args=--no-relative
指示将+rsync_long_args
其rsnapshot
附加到其现有rsync_long_args
选项,仅适用于当前备份点。通过附加--no-relative
到rsync_long_args
,您可以实现关闭 的预期效果--relative
。
答案2
Steven 的第一个建议./
确实适用于 rsnapshot,您只需输入两次:
backup [email protected]:/mnt/rsnapshot/././ srv01/
Rsnapshot 将删除最后一个斜杠,但第一个点对于 rsync 有效。
答案3
此行为实际上是由 rsync 的--relative
标志控制的。引用rsync 手册:
-R,--相对
使用相对路径。这意味着命令行上指定的完整路径名会被发送到服务器,而不仅仅是文件名的最后部分。当您想同时发送几个不同的目录时,这特别有用。例如,如果您使用此命令:
rsync -av /foo/bar/baz.c remote:/tmp/
...这将在远程机器的 /tmp/ 中创建一个名为 baz.c 的文件。如果你使用
rsync -avR /foo/bar/baz.c remote:/tmp/
那么将在远程计算机上创建一个名为 /tmp/foo/bar/baz.c 的文件,并保留其完整路径。这些额外的路径元素称为“隐含目录”(即上例中的“foo”和“foo/bar”目录)。[...]
因此,在rsnapshot.conf
find 中,以 开头的行应该存在rsync_long_args
。默认情况下,--delete --numeric-ids --relative --delete-excluded
应该存在。删除该--relative
选项应该会产生所需的结果。