.gz
或.tar.gz
或.7z
和.tar.7z
等。普通版本和.tar.*
版本之间有什么区别?建议在备份时选择哪一个?#1 楼
如果您来自Windows背景,则可能熟悉zip和rar格式。这些是压缩在一起的多个文件的存档。在Unix和类似Unix的系统(例如Ubuntu)中,归档和压缩是分开的。
tar
将多个文件放到一个文件中(tar)文件。gzip
压缩一个文件(仅)。因此,要获得压缩的归档文件,请将两者合并,首先使用
tar
或pax
来获取所有压缩文件文件分成一个文件(archive.tar
),然后由gzip
(archive.tar.gz
)。如果只有一个文件,则需要压缩(
notes.txt
):不需要tar
,因此只需执行gzip notes.txt
,结果notes.txt.gz
。还有其他压缩类型,例如compress
,bzip2
和xz
,其工作方式与gzip
相同(当然,除了使用不同类型的压缩外)。#2 楼
这取决于您要寻找的内容。压缩还是存档?当我谈论存档时,我的意思是保留权限,目录结构等...
压缩可能会忽略其中的大部分内容,而只是将文件放在较小的软件包中。
要保留文件权限,请使用tar:
tar cpvf backup.tar folder
p标记将保存文件权限。
使用z标记进行gzip压缩或使用j标记进行bzip压缩。
tar czpvf backup.tar.gz folder #backup.tgz is acceptable as well
tar cjpvf backup.tar.bz2 folder #backup.tbz2 works too
如果要拥有tar文件您可以使用P标志“更新”打包tar:
tar cpPvf backup.tar folder
然后进行更新,将'c'替换为'u',并且在拆包时可以使用' k'保留已存在的文件。
tar upPvf backup.tar folder #updating a tar file
tar xpPkvf backup.tar #extracting a tar with permissions(p) and not extracting(k) files that exist on disk already
P标志保存具有完整路径的文件,因此-/ home / username vs home / username(注意前瞻斜杠)。
7z压缩可提供更大的压缩率,但不会保留文件所有权,权限等。Rzip是另一个压缩器。 ession实用程序也可提供与7z相当的压缩效果。
我想backup.tar.7z文件只是由7z文件压缩的tar文件(具有权限),尽管我不会对此感到惊讶如果由于7z可能无法转储文件元数据而发生的压缩很少。 7z可以排除文件元数据,因此可以提供出色的压缩能力(当然还有其他事情)。
压缩也完全取决于数据类型。某些文件无法很好地进行压缩,因为它们可能已经通过其他方式进行了压缩(例如.mp3,.jpg,.tiff /带有lzma,.rpm等)。
#3 楼
gzip或bzip2不了解file system
-文件名,目录或树结构。它只是压缩输入流,然后输出结果。甚至gzip或bzip2也无法单独归档目录,这就是为什么它通常与tar结合使用的原因。我认为这种策略来自“做好一件事” Unix哲学。焦油效果很好?保持原样。需要比gzip更多的压缩率吗?这是bzip2或7zip。
评论
实际上7zip可以像zip或rar一样存档。
–维护
2012年4月15日下午4:56
#4 楼
由于压缩方式不同,因此tar本身只是被存档(几乎没有压缩)。 tar.gz是tar归档文件,但是内容通过gzip(中等压缩)压缩,因此.gz和tar.7z使用7zip压缩(通常是超高压缩)。备份时,我建议tar.7z,因为它具有最高的压缩率,可以节省您的空间,但要使用额外的程序(7zip)。 .tar.gz将是较大的文件,并且可以完成相同的工作,您也可以使用bzip(.tar.bz / bz2),尽管我不确定是否更适合您,因为我使用gzip或7zip
#5 楼
通常,*。tar文件只是由tar程序创建的tar文件,*。gz程序由gzip创建,*。tar.gz(有时也* .tgz)是gzip压缩的tar文件,而* .7z是由7zip创建的。但是,在Linux / Unix中,几乎可以随意命名文件,因此完全由文件创建者决定。
#6 楼
传统上,Tar(Tape Archiver)被用作Unix / Linux中的容器来打包文件以供移动。它打包文件结构并维护文件属性,但不压缩文件。压缩程序压缩文件以使其更小,但它们可能无法处理多个文件,并且/或者无法处理Linux所需的文件属性。由于tar已经存在并且得到了良好的支持,因此无需归档程序来复制此功能,该功能是特定于平台的(对于Windows和Linux,则有所不同)。另外,不同的压缩程序可能对不同类型的文件执行不同的操作,因此最好选择多个压缩文件。
#7 楼
其他答案也解释了压缩和归档之间的区别。7z
是一个存档程序,这意味着它知道内部目录结构,文件名等,而无需解压缩所有内容。但是,有一些限制。我在Ubuntu系统上引用了man 7z
:Backup and limitations
DO NOT USE the 7-zip format for backup purpose on Linux/Unix because :
- 7-zip does not store the owner/group of the file.
On Linux/Unix, in order to backup directories you must use tar :
- to backup a directory : tar cf - directory | 7za a -si directory.tar.7z
- to restore your backup : 7za x -so directory.tar.7z | tar xf -
If you want to send files and directories (not the owner of file) to others Unix/MacOS/Windows users, you can use the 7-zip format.
example : 7za a directory.7z directory
Do not use "-r" because this flag does not do what you think.
Do not use directory/* because of ".*" files (example : "directory/*" does not match "directory/.profile")
有。可以在
tar
内使用7z
(导致directory.tar.7z
)来确保您保留了所有特殊的Linux好东西。但是,7z只会知道其中的一个tar文件,并且必须解压缩并读取整个tar文件才能发现其中的内容。因此,对于一堆普通文件而言,所有权无关紧要,只需直接使用7z。此外,如果tar文件(或压缩的tar.anything文件)损坏,您将最多只能恢复您的数据直至受伤。使用7z之类的归档文件(不使用tar内部文件),您恢复更多文件的机会会更好。
PS:7z还可以创建可靠的归档文件,从而产生更好的压缩效果,但存在相同的局限性在任何压缩机内使用焦油。资料来源:https://en.wikipedia.org/wiki/Solid_compression
评论
那是有道理的,但是,为什么为什么我可以从多个文件中创建一个.7z档案,而我又可以从多个文件中创建一个.tar.7z档案呢?
– Exeleration-G
2012年4月15日的1:46
@ Exeleration-G 7zip不遵循此方案。它更像zip和rar。不知道将tar与7zip结合使用的意义是什么,因为我自己还没有使用过7zip。
– Geirha
2012年4月15日在1:53
@ Exeleration-G阅读完其他答案后,我看到SaultDon回答了该问题; 7zip不存储已归档文件的unix所有权和权限(似乎主要针对Windows,例如zip和rar),因此将其与tar结合使用以保留所有权和权限是有意义的。
– Geirha
2012年4月15日在2:02
以我的经验,7z在压缩方面比zip更好。当我测试时,它为我节省了40%的额外费用
– Eoin
18-2-9在11:51
@Eoin Yep。但是缺点是其他计算机不太可能支持它,而且速度很慢。
–theX
20'八月20'23:17