rsnapshot :初始备份会永久保留吗?

sbr*_*tla 4 rsnapshot

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

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

这个假设正确吗?

Sve*_*ven 11

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

根据您配置 rsnapshot 的方式,它最终会删除原始备份集。


mul*_*laz 6

TL;博士:没有。

这取决于您定义“初始备份”的内容。

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

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

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

在没有更改的下一次迭代中,您仍然拥有相同的数据,只是另一个指向hourly.2/myfile.jpg该数据的指针 ( )。如果您已将其设置为保留 3 个备份,那么它将删除hourly.2、移动hourly.1hourly.2、移动hourly.0hourly.1、从“复制”(创建硬链接)hourly.1到创建hourly.0,然后再次运行 rsync。

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

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

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

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

如果存在指向数据的链接(无论来自哪个目录),则该数据将保留在驱动器上。只有删除所有链接后,数据才会被覆盖。