压缩、解压缩命令:

1.compress/uncompress:压缩格式为Z,文件后缀为.Z

compress /path/to/file

uncompress /path/to/file.Z


2.gzip/gunzip/zcat:压缩格式为gz,文件后缀为.gz

gzip [OPTION] /path/to/file:压缩文件保存在被压缩文件的目录,压缩完成后会删除原文件

    -v|verbose:显示指令执行过程

    -d:解压缩,解压缩完成后删除原压缩文件

    -#:1-9,指定压缩比,默认为6,数值越高,压缩比越高,用时越长

gunzip /path/to/file.gz:解压缩文成后删除原文件

zcat /path/to/file.gz:不解压的情况,查看文本文件的内容


3.bzip2/bunzip2/bzcat:压缩格式为bz2,比gzip有着更大压缩比的压缩工具,使用格式近似

bzip2 [OPTION] /path/to/file    

     -v|verbose:显示指令执行过程

    -k:压缩或解压缩时保留原文件

    -d:解压缩

    -#:1-9,默认是6

bunzip2 /path/to/file.bz2

bzcat /path/to/file.bz2


4.xz/unxz/xzdec/xzcat:压缩格式为xz

xz [OPTION] /path/to/file 

-#: 1-9, 默认是6

-k: 压缩时保留原文件

-d:解压缩

unxz|xzdec /path/to/file.xz

xzcat /path/to/file.xz


5.zip:即可以归档又可以压缩的工具

zip file.zip file1 file2 ...:默认压缩后不删除原文件

    -r:recurse将目录内的全部文件压缩,zip -r foo.zip foo

     -v|verbose:显示指令执行过程

unzip file.zip

    -v|verbose:不压缩显示文件列表



归档(打包)命令:

tar:文件格式为.tar

    -c:创建归档文件

    -x:展开归档

    -t:不展开归档,直接查看归档的文件列表

    -f file.tar:操作的归档文件

    --xattrs:归档时保留文件的扩展属性信息

    -p:使用原文件的原属性

    -C:指定工作目录,用于解压时指定解压文件的路径

    

    注意:选项cxt只能同时使用一个

    -zcf file.tar.gz:归档并调用gzip压缩

    -zxf file.tar.gz:调用gzip解压缩并展开归档,-z选项可省略


    -jcf file.tar.bz2:归档并调用bzip2压缩

    -jxf file.tar.bz2:调用bzip2解压缩并展开归档


     -Jcf file.tar.xz:归档并调用xz压缩

    -Jxf file.tar.xz:调用xz解压缩并展开归档


范例一:将整个 /etc 目录下的文件全部打包成为 /tmp/etc.tar

[root@linux ~]# tar -cvf /tmp/etc.tar /etc    <==仅打包,不压缩!

[root@linux ~]# tar -zcvf /tmp/etc.tar.gz /etc  <==打包后,以 gzip 压缩

[root@linux ~]# tar -jcvf /tmp/etc.tar.bz2 /etc  <==打包后,以 bzip2 压缩

特别注意,在参数 f 之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识。

如果加 z 参数,则以 .tar.gz 或 .tgz 来代表 gzip 压缩过的 tar file 

如果加 j 参数,则以 .tar.bz2 来作为附档名

上述指令在执行的时候,会显示一个警告讯息:


范例二:查阅上述 /tmp/etc.tar.gz 文件内有哪些文件

[root@linux ~]# tar -ztvf /tmp/etc.tar.gz

由於我们使用 gzip 压缩,所以要查阅该 tar file 内的文件时,

就得要加上 z 这个参数了!这很重要的!


范例三:将 /tmp/etc.tar.gz 文件解压缩在 /usr/local/src 底下

[root@linux ~]# cd /usr/local/src

[root@linux src]# tar -zxvf /tmp/etc.tar.gz

在预设的情况下,我们可以将压缩档在任何地方解开的!以这个范例来说

我先将工作目录变换到 /usr/local/src 底下,并且解开 /tmp/etc.tar.gz

则解开的目录会在 /usr/local/src/etc ,另外,如果您进入 /usr/local/src/etc

则会发现,该目录下的文件属性与 /etc/ 可能会有所不同喔!


范例四:在 /tmp 底下,我只想要将 /tmp/etc.tar.gz 内的 etc/passwd 解开而已

[root@linux ~]# cd /tmp

[root@linux tmp]# tar -zxvf /tmp/etc.tar.gz etc/passwd

我可以透过 tar -ztvf 来查阅 tarfile 内的文件名称,如果单只要一个文件,

就可以透过这个方式来下达!注意到! etc.tar.gz 内的根目录 / 是被拿掉了!


范例五:我要备份 /home, /etc ,但不要 /home/dmtsai

 tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc


范例六

[root@linux ~]#tar -cvf file2.tar /home/usr2/file2

  tar: Removing leading '/' from members names

  home/usr2/file2

  该命令可以将/home/usr2/file2文件打包到当前目录下的file2.tar中,需要注意的是:使用绝对路径标识的源文件,在用tar命令压缩后,文件名连同绝对路径(这里是home/usr2/,根目录'/'被自动去掉了)一并被压缩进来。