我不确定这个标题是否真的是合适的。 我在我的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-relative到rsync_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 。 删除 – 相对选项,应导致预期的结果。