如何确定 tar 存档的格式
How to determine a tar archive's format
在 Linux 中,如何确定用于创建给定 tarball 的格式?
我想检测给定的存档是否使用 posix 或 gnu 格式创建。
我已经阅读了 man page for GNU tar,其中解释了如何在创建过程中控制格式。但是,我没有看到有关如何查看现有文件格式的任何信息。
可以使用Linux下的file
查看解压后的存档指纹:
$ touch foo # create test file
$ tar --format=posix -cf posix.tar foo # create test posix archive
$ tar --format=gnu -cf gnu.tar foo # create test gnu archive
$ file posix.tar gnu.tar
posix.tar: POSIX tar archive
gnu.tar: POSIX tar archive (GNU)
如果存档是压缩的,请先解压,因为file
不会超越压缩层:
$ touch foo # create test file
$ tar --format=posix -czf posix.tar.gz foo # create test gzip posix archive
$ tar --format=gnu -czf gnu.tar.gz foo # create test gzip gnu archive
$ file posix.tar.gz gnu.tar.gz # show output when compressed
posix.tar.gz: gzip compressed data
gnu.tar.gz: gzip compressed data
$ gunzip posix.tar.gz # decompress to posix.tar
$ gunzip gnu.tar.gz # decompress to gnu.tar
$ file posix.tar gnu.tar # show output after decompression
posix.tar: POSIX tar archive
gnu.tar: POSIX tar archive (GNU)
或者,通过将输出直接传输到 file
的标准输入来检查压缩档案而不保存解压缩文件:
$ gunzip --stdout posix.tar.gz | file -
/dev/stdin: POSIX tar archive
$ gunzip --stdout gnu.tar.gz | file -
/dev/stdin: POSIX tar archive (GNU)
GNU 基于较旧的 POSIX 格式,所以这就是为什么它说两者兼而有之。
在 Linux 中,如何确定用于创建给定 tarball 的格式?
我想检测给定的存档是否使用 posix 或 gnu 格式创建。
我已经阅读了 man page for GNU tar,其中解释了如何在创建过程中控制格式。但是,我没有看到有关如何查看现有文件格式的任何信息。
可以使用Linux下的file
查看解压后的存档指纹:
$ touch foo # create test file
$ tar --format=posix -cf posix.tar foo # create test posix archive
$ tar --format=gnu -cf gnu.tar foo # create test gnu archive
$ file posix.tar gnu.tar
posix.tar: POSIX tar archive
gnu.tar: POSIX tar archive (GNU)
如果存档是压缩的,请先解压,因为file
不会超越压缩层:
$ touch foo # create test file
$ tar --format=posix -czf posix.tar.gz foo # create test gzip posix archive
$ tar --format=gnu -czf gnu.tar.gz foo # create test gzip gnu archive
$ file posix.tar.gz gnu.tar.gz # show output when compressed
posix.tar.gz: gzip compressed data
gnu.tar.gz: gzip compressed data
$ gunzip posix.tar.gz # decompress to posix.tar
$ gunzip gnu.tar.gz # decompress to gnu.tar
$ file posix.tar gnu.tar # show output after decompression
posix.tar: POSIX tar archive
gnu.tar: POSIX tar archive (GNU)
或者,通过将输出直接传输到 file
的标准输入来检查压缩档案而不保存解压缩文件:
$ gunzip --stdout posix.tar.gz | file -
/dev/stdin: POSIX tar archive
$ gunzip --stdout gnu.tar.gz | file -
/dev/stdin: POSIX tar archive (GNU)
GNU 基于较旧的 POSIX 格式,所以这就是为什么它说两者兼而有之。