在 rsnapshot 下运行的 rsync 没有创建硬链接,为什么?

在 rsnapshot 下运行的 rsync 没有创建硬链接,为什么?

我有 rsnapshot 为我做备份。但是,每个备份都是源数据的完整大小。它不会创建硬链接,而是在每次怂恿时都会创建单个(未更改的)文件的新副本。我已经通过相互检查 inode 编号以及计算硬链接(没有)来验证每个备份中是否创建了新文件。

问题似乎发生在 rsync 阶段。 rsync 看起来每次都会传输每个文件。原因是">f..T......",据我了解,它正在根据备份的不同时间戳传输和创建一个全新的文件。事实上,时间戳有很大不同,例如在本地系统上:

Access: 2024-03-18 10:14:28.285098766 +0000
Modify: 2023-11-23 21:04:36.000000000 +0000
Change: 2024-03-10 21:11:26.107904822 +0000
Birth: 2023-12-02 19:22:02.022412357 +0000

以及备份上的相同文件:

Access: 2024-03-18 10:14:29.369122130 +0000
Modify: 2024-03-18 10:14:30.609148859 +0000
Change: 2024-03-18 10:14:31.817174900 +0000
Birth: 2024-03-18 10:14:29.369122130 +0000

这样做的结果是每次备份都需要很长时间并占用大量磁盘空间,这与我的预期恰恰相反。

我相信我可以通过添加--timersnapshot/rsync 配置来“更正”备份上的时间戳来解决此问题。但这与“开箱即用”的工作方式不同,所以我不愿意这样做。

我的具体问题是:

  1. 在这种情况下,备份中的时间戳是否错误?它们实际上应该是什么?
  2. 这里可能出了什么问题?我觉得我可能错过了创建第一个备份的步骤,例如第一个备份应该有--time
  3. 添加--time到配置中是不是一个坏主意,因为默认情况下它并不存在?

答案1

回答我自己的问题:

这个问题完全是由于我的 rsnapshot.conf 中没有--times类似的东西造成的

具体来说,默认的 rsnapshot.conf (通过 github)提供#rsync_short_args -a,虽然我有足够的意识取消注释,但我的版本是rsync_short_args -r, ( --recursive),它让我将所有文件复制到备份,但带有不合适的时间戳,如原始版本所示问题。

我还检查了与我的发行版一起下载的默认 rsnapshot.conf,因此-a我们将将此事件视为完全是我的错。

相关内容