曲径通幽论坛

标题: gzip/gunzip -- 生成/提取 gz 压缩包 [打印本页]

作者: beyes    时间: 2012-4-10 18:55
标题: gzip/gunzip -- 生成/提取 gz 压缩包
gzip 是 GNU/Linux 平台上常用的压缩工具之一,它仅能对单个文件进行压缩,在遇到多个文件时,它会相应的生成多个压缩文件(.gz):
# gzip tmp1.txt tmp2.txt tmp3.txt
# ls *.gz
tmp1.txt.gz  tmp2.txt.gz  tmp3.txt.gz

解压缩则用 gunzip 命令:
# gunzip tmp1.txt.gz

gizp 的 -l 选项可以查看压缩包的详细情况:
# gzip -l temp.tar.gz
         compressed        uncompressed  ratio uncompressed_name
                262               20480  98.9% temp.tar
其中,compressed 表示压缩后的文件大小;uncompressed 表示未压缩时的文件大小;ratio 表示压缩比;uncompressed_name 表示压缩文件的文件名。

使用 -c 选项可以指定压缩数据输出到 stdout ,这样我们可以将其重定向到一个文件中:
# cat down.sh |gzip -c > down.sh.gz

gzip 经常是和 tar 一起使用的,比如我们经常将一个 tar 包压缩成一个 gz 文件,如:
# tar -czvvf my.tar.gz [Some Files]
上面的 -z 选项指定压缩 tar 包为 gz 格式。

或者
# tar -cavvf my.tar.gz [Some Files]

上面,-a 选项表示根据文件后缀名自动生成压缩格式,如上面的后缀名为 gz ,那么 tar 就会调用 gzip 来压缩其 tar 包文件。

当然,我们也可以将上面的步骤手动分为两步执行,首先是生成一个 tar 包,接着再显示调用 gzip 将其压缩。

在使用 tar 创建归档文件时,不能一次给出许多个要压缩的文件名作为参数,因为在命令行上对一次给出的参数个数是有限制的,因此,下面的脚本可以解决这个问题:
[Bash shell] 纯文本查看 复制代码
#!/bin/bash
FILE_LIST="file1 file2 file3 file4 file5"
for f in $FILE_LIST;
do
    tar -rvf my.tar $f
done

gzip my.tar

其中 tar 的 -r 选项表示“附加一个新的文件”。

tar 命令可以参考:http://www.groad.net/bbs/read.php?tid-6852.html




欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2