rsnapshot:将最初的备份永久保留吗?

当使用rsnapshot进行备份时,“ 我们首先将以前的备份复制到一个并行目录结构中,创build所有目录并build立到所有文件的硬链接。” 。 这很好。

我认为这意味着最初的备份将永久保留? “较新的”备份只会指向(通过硬链接)旧的备份,所以我假设任何给定硬连接指向的实际文件需要永久保留,以不破坏的东西?

这个假设是正确的吗?

不,这是不正确的。 如果您有多个硬链接到一个文件,那么最初创build文件的哪一个并不重要,只有当删除了该文件的最后一个链接时才会删除文件(请参阅rsnapshot使用的硬链接和符号链接 )在使用rsnapshot的情况下,这意味着每个备份目录都是独立的,可以删除所有其他备份目录(包括最初的目录),并且仍然有一整套数据。

根据您configurationrsnapshot的方式,最终将删除原始备份集。

TL; DR:没有。

这取决于你定义的“初始备份”。

您首先创build一个备份( hourly.0 ),其中包含今天的所有文件。

在下一次迭代中,它将“复制”文件( cp -L ,只是将链接复制到数据),到hourly.1文件夹。

如果所有的文件和以前一样,rsync不会写任何东西,所以你有一个文件的数据块(让我们用myfile.jpg )和两个链接( hourly.0/myfile.jpghourly.1/myfile.jpg )指向驱动器上的相同文件。

在下一次迭代中没有改变,你仍然有相同的数据,只是另一个指针( hourly.2/myfile.jpg )指向这些数据。 如果你设置了3个备份,那么它将会hourly.2删除hourly.2 ,每小时1 hourly.1hourly.2 hourly.2 ,每小时hourly.1hourly.2hourly.0hourly.1复制一次(创build硬链接) hourly.0 ,然后再次运行rsync。

如果文件更改,rsync将hourly.0/myfile.jpg “移除”文件(实际上只是链接) hourly.0/myfile.jpg (数据保留在驱动器上,因为仍有两个链接指向它)。 然后Rsync将用新的myfile.jpg创build一个新的文件(链接+数据)。

所以现在你有一个数据块,一个链接为新文件,一个块有两个链接到旧版本的文件。

在下一次迭代时,它会删除hourly.2 (旧文件的数据less一个链接),“复制”(硬链接)新文件(新文件的新链接,新文件有两个指针数据,还有一个用于旧版本的数据。

在下一次迭代中,它将删除旧版本的最后一个链接(没有指向它的链接的数据,被文件系统认为是自由的,并且在需要时将被覆盖),以及三个链接指向新的文件数据。

如果存在指向数据的链接(不pipe从哪个目录),则该数据保留在驱动器上。 只有一次你删除所有的链接,那么数据可以覆盖。