晚上的解压命令一般都是 tar -zvxf xxx.tar.gz
我想问一下这里的 z 参数是干啥的,文档也没看懂。我自己尝试了一下,压缩的时候加 z 参数确实用 gzip 压缩了体积,问题是在解压的时候,我不加 z(tar -xf filename.tar.gz)也成功解压了……为什么网上搜到的命令都是-zvxf 解压呢?
另外我发现,tar -xf 好像可以解压.xz 文件,bz2 文件,好像解压的时候带参数是没有用的???
相关文档
-j, --bzip2
filter the archive through bzip2
-J, --xz
filter the archive through xz
-p, --preserve-permissions
extract information about file permissions (default for superuser)
-v, --verbose
verbosely list files processed
-z, --gzip
filter the archive through gzip
1
zent00 2017-06-21 17:31:16 +08:00 via iPhone
调用 gzip
|
2
herozzm 2017-06-21 17:32:44 +08:00 via Android
好像是指定解压引擎,不加的话由系统设定
|
3
scriptB0y OP |
4
zent00 2017-06-21 17:36:30 +08:00 via iPhone 2
早期版本的 tar 无法自动判断文件所使用的压缩算法,所以需要指定 z 或 j,现代版本的 tar 都可以识别了,所以不需要指定 z j J,只需要告诉 tar 你是要解压 (x) 还是压缩 (c)
|
5
momocraft 2017-06-21 17:38:41 +08:00 1
和 tar 版本有关。旧版本解压时可能要指定压缩方式,现代常见的 gnu tar 和 bsdtar 聪明一点。
|
6
herozzm 2017-06-21 17:38:45 +08:00 via Android 1
@scriptB0y 是的我写脚本的时候解压文件都不加 z,因为里面有个类型的压缩文件,加了 z 参数反而会出错,不加都能顺利解压
|
7
herozzm 2017-06-21 17:39:10 +08:00 via Android
里面有各种类型的文件
|
8
cxbig 2017-06-21 17:42:37 +08:00 1
tar -c 本身只打包不压缩
-z 指定用 gzip 压缩方式 新版解压不需要指定-z,它会自动判断 |
10
introom 2017-06-21 17:45:03 +08:00 via Android
好问题,解压缩的时候会根据文件后缀自行判断压缩格式。
|
11
0ZXYDDu796nVCFxq 2017-06-21 17:47:20 +08:00 1
压缩必须指定压缩格式
g: gzip j: bz2 J: xz 解压以前需要指定压缩格式,现在新版本不需要,加不加 -a 参数都会自动判断格式 所以对于 gz 格式的解压,在新版 tar 上,以下命令全部等价 tar -zxf tar zxf tar -xf tar xf tar -axf tar axf 不过,规范一点更好,写脚本的时候,统一使用 tar -zxf 或者 tar -axf 这些参数,免得出 bug |
12
zent00 2017-06-21 17:54:01 +08:00 via iPhone
纠正我上一个回复里的一个误导性错误:打包的时候还是需要指定使用何种压缩算法的,tar 并不会根据扩展名来调用相应工具。tar 的自动识别仅适用于解包时。
|