问题描述
我想用一些我很少需要访问的文档来备份一些旧文件夹。为此,我想将它们全部保存在一个存档中。由于这将是备份,因此格式应适合该目的。因此,底线是:
哪一种是Ubuntu中最可靠/最可靠的存档格式?
最佳回答
这取决于。最受欢迎的两个选项是tarball和zip文件,但它们都缺少:
-
对于大多数Linux用户,
.tar
tape archives是一个非常受欢迎的选项。它保留UNIX文件权限(这对于备份很重要)和硬链接。我测试过的每个Linux发行版都支持out-of-the框,以及一些Windows程序(如7-zip)。然而,对于back-up use-case,tar具有explained by the Duplicity developers的一些限制和缺点。这可能非常慢:即使要获取存储在档案中的文件名列表,也必须读取整个档案。它还无法处理某些较新文件系统所具有的详细meta-data。 -
.zip
zip files既充当存档格式又充当压缩格式。为了提高速度,您可以完全禁用压缩。 Zip文件比磁带存档更好,因为它们存储一种目录表,使程序可以快速跳转到需要提取的特定文件。它还存储每个文件内容的校验和,以方便检测文件损坏。 Zip文件非常受欢迎,不幸的是,它们不存储简单的文件权限,因此不适用于Linux back-ups。
遗憾的是,这里还缺少两个选项:
-
.7z
7z compressed archives具有一些出色的功能,例如加密和支持非常大的文件。不幸的是,它不存储UNIX文件权限,因此不适用于Linux back-ups。 -
.ar
classic UNIX archives是tar归档文件的前身,并且具有与tar归档文件相同的限制。
我认为,对于Linux back-ups,没有完全健壮的back-up归档格式,没有一种足以保证我信任的well-known。
克服每种格式局限性的一种方法是将它们组合在一起:例如,将每个文件分别存档在tar存档中,然后将所有这些tarball存档在一个zip文件中。
如果您想要真正强大的back-up,则应该考虑以下解决方案:
-
back-up直接放在外部硬盘上,源和目标上具有相同的文件系统。这样可以确保您将按预期存储每个文件的权限和元数据。 (顺便说一句,文件的所有者和组所有者使用其用户标识和组标识号(而不是名称)存储。)
-
使用full-disk成像和克隆软件,例如CloneZilla。您无法从这些back-ups中的一个中检索一个文件,但是可以绝对确定已保存了所有可能的文件。
记住,永远记住:只有尝试恢复它们,您才能对back-ups充满信心。如果最坏的情况发生了,并且您的源hard-drive被完全销毁了,您能否将还原到新hard-drive的所有内容还原?它会按预期工作吗?尝试将back-up还原到新的hard-disk,然后尝试从该hard-disk运行几天。如果发现任何缺失,则说明您的back-up不够彻底。
还请考虑将back-ups保存在何处。您需要至少一些back-ups与源磁盘不在同一建筑物中,以保护自己免遭盗窃或火灾。对此的一些选择是云或朋友的房子。
次佳回答
压缩文件(.tar
个文件)将是解决方法。使用gzip
压缩格式可减少压缩量,但提高速度。 bzip2
慢得多,但压缩率更高。对于二进制数据,没有太大的区别。
使用gzip压缩来压缩目录的命令:
tar czf /path/to/save/backup.tar.gz directory-to-backup
要在保留文件权限的同时提取gzip-compressed tar包:
tar xzpf /path/to/save/backup.tar.gz
将z
替换为j
以进行bzip2压缩,并在v之前添加v
(例如czvf
和xzpvf
)以在归档/提取文件时打印文件名。
第三种回答
我选择7zip(sudo apt-get install p7zip-full
)。从我的角度来看,它似乎是理想的压缩存档器。
我不喜欢经典的tarball,因为它们笨拙,因为要压缩整个tar文件(这可能在幕后发生,但仍然会发生),只是为了查看档案目录。
第四种回答
尽管不那么为人所知或广泛使用,但我还是倾向于使用afio,因为它可以单独压缩文件,从而可以在损坏的情况下进行恢复。通过aptitude或类似方式安装。