`

Linux 档案的压缩与打包

阅读更多

gzip, zcat:

语法:
[root @test /root ]# gzip [-d#] filename <==压缩与解压缩 
[root @test /root ]# zcat filename.gz     <==读取压缩档内容 
参数说明:  
-d  :解压缩的参数!  
-#  :压缩等级, 1 最不好, 9 最好, 6 是默认值!  
范例:  
[root @test /root]# gzip man.config       
会产生 man.config.gz 这个档案 

[root @test /root]# zcat man.config.gz 
会读取出 man.config 的内容

[root @test /root]# gzip -d man.config.gz  
[root @test /root]# gunzip man.config.gz 
解压缩,产生 man.config 这个档案

[root @test /root]# gzip -9 man.config      
以最大压缩比压缩 testing 这个档案!

gzip 是用来压缩与解压缩附档名为 *.gz 的指令!所以看到 *.gz 的档案时,就应该要知道他是经由 gzip 这个程序压缩的呦!另外, gzip 也提供 压缩比的服务! -1 是最差的压缩比,但是压缩速度最快,而 -9 虽然可以达到较佳的压缩比(经过压缩之后,档案比较小一些!),但是却会损失一些速度!预设是 -6 这个数值! gzip 也是相当常使用的一个压缩指令呢!至于 zcat 则是用来读取压缩文件数据内容的指令!假如我们刚刚压缩的档案是一个文字文件,那么你还记得如何读取文字文件吗?!没错!就是使用 cat ,那么读取压缩档呢?呵呵!就是使用 zcat 啰!由于 gzip 这个压缩指令主要想要用来取代 compress 的,所以 compress 的压缩档案也可以使用 gzip 来解开喔!同时, zcat 这个指令可以同时读取 compress 与 gzip 的压缩档呦!
  • bzip2, bzcat:

  • 语法:
    [root @test root]# bzip2 [-dz] filename <==压缩解压缩指令 
    [root @test root]# bzcat filename.bz2   <==读取压缩文件内容指令 
    参数说明: 
    -d  :解压缩的意思! 
    -z  :压缩的意思! 
    范例: 
    同样的,我们以刚刚拷贝过来的 /root/man.config 这个档案为例 
    [root @test root]# bzip2 –z man.config 
    [root @test root]# bzcat man.config.bz2 
    [root @test root]# bzip2 –d man.config.bz2 
    [root @test root]# bunzip2 man.config.bz2
    刚刚的 compress 附档名自动建立为 .Z ,这里的 bzip2 则是自动的将附档名建置为 .bz2 啰!所以当我们使用具有压缩功能的 bzip2 –z 时,那么刚刚的 man.config 就会自动的变成了 man.config.bz2 这个档名啰!好了,那么如果我想要读取这个档案的内容呢?是否一定要解开?当然不需要啰!可以使用简便的 bzcat 这个指令来读取内容即可!例如上面的例子中,我们可以使用 bzcat man.config.bz2 来读取数据而不需要解开!此外,当您要解开一个压缩档时,这个档案的名称为 .bz, .bz2, .tbz, .tbz2 等等,那么就可以尝试使用 bzip2 来解看看啦!当然啰,也可以使用 bunzip2 这个指令来取代 bzip2 –d 啰 
      

  • tar:

  • 语法:
    [root @test /root ]# tar [-zxcvfpP] filename  
    [root @test /root ]# tar -N 'yyyy/mm/dd' /path -zcvf target.tar.gz source  
    参数说明:  
    -z  :是否同时具有 gzip 的属性?  
    -x  :解开一个压缩档案的参数指令!  
    -t  :查看 tarfile 里面的档案! 
    -c  :建立一个压缩档案的参数指令  
    -v  :压缩的过程中显示档案!  
    -f  :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数! 
       例如使用『 tar -zcvfP tfile sfile』就是错误的写法,要写成 
       『 tar -zcvPf tfile sfile』才对喔! 
    -p  :使用原档案的原来属性(属性不会依据使用者而变)  
    -P  :可以使用绝对路径  
    -N  :比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的档案中!  
    --exclude FILE:在压缩的过程中,不要将 FILE 打包!  
    范例:  
    [root @test /root]# tar -cvf  directory.tar    directory  
    只将目录整合打包成一个档案 

    [root @test /root]# tar -zcvf directory.tar.gz directory  
    除了将目录打包外,同时以 gzip 压缩 

    [root @test /root]# tar -zcvf filename.tar.gz  /home/test/*  
    将 /home/test/ 这个目录下的档案全部打包并压缩成为一个 filename.tar.gz 的档案

    [root @test /root]# tar -xvf  directory.tar  
    解 tar 的封包,请注意,由于没有 gzip (.tar 而非 .tar.gz) 的作用,所以只要使用 –xvf 即可!不需要加上 z ,否则会显示有问题!

    [root @test /root]# tar -zxvf directory.tar.gz  
    这个就是有加上 gzip 的压缩的结果!所以需要加上 –z 呦!

    [root @test /root]# tar –ztvf directory.tar.gz 
    这个 t 可以用来查看 tar 里面的档案信息呢!而不需要将他解开!

    [root @test /root]# tar -zcvPf home.tar.gz /home  
    则建立起来的压缩档内档案为绝对路径  
    请注意,使用这个 P 的参数时,不要将 P 加在 f 后面,因为 
    f 之后要立即接档名才行喔!

    [root @test /root]# tar -N '2002/06/25' -zcvf home.tar.gz /home  
    上面是说 在 /home 这个目录中,比 2002/06/25 日还要新的档案才会被打包进入 home.tar.gz 这个档案中! 

    [root @test /root]# tar -zcvf host.tar.gz / --exclude /mnt --exclude /proc  
    上面是说,将根目录的所有数据都打包进 host.tar.gz 这个档案中,但是 /mnt 及 /proc 则不打包! 

    [root @test /root]# tar -cvf - /home | tar -xvf - 
    上面的意思是『将 /home 打包之后,直接解压缩在 /root 底下!』嘿嘿!不需要再建立一次中间档案!不过,使用上面的语法最好使用『绝对路径』,比较不会有问题!这个方式适合不想要建立中间档案时!

    • 这是一个多用途的压缩指令!刚刚我们提到的 compress 与 gzip 是可以适用在一个档案的压缩上面,但是如果是要压缩一个目录呢?!这时该如何是好?!呵呵! tar 就派上用场了! tar 可以将整个目录或者是规定的档案都整合成一个档案!例如上面的第三个范例,他可以将 /home/test 底下的档案全部整合成一个档案!而第一个范例中,则是将目录整合成一个档案!同时, tar 可以配合 gzip (这个 gzip 的功能已经已经附加上 tar 里面去了),同时整合并压缩!呵呵!很方便吧!『 tar 用来作备份是很重要的指令! 』而由于 tar 整合过后的档案我们通常会取名为 *.tar ,而如果还含有 gzip 的压缩属性,那么就取名为 *.tar.gz 啰!取这个文件名只是为了方便我们记忆这个档案是什么属性罢了!并没有实际的意义在!
     
    • 另外,需要注意的是,在使用的参数方面,有还有几个有用的参数需要来了解一番,亦即是 -p 与 -P 这两个!如果你曾经在 crontab 里面下达过一些备份的指令时,那么常常会收到 root 的信件,就是说,系统会告诉你『我将 / 的 tar 里头的内容拿掉了!』也就是说,原本你备份的档案是 /home/test ,但是由于担心未来你在解开压缩的时候,会产生一些困扰,因为在 tar 里面的档案如果是具有『绝对路径』的话,那么你解开的档案将会『一定』在该路径下也就是 /home/test,而不是绝对路径(这里请用心的想一想!),这样子的最大困扰是,万一有人拿走了你的这个档案,并且将该档案在他的系统上面解开!万一他的系统上面正巧也有 /home/test 这个目录,哈哈!他的档案就会『正巧』被覆盖了!所以啰,在预设的情况中,如果是以『绝对路径』来建立打包档案,那么将会自动的将 / 拿掉!这是为了刚刚说明的『安全』为前提所做的默认值。好了!但是你就是要以绝对路径来建立打包的档案!那么就加入 -P 这个参数吧(请注意!是大写字符)!这样就可以啦!那么 -p 是什么(小写字符)?呵呵!那个 -p 是 permission 的意思,也就是『权限』啦!使用 -p 之后,被打包的档案将不会依据使用者的身份来改变权限喔!
     
    • 这里还有一个值得注意的参数呦!那就是在备份的情况中很常使用的 -N 的这个参数!你可以参考一下上面的例子就可以知道啦!在这个例子当中,相当重要的就是那个日期啦!在备份的情况当中,我们都希望只要备份较新的档案就好了,为什么呢?因为旧的档案我们已经有备份啰!干嘛还要再备份一次,浪费时间也浪费系统资源!这个时候此一参数就显的相当的重要了啊!
     
    • 在上面的例子中,最后一个例子很有趣『tar cvf - /home | tar -xvf - 』!他是直接以管线命令『 pipe 』来进行压缩、解压缩的过程!在上面的例子中,我们想要『将 /home 底下的数据直接 copy 到目前所在的路径,也就是 /root 底下来』,但是又觉得使用 cp -r 有点麻烦,那么就直接以这个打包的方式来打包,其中,指令里面的 - 就是表示那个被打包的档案啦!由于我们不想要让中间档案存在,所以就以这一个方式来进行复制的行为啦!
     
    • tar 的功能相当的多,而由于他是经由『打包』之后再处理的一个过程,所以常常我们会听到 tarball 的档案,那就是经由 tar 打包再压缩的档案啦!此外, tar 也可以用在备份的储存媒体上面,最常见的就是磁带机了!假设我的磁带机代号为 /dev/st0 ,那么我要将我的 /home 底下的数据都给他备份上去时,就是使用 tar /dev/st0 /home 就可以啦!很不错吧!
     
    在 Linux 当中, gzip 已经被整合在 tar 里面了!但是 Sun 或者其它较旧的 Unix 版本中, 当中的 tar 并没有整合 gzip ,所以如果你需要解压缩的话,就需要这么做:
      
    gzip -d testing.tar.gz 
    tar -xvf testing.tar 
     
    第一个步骤会将档案解压缩,第二个步骤才是将数据解出来!与其它压缩程序不太一样的是, bzip2, gzip 与 compress 在没有加入特殊参数的时候,原先的档案会被取代掉,但是使用 tar 则原来的与后来的档案都会存在呦!
  • cpio:

  • 语法:
    [root @test /root ]# cpio -covB  > [file|device]<==备份 
    [root @test /root ]# cpio -icduv < [file|device]<==还原 
    参数说明:  
    -o :将资料 copy 输出到档案或装置上  
    -i :将数据自档案或装置 copy 出来系统当中  
    -t :查看 cpio 建立的档案或装置的内容  
    -c :一种较新的 portable format 方式储存  
    -v :让储存的过程中文件名称可以在屏幕上显示  
    -B :让预设的 Blocks 可以增加至 5120 bytes ,预设是 512 bytes !  
       这样的好处是可以让大档案的储存速度加快(请参考 i-nodes 的观念)  
    -d :自动建立目录!由于 cpio 的内容可能不是在同一个目录内, 
         如此的话在反备份的过程会有问题! 这个时候加上 -d 的话, 
         就可以自动的将需要的目录建立起来了!  
    -u :自动的将较新的档案覆盖较旧的档案!  
    范例:  
    [root @test /root]# find / -print | cpio -covB > /dev/st0  
    将搜寻到的档案存到磁带机 

    [root @test /root]# cpio -icduv < /dev/st0  
    将磁带机的数据还原回来! 

    [root @test /root]# cpio -icdvt < /dev/st0 > /tmp/content  
    将磁带机的内容(文件名而已)转存到 /tmp/content 

    [root @test /root]# find / -type -f | cpio -o > /tmp/root.cpio  
    [root @test /root]# cpio -i < /tmp/root.cpio  
    上面这个例子可以马上实作看看!先输出到 /tmp/root.cpio 这个档案,然后再给他还原回来!

    这个 cpio 还蛮神奇的呢!他最适用于备份的时候使用的一个指令了!为什么呢?因为他并不像 cp 一样,可以直接的将档案给他 copy 过去,例如 cp * /tmp 就可以将所在目录的所有档案 copy 到 /tmp 底下,在 cpio 这个指令的用法中,由于 cpio 无法直接读取档案,而是需要『每一个档案或目录的路径连同文件名一起』才可以被记录下来!因此, cpio 最常跟 find 这个指令一起使用了!这个 cpio 好像不怎么好用呦!但是,嘿嘿!他可是备份的时候的一项利器呢!因为他可以备份任何的档案,包括 /dev 底下的任何装置档案!呵呵!所以他可是相当重要的呢!!您说是吧! 而由于 cpio 必需要配合其它的程序,例如 find 来建立档名,所以, cpio 与管线命令及命令重导向的相关性就相当的重要了!上面的例子刚好可以用来复习一下上一章节里面提到的内容!加油啦! 
     
    • 备份:在备份的用法当中,他可以直接跟输出到档案或者是装置当中,但是如前面说过的,你必须要配合 find 这个指令较好呦!那个 -o 表示将档案或目录输出到右边去的意思!还记得命令重导向吗?对啦!就是那个东西啰!在上面的例子中,我们将备份的数据给他 copy 到磁带机里头去!那个磁带机的装置代号就是 /dev/st0 啰!
    • 还原:那么如何给他反过来解开呢?呵呵!可以直接给他下达 cpio -i 就是 input 就对啦!例如上头的例子啰!这个指令可以多看看呢

 

分享到:
评论

相关推荐

    Linux系统文件的压缩、打包与解开介绍

    Linux 系统文件的压缩、打包与解开介绍 Linux 系统文件的压缩、打包与解开是非常重要的知识点,今天我们将详细介绍 Linux 系统中压缩文件的 zip 命令、解开压缩文件的 unzip 命令和打包文件的 tar 命令。 一、压缩...

    Linux_压缩打包.docx

    Linux系统提供了多种工具用于压缩和打包文件,以节省存储空间和便于数据传输。本篇将重点介绍两个常用的压缩工具:gzip和bzip2,以及打包工具tar。 首先,bzip2是一种提供更高压缩率的压缩工具,其压缩后的文件通常...

    浅析Linux打包压缩解压缩命令大全(收藏)

    下面是小编日常收集整理的关于linux打包压缩解压缩命令大全,具体内容如下所述: tar命令 解包:tar zxvf FileName.tar 打包:tar czvf FileName.tar DirName gz命令 解压1:gunzip FileName.gz 解压2:gzip -d ...

    9_档案的压缩与打包

    【档案的压缩与打包】是Linux系统中常见的一项操作,主要目的是为了节省存储空间、方便文件传输和备份。本文将详细介绍这一主题。 首先,我们理解一下压缩文件的主要用途和技术。当面临大文件无法一次性复制到有限...

    linux打包压缩命令大全.docx

    Linux 打包压缩命令大全 Linux 操作系统中提供了多种打包和压缩命令,分别用于不同的文件格式。以下是 Linux 中常用的打包和压缩命令: 1. tar 命令 tar 命令用于将多个文件或目录打包成一个文件,tar 文件可以...

    linux下的压缩与解压缩

    ### Linux下的压缩与解压缩详解 #### 一、概述 在Linux系统中,压缩与解压缩功能对于数据管理和传输非常重要。对于初学者来说,掌握基本的压缩与解压缩技巧可以帮助他们更高效地管理文件和目录。本文将详细介绍...

    鸟哥的 Linux 私房菜第09章-档案与文件系统的压缩与打包1

    【鸟哥的 Linux 私房菜第09章-档案与文件系统的压缩与打包1】主要介绍了Linux系统中用于压缩和打包文件的方法,这些方法对于处理大型文件、方便网络传输以及存储优化具有重要意义。 1. 压缩文件的用途与技术: ...

    Linux服务器配置与管理:linux打包压缩.pptx

    本篇主要讲解如何使用Linux的`tar`命令进行文件和目录的打包与压缩。 **一、`tar`命令基础** `tar`是Linux中一个非常实用的命令,它能将一组文件和目录打包成一个单一的.tar文件,方便存储和传输。这个命令不仅...

    linux下常用格式的压缩与解压方法

    Linux 下常用格式的压缩与解压方法 Linux 操作系统中有多种压缩和解压格式,每种格式都有其特点和使用方法。了解这些格式的使用方法可以帮助我们更好地管理和存储文件。本文将介绍 Linux 下常用格式的压缩与解压...

    05Linux压缩、打包与文件查询.ppt

    Linux压缩、打包与文件查询 压缩技术与原理 常见的压缩命令gzip, zcat;bzip2,bzcat

    Linux 压缩解压缩

    本篇文章将深入探讨Linux中的压缩与解压缩技术,包括常用的命令、选项及其应用场景。 1. **gzip命令** - `gzip` 是Linux中最常用的压缩工具,它基于DEFLATE算法,可以有效地减小文件大小。 - 使用 `gzip 文件名` ...

    04-Linux压缩打包1

    在Linux操作系统中,文件压缩打包是一项重要的技能,尤其对于处理大量数据或者优化存储空间时。本文将详细讲解Linux中的压缩打包命令及其使用方法。 首先,我们探讨一下压缩的意义和原理。文件压缩的主要目的是减少...

    Linux基础知识(6-10)-压缩与打包.pdf

    在Linux操作系统中,压缩与打包是管理文件和节省磁盘空间的重要工具。本文将深入探讨Linux下的几种常用压缩工具和打包命令,以及它们的使用方法。 首先,让我们来看一下常见的压缩文件格式。在Linux环境下,有三种...

    Linux下文件的压缩、打包与解开

    Linux 下文件的压缩、打包与解开 Linux 操作系统中提供了多种文件压缩和解压缩工具,包括 zip、unzip、tar 等。这些工具可以帮助用户对文件进行压缩和解压缩,节省硬盘空间,并且使文件更方便地传输和存储。 zip ...

    Linux解压打包方法汇总

    本文将详细介绍如何在Linux环境下解压和打包不同类型的压缩文件,以满足不同需求。 首先,我们来看一下标题和描述中提到的“Linux解压打包方法汇总”。在Linux中,有多种不同的压缩格式,例如tar、gzip、bzip2、xz...

    Linux文件的压缩与打包

    与文件压缩不同指出在于没有对文件进行压缩操作  Linux支持的压缩格式  *.Z compress 程序压缩文件  *.gz gzip程序压缩文件,相比compress压缩比和压缩效率更高  *.bz2 bzip2程序压缩文件  *.tar tar...

    Linux打包命令_tar

    Linux 系统中的打包命令 tar,是一种功能强大的文件存档工具,能够对单个文件、多个文件、单个目录、多个目录进行压缩打包。tar 命令可以实现文件的压缩、解压缩、查看、创建等多种操作。 tar 命令的基本格式为:...

    linux解压缩命令大全

    ### Linux解压缩命令大全 #### 一、概述 在Linux操作系统中,经常需要处理各种不同格式的压缩文件,包括但不限于`.zip`、`.tar`、`.tar.gz`、`.tar.bz2`、`.tar.xz`、`.jar`、`.7z`等。这些文件格式在不同的场景下...

    linux之centos7打包与压缩命令详解

    ### Linux之CentOS 7 打包与压缩命令详解 #### 一、概述 在Linux环境中,文件管理和数据处理是一项非常重要的技能。特别是在系统管理、软件开发等领域,掌握高效的文件打包与压缩技巧对于提高工作效率至关重要。...

Global site tag (gtag.js) - Google Analytics