如何在rsnapshot中截断备份path

我不确定这个标题是否真的是合适的。 我在我的rsnapshot.conf中有一行

backup [email protected]:/mnt/rsnapshot/ srv01/ 

因此,rsnapshot会创build一个导向器RSNAPSHOT_ROOT/daily.0/srv01/mnt/rsnapshot ,并将备份的文件放在那里。 对我来说, /mnt/rsnapshot部分是不必要的。 我宁愿直接在RSNAPSHOT_ROOT/daily.0/srv01/备份我的备份文件。 有没有办法做到这一点?

rsnapshot使用rsync rsnapshot标志来保存path名信息。 在大多数情况下,您可能确实希望保留(至less部分)该信息,特别是在备份本地目录时。 但是,在你的情况下,你真的不需要保留前导path前缀。

使用合理的最新版本的rsync (v.2.6.7 +),您可以明确地控制path名前缀的部分,即通过在所需的分割点处插入一个./保存。 ./并不能有效地改变path名,但是它确实告诉rsync你只想保留./的path名部分。 既然你想切断整个path名,那么你只需将./添加到源path的末尾,如下所示:

 backup [email protected]:/mnt/rsnapshot/./ srv01/ 

编辑

好吧,看起来这个./技巧在这种情况下是rsnapshot ,因为rsnapshot剥离了尾部的/ 。 相反,您应该可以通过在backup行中添加第四列来禁用每个备份点的--relative选项,如下所示:

 backup [email protected]:/mnt/rsnapshot/ srv01/ +rsync_long_args=--no-relative 

+rsync_long_args告诉rsnapshot追加到其现有的rsync_long_args选项,仅用于当前的备份点。 通过追加--no-relativersync_long_args ,可以达到closures相关效果。

史蒂文的第一个build议使用./确实与rsnapshot一起工作,你只需要把它两次:

 backup [email protected]:/mnt/rsnapshot/././ srv01/ 

Rsnapshot将删除最后一个斜杠,但第一个点适用于rsync。

这个行为实际上是由rsync的--relative标志控制的。 引用rsync手册 :

-R, – 相对

使用相对path。 这意味着命令行中指定的完整path名称将被发送到服务器,而不仅仅是文件名的最后部分。 当你想同时发送几个不同的目录时,这是特别有用的。 例如,如果你使用这个命令:

 rsync -av /foo/bar/baz.c remote:/tmp/ 

…这将在远程机器的/ tmp /中创build一个名为baz.c的文件。 如果你使用

 rsync -avR /foo/bar/baz.c remote:/tmp/ 

那么将在远程机器上创build一个名为/tmp/foo/bar/baz.c的文件,保留其完整path。 这些额外的path元素被称为“隐含目录”(即上面例子中的“foo”和“foo / bar”目录)。 […]

所以,在你的rsnapshot.conffind以rsync_long_args开头的行。 默认情况下,应该存在--delete --numeric-ids --relative --delete-excluded 。 删除 – 相对选项,应导致预期的结果。