最近,我备份了很多数据,我发现我可以将文件另存为.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 与 home/username (注意前导斜杠)。
7z 压缩提供了更高的压缩率,但不保留文件所有权、权限等。Rzip 是另一种压缩实用程序,也提供与 7z 相当的压缩率。
我猜想,backup.tar.7z 文件只是一个由 7z 文件压缩的 tar 文件(具有权限),不过如果压缩效果很差我也不会感到惊讶,因为 7z 可能无法转储文件元数据。正是由于 7z 能够排除文件元数据,它才可以提供出色的压缩效果(当然还有其他好处)。
压缩也完全取决于数据类型。有些文件压缩效果不好,因为它们可能已经用其他方式压缩过(例如 .mp3、.jpg、.tiff/lzma、.rpm 等)。
答案3
gzip 或 bzip2 不知道file system
文件名、目录或树结构。它只是压缩输入流,然后输出结果。即使 gzip 或 bzip2 也无法单独归档目录,这就是为什么它通常与 tar 结合使用。
tar(归档器)-仅归档文件结构。gzip,bzip2(压缩器)-仅压缩输入。
我认为这个策略来自于‘做好一件事’Unix 哲学。Tar 工作正常?保持原样。需要比 gzip 更高的压缩率?这里有 bzip2 或 7zip。
答案4
通常,*.tar 文件只是由 tar 程序创建的 tar 文件,*.gz 程序由 gzip 创建,*.tar.gz(有时也是 *.tgz)是 gzip 压缩的 tar 文件,而 *.7z 由 7zip 创建。
然而,在 Linux/Unix 中,人们可以随心所欲地命名文件,因此这完全由文件创建者的自行决定。