tar czf somname.tar some_*_files
那么tar czf somname.tar.gz some_*_files
,当然,这样做是错误的吗tar xf somename.tar
?即:不添加.gz
扩展名。
这个问题纯粹是关于不.gz
向文件名添加扩展名somename.tar
以及这是否会带来任何意外的副作用。 这个问题不是关于 的使用-z
。
答案1
您可以将 tarball 命名为任何您喜欢的名称。例如,
tar czvf surprise.c /etc/hosts 2>/dev/null
file surprise.c
surprise.c: gzip compressed data, from Unix, original size modulo 2^32 10240
您可能会发现 GUI 期望此类文件以.tar.gz
或为后缀.tgz
,如果我正在寻找压缩的 tarball,我会期望它具有这两个后缀之一,但系统本身并不担心。
结论?使用常规后缀提供有关文件内容的信息提示。在 的情况下tar
,用于.tar
未压缩的存档,或.tgz
用于.tar.gz
压缩gzip
的存档。
答案2
省略.gz
文件名末尾的 不会阻止tar cz
命令以压缩形式写入输出文件,也不会阻止大多数 GNUtar x
命令自动检测输入文件是否已压缩并将其解压缩。即,计算机不需要您.gz
在文件名末尾添加 来知道如何使用该文件。
因此,您的问题归结为您如何与其他人就文件内容进行沟通。他们可能会因.gz
文件名中缺少 而感到困惑,并用它做错误的事情。 (有时,如果创建文件和解压文件之间经过了几个月,那些“其他人”可能会被你)
如果其他人看到该.gz
.知道该文件已压缩,然后将其包含在内。如果不是很重要,那么你可以省略它。
答案3
至少对于GNU tar
(这是我唯一tar
熟悉的)只要指定压缩选项我认为当您使用 提取时扩展名并不重要tar xf
。
让我们省略第二个扩展(xz
):
tar cJf archive.tar pic*.jpg
file archive.tar
archive.tar:XZ压缩数据,校验和CRC64
和第一个 ( tar
):
tar cJf archive pic*.jpg
file archive
存档:XZ 压缩数据,校验和 CRC64
让我们使用jpg
扩展:
tar cJf archive.jpg pic*.jpg
file archive.jpg
archive.jpg:XZ压缩数据,校验和CRC64
让我们使用tar.gz
扩展,但仍然使用以下命令进行压缩xz
:
tar cJf archive.tar.gz pic*.jpg
file archive.tar.gz
archive.tar.gz:XZ压缩数据,校验和CRC64
正如您所看到的,在所有情况下,无论存档的名称如何,tar
都正确存档和压缩文件(带有)。xz
如果您使用...,扩展确实会有所不同,--auto-compress
即如果您提供受支持的扩展,它将使用正确的压缩器
tar caf archive.tar.xz pic*.jpg
file archive.tar.xz
archive.tar.xz:XZ压缩数据,校验和CRC64
而如果它无法识别扩展名(或者如果您使用tar
),它将创建一个未压缩的tar
存档:
tar caf archive.bag pic*.jpg
file archive.bag
archive.bag:POSIX tar 存档 (GNU)
无论如何,在所有情况下,tar xf
都会提取文件,如手册所述:
读取压缩档案甚至更简单:您不需要指定任何其他选项,因为 GNU tar 会自动识别其格式。因此,以下命令将列出并提取在上一个示例中创建的存档:
# List the compressed archive $ tar tf archive.tar.gz # Extract the compressed archive $ tar xf archive.tar.gz
格式识别算法基于签名,文件开头的特殊字节序列,特定于某些压缩格式...如果此方法失败,tar 会回退到使用存档名称后缀来确定其格式(请参阅自动compress,获取可识别后缀的列表)。
不使用扩展是个好习惯吗?不。正如其他人所说,这里的主要目标是清晰度。