GNU tar

GNU tar

我最近决定使用以下方法存档一些数据柏油。数据由同一文件夹的大量备份组成;这意味着它包含大量重复项。我读到,由于 Tar 缺少索引,它无法很好地处理包含大量重复项的数据。所以我的问题是 Tar 是否适合存档此类数据?

我最关心的是保存档案中的所有原始数据,这包括所有文件时间戳:创建、修改、访问。

答案1

当然,无论有多少重复文件,Tar 都可以归档这些备份。如果 100 个不同文件夹中有 100 个文件 abc.doc 的重复文件,则该文件将被归档 100 次。但这样做效率不高。

如果备份工具可以删除重复数据,它会识别这 100 个相同的文件,备份其中一个,并引用 99 次。如果其中一个版本发生变化,它会删除引用,并单独备份。

答案2

GNU tar

创建时间:

Linux 并不真正记录文件创建时间。它有ctime时间戳,有时会被误认为是创建时间,但实际上是“inode 更改时间”:它记录上次更改文件或其权限、所有者等的时间。也就是说,它更改的频率比 更高mtimectime时间戳由内核处理,不能由用户设置为任意值(尽管您可以很容易地将其重置为当前时间)。

修改时间:

mtime保存于tar

访问时间:

tar通常会更改原始文件的访问时间。您可以使用标志来阻止这种情况--atime-preserve。您可能还需要--preserve保留权限(以及目录排序顺序)的标签。

我不知道您是否可以tar保留存档文件的 atimes,但您可以通过以下方式修复这些问题:

  1. 解压
  2. 在每个文件上使用touch -a -d TIME FILE(时间格式为[[CC]YY]MMDDhhmm[.ss]
  3. 重新涂焦油tar --atime-preserve

警告--atime-preserve当前使用会记住 atime,因此在读取后可以保留它。在大多数系统上,这会导致 ctime 发生更改,有时会干扰其他软件(例如安全软件)。

其他软件

您可能会研究rsync(参见本文例如)或版本控制系统(如git

相关内容