现在的位置: 首页 > 综合 > 正文

Linux-压缩与解压

2012年09月11日 ⁄ 综合 ⁄ 共 5021字 ⁄ 字号 评论关闭

Linux-压缩与解压

 

工具: 

  操作系统:ubuntu10.04
    内核版本:Linux version 2.6.32-36-generic

目录:

    1. Linux 下的压缩解压命令
    2. gz 格式
        2.1 gzip
        2.2 gunzip
    3. bz2 格式
        3.1 bzip2
        3.2 bunzip2
    4. tar
    5. rar 格式
        5.1 rar
        5.2 unrar
    6. zip 格式
        6.1 zip
        6.2 unzip
    7. 7z 格式
        7.1 7z
    8. 其它

1. Linux 下的压缩解压命令

命令            介绍
gzip            gz 文件的压缩与解压命令;
gunzip          gz 文件的解压命令;
bzip2           bz2 文件的压缩与解压命令;
bunzip2         bz2 文件的解压命令;
tar             将文件打包或者通过指定参数进行压缩以及对应的解包或解压命令;
rar             rar 文件的压缩命令;
unrar           rar 文件的解压命令;
zip             zip 文件的压缩命令;
unzip           zip 文件的解压命令;
7z              7z 文件的压缩与解压命令。

2. gz 格式
    关于 GZIP 文件格式的介绍,请参考 [1]

2.1 gzip
    gz 格式压缩解压命令。默认情况下 gzip 在进行压缩或解压时,不保留源文件。还有一个要注意的是,gzip 不提供压缩目录的功能。
    命令格式:gzip [option] [filename ...]
    通用选项:
    -c 将输出写到标准输出上,并且保留原文件。
    -d 解压。
    -l 选项:对每个压缩文件显示一下内容:
        压缩文件大小    解压后的文件大小    压缩比    解压后的文件名
    -v 选项:在压缩或解压过程中,显示每一个文件的文件名以及压缩比。
    -r 递归压缩或解压指定目录下的所有文件。
    -# 用一个数字指定压缩速度,-1 是最快的,-9 是压缩率最高的,压缩速度与压缩率成反比,默认为 -6 。
   
    ·压缩:
    $gzip filename
    $ls
    filename.gz
    注:源文件 filename 被 filename.gz 替换。
   
    ·打印压缩过程:
    $gzip -v filename
    filename:     79.1% -- replaced with filename.gz
    $gzip -l filename.gz
    compressed        uncompressed  ratio uncompressed_name
            41                  86  79.1% filename
   
    ·解压:
    $gzip -dv filename.gz
    filename.gz:     79.1% -- replaced with filename
    $ls
    filename
   
    gzip 不能对目录进行压缩,但是可以通过 -r 选项进行递归压缩。
    ·递归压缩:
    $ls dir
    file file2
    $gzip -r dir
    $ls
    dir
    $ls dir
    file.gz file2.gz

    ·如果我们需要对目录进行压缩,那么我们首先就要对该目录进行打包。
    $tar cf dir.tar dir
    $gzip dir.tar
    $ls
    dir dir.tar.gz
   
    ·还有一个非常有趣的功能,可以将多个文件打包到指定文件中。
    $cat file
    111111111111111111111
    $cat file2
    aaaaaaaaaaaaaaaaaaaaa
    $gzip -c file file2 > merge_file.gz
    $ls
    file file2 merge_file.gz
    $zcat merge_file.gz
    111111111111111111111
    aaaaaaaaaaaaaaaaaaaaa
    注:zcat 命令相当于 cat 命令,可以输出 gz 格式文件的内容。

2.2 gunzip
    解压 gz 格式的压缩文件。基本上可以用 gzip -d 代替这个命令。
   
    ·解压:
    $gunzip filename.gz
    $ls
    filename  

3. bz2 格式
    关于 bz2 格式的介绍,请参考 [3]

3.1 bzip2
    bzip2 的用法基本上和 gzip 一样,在这里就不再做详细介绍了。
    命令格式:
    bzip2 [option] filename
    常用选项:
    -c 将压缩或解压的结果输出到标准输出上。
    -d 解压。
    -f 同名强制覆盖。
    -k 保留原文件。
    -s 降低内存使用量。
    -v 打印压缩或解压过程中的信息。
    -num 用一个数字指定压缩速度,-1 是最快的,-9 是压缩率最高的。
   
    ·压缩:
    $bzip2 filename
    $ls
    finename.bz2
   
    ·解压:
    $bzip2 -d filename.bz2
    $ls
    filename

3.2 bunzip2
    解压 bz2 格式的压缩文件。基本上可以用 bzip2 -d 代替这个命令。
    ·解压:
    $bunzip2 filename.bz2
    $ls
    filename

4. tar
    tar 程序最初设计的目的是将文件备份到磁带上(tape archive),因而得名 tar 。tar 除了将指定文件归档打包外,还提供其它非常多的功能,包括 上面提到的 gz 、bz2 压缩与解压功能。
    命令格式:
    tar [option] <files>
    常用选项:
    -A 将 tar 文件作为一个整体追加到另一个 tar 文件中。
    -c 建立新的文件。
    -d 找出存档于当前文件系统的不同之处。
    -r 向原有的 rar 文件添加新文件。
    -t 列出归档文件的内容。
    -u 用已打包的文件的较新版本更新tar文件。
    -x 解开归档文件。
    -delete 删除 rar 文件里面的文件(不适用于磁带里面)。
    -v 打印操作信息。
    -C 指定生成的目录。
    -f 指定要处理的文件名。
    -j 调用 bzip2 执行压缩或解压。
    -z 调用 gzip 执行压缩或解压。
    -k 解包时不覆盖原有的文件。
    -w 交互处理。
    --exclude 忽略指定文件。
    --remove-files 建立归档后删除源文件。
   
    ·打包
    $tar -cf filename.tar filename
    $ls
    filename filename.tar
    注:tar 默认打包后不删除源文件,打开 --remove-files 选项则删除源文件。
   
    ·解包
    $tar -xv filename.tar
   
    ·打包压缩
    $tar -zcvf filename.tgz filename
   
    ·解压
    $tar -zxvf filename.tgz
   
    ·解压到指定目录
    $tar -zcvf filename.tgz filename -C /path/dir
   
    ·排除指定文件目录
    $ls dir
    file file2 file3
    $tar zcvf dir.tgz --exclude=dir/file dir
    dir/
    dir/file2
    dir/file3
    $tar -tf dir.tgz
    dir/
    dir/file2
    dir/file3

5. rar 格式
    关于 rar 格式的介绍,请参考 [6]

5.1 rar
    rar 文件格式的压缩与解压命令。
    安装:
    $sudo apt-get install rar unrar
   
    由于 rar 命令不是 Linux 的常用命令,所以只做基本操作介绍,其它操作请参考 man rar 。
   
    ·压缩
    $rar a filename.rar filename
    $ls
    filename filename.rar
    注:使用 a 选项时不需要带 - ,否则会出错。
   
    ·解压
    $rar x filename.rar

5.2 unrar
    rar 文件格式的解压命令。
   
    ·解压
    $unrar x filename.rar

6. zip 格式
    关于 zip 文件格式的说明,请参考 [8]

6.1 zip
    zip 文件格式的压缩命令。
   
    ·压缩
    $zip file.zip file1 file2
    $ls
    file file.zip file2
   
    ·压缩目录
    $zip -r dir.zip dir
    注:如果忽略掉 -r 选项,将只压缩 dir 这个目录,dir 目录下的文件并没有被压缩。

6.2 unzip
    zip 文件格式的解压命令。
   
    ·解压
    unzip file.zip

7. 7z 格式
    关于 7z 格式的介绍,请参考 [9]

7.1 7z
    7z 文件格式的压缩与解压命令。

    命令安装:
    $sudo apt-get install p7zip-full

    ·压缩文件
    $7z a file.7z file1 file2
    $ls
    file1 file2 file.7z
    注:选项 a 不能写成 -a ,否则会报错。

    ·压缩目录
    $7z a dir.7z dir

    我们打开 man 7z 会发现有两个 option (e,x)可以提供解压,那么他们的区别在哪里呢?如果你要压缩的文件中不存在目录,那么他们就没有分别,否则请使用 x 选项。因为 e 选项将所有文件都解压到当前目录下,打乱原来的目录结构。

    ·解压目录
    $7z l dir.7z
         Date      Time    Attr         Size   Compressed  Name
    ------------------- ----- ------------ ------------  ------------------------
    2012-02-29 17:06:37 ....A           86          505  dir/file1
    2012-03-01 11:30:26 ....A        20480               dir/file2
    2012-03-01 16:50:39 D....            0            0  dir
    ------------------- ----- ------------ ------------  ------------------------
    $7z e dir.7z
    $ls
    dir dir.7z file1 file2
    $ls dir
    注:解压后 dir 目录下没有任何文件,file1 与 file2 都被解压到当前目录下。
    $7z x dir.7z
    $ls
    dir dir.7z
    $ls dir
    file1 file2
    注:解压是最好使用选项 x 。

8. 其它
    由于时间的关系,还有一些以后再添加。

参考资料:
[1] http://www.utf.com.cn/article/s1464
[2] http://www.linuxso.com/command/gzip.html
[3] http://zh.wikipedia.org/wiki/BZ2
[4] http://domando.yo2.cn/articles/linuxtar.html
[5] http://zh.wikipedia.org/wiki/Tar_(计算机科学)
[6] http://zh.wikipedia.org/wiki/RAR
[7] http://hi.baidu.com/zgyz/blog/item/f7ef29085c90d4d663d98665.html
[8] http://zh.wikipedia.org/wiki/ZIP_(算法)
[9] http://zh.wikipedia.org/wiki/7z
[10] man

抱歉!评论已关闭.