文件的压缩与打包

gzip

[root@www ~]# gzip [-cdtv#] 档名
[root@www ~]# zcat 档名.gz
选项与参数:
-c :将压缩的数据输出到屏幕上,可透过数据流重导向来处理; 
-d :解压缩的参数;
-t :可以用来检验一个压缩文件的一致性~看看档案有无错误;
-v :可以显示出原档案/压缩文件案的压缩比等信息;
-# :压缩等级,-1 最快,但是压缩比最差、-9 最慢,但是压缩比最好!预设是 -6

范例一:将 /etc/man.config 复制到 /tmp ,并且以 gzip 压缩 
[root@www ~]# cd /tmp
[root@www tmp]# cp /etc/man.config .
[root@www tmp]# gzip -v man.config
man.config: 56.1% -- replaced with man.config.gz
[root@www tmp]# ll /etc/man.config /tmp/man*
-rw-r--r-- 1 root root 4617 Jan 6 2007 /etc/man.config
-rw-r--r-- 1 root root 2684 Nov 10 17:24 /tmp/man.config.back.Z -rw-r--r-- 1 root root 2057 Nov 10 17:14 /tmp/man.config.gz <==gzip 压 缩比较佳
  • 压缩(只能压缩单个文件)
    // 压缩成功之后的文件为:hehe.txt.gz,同时删除源文件
    gzip hehe.txt
    
  • 解压

    // 解压成功之后的文件为:hehe.txt,同时删除源文件
    gzip -d hehe.txt.gz
    
  • 查看压缩文件内容

    // 注意:查看的是hehe.txt文件的内容
    zcat hehe.txt.gz
    

    tar

[root@www ~]# tar [-j|-z] [cv] [-f 创建的档名] filename... <==打包与压缩
[root@www ~]# tar [-j|-z] [tv] [-f 创建的档名]             <==察看档名
[root@www ~]# tar [-j|-z] [xv] [-f 创建的档名] [-C 目录]   <==解压缩
选项与参数:
-c  :创建打包文件,可搭配 -v 来察看过程中被打包的档名(filename)
-t  :察看打包文件的内容含有哪些档名,重点在察看『档名』就是了;
-x  :解打包或解压缩的功能,可以搭配 -C (大写) 在特定目录解开
      特别留意的是, -c, -t, -x 不可同时出现在一串命令列中。
-j  :透过 bzip2 的支持进行压缩/解压缩:此时档名最好为 *.tar.bz2
-z  :透过 gzip  的支持进行压缩/解压缩:此时档名最好为 *.tar.gz
-v  :在压缩/解压缩的过程中,将正在处理的档名显示出来!
-f filename:-f 后面要立刻接要被处理的档名!建议 -f 单独写一个选项罗!
-C 目录    :这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。

其他后续练习会使用到的选项介绍:
-p  :保留备份数据的原本权限与属性,常用於备份(-c)重要的配置档
-P  :保留绝对路径,亦即允许备份数据中含有根目录存在之意;
--exclude=FILE:在压缩的过程中,不要将 FILE 打包!
  • 打包

    tar -cv -f test.tar haha.sh hehe.txt
    
  • 解包

    tar -xv -f test.tar
    
  • 查看
    tar -t -f test.tar
    

tar和gzip结合起来使用

  • 打包压缩

    tar -czv -f test.tar.gz haha.sh hehe.txt
    
  • 解包解压

    tar -xzv -f test.tar.gz
    
  • 查看压缩包
    tar -tz -f test.tar.gz
    

tar高级的用法

  1. 仅解开单一文件的方法
    将该文件解开!语法与实际作法如下:
    [root@www ~]# tar -jxv -f 打包档.tar.bz2 待解开档名
    [root@www ~]# tar -jxv -f /root/etc.tar.bz2 etc/shadow
    
  2. 打包某目录,但不含该目录下的某些文件之作法
    [root@www ~]# tar -jcv  -f /root/system.tar.bz2 --exclude=/root/etc* --exclude=/root/system.tar.bz2  /etc /root
    

bzip2