归档和压缩之间混淆了?

归档和压缩之间混淆了?

我对归档和压缩感到困惑,我将写下我认为正确的内容。

以下是我希望更好地理解的命令:

tar –c file > file.tar
tar –cf file.tar file // this command and the previous one are about the same

我认为前面的命令仅仅创建了一种公共文件夹(存档),其中我们有执行存档命令之前的精确文件(大小根本没有减少),唯一的区别是第三个命令将生成一个以 .gz 而不是 .tar 结尾的存档。

为了减少档案的大小(压缩它),我们必须使用:

tar -cjf file.tar.bz2 file
tar –cJf file.tar.xz file

gzip file.tar // it’ll create a compressed file called file.tar.gz
tar -cz file  > file.tar.gz 

我的看法是,如果扩展名是 .gz、.bz2 或 .xz,则表示它被压缩了,如果扩展名是 .tar,则表示它被存档了,这样对吗?

答案1

我认为这个回答了你的问题:https://unix.stackexchange.com/questions/127169/does-tar-actually-compress-files-or-just-group-them-together

确认一下您的想法:tar 确实只是将文件放在存档中,而没有进行任何压缩。您可以使用压缩标志,让 tar 在创建存档时使用某种压缩类型。

此外,文件扩展名是手动输入的,因此您可能会被这样欺骗:( tar -cz file > file.tar.bz2而您应该使用 .tar.gz)

如果您稍后想要提取此文件,您会误以为您使用了 gzip 压缩,因此请了解您在做什么或将您所做的事情记录在某处。

答案2

“tar” 的字面意思是磁带存档,用于从磁带(或磁盘)存档中存储和提取文件。tar支持大量压缩程序,如 gzip、bzip2、lzip、lzma、lzop、xz 和传统压缩

tar 命令应该以如下函数开头

[-] A --catenate --concatenate | c --create | d --diff --compare |
         --delete | r --append | t --list | --test-label | u --update | x
         --extract --get [options] [pathname ...]

-a 选项可用于自动检测所创建文件的后缀(扩展名)所需的压缩。tar 应自动检测压缩类型并在提取时采取相应措施,而无需特定信息。如果签名检查失败,它只会依靠后缀来确定类型。有关tar发出命令的更多信息man tar以及有关 tar 压缩的更多信息,请参阅:https://www.gnu.org/software/tar/manual/html_section/tar_69.html

有许多选项可以修改结果。tar 允许添加和删除扩展名不代表文件类型。例如,我见过 Windows 系统中扩展名为 .jpg 的图像文件实际上是 .gif。要找出文件类型,请打开终端,导航Ctrl Alt T到包含相关文件的目录并发出命令file filename以下是 gzip 压缩文件的输出示例:

$ file wireless-info.tar.gz 
wireless-info.tar.gz: gzip compressed data, from Unix, last modified: Thu Apr 23 07:45:20 2015

更改扩展名不会改变输出,file即使对于您不拥有且没有注释的文件,它也是确定文件类型的可靠方法。以下是重命名前一个文件并删除 .gz 后的示例...

$ file wireless-info.tar
wireless-info.tar: gzip compressed data, from Unix, last modified: Thu Apr 23 07:45:20 2015

有关更多信息file和其工作原理,请发出命令man file

资料来源:经验与https://www.gnu.org/software/tar/manual/html_section/tar_69.html

相关内容