Linux下档案与文件系统的压缩与打包

本文详细介绍了Linux系统中常用的压缩与打包指令,包括gzip、bzip2、tar及其组合使用,涵盖了压缩、解压缩、打包和解包操作,以及各种选项参数的使用方法。
  1. linux系统常见的压缩指令

    • *.Z compress程序压缩的档案
    • *.gz gzip程序压缩的档案
    • *.bz2 bzip2程序压缩的档案
    • *.tar tar程序打包的数据,并没有压缩过
    • *.tar.gz tar程序打包的档案,并且经过gzip的压缩
    • *.tar.bz2 tar程序打包的档案,其中并且经过bzip2的压缩
  2. gzip,zcat

    gzip可以说是应用度最广的压缩命令了,目前gzip可以解开compress,zip与gzip等软件所压缩的档案,gzip所建立的压缩文件为*.gz的档案名

    • gzip [-cdtv# ] 档案名

    • zcat 档案名.gz

      选项与参数:

      -c: 将压缩的数据输出到屏幕上,可透过数据流

      -d: 解压缩的指令

      -t: 可以用来检验一个压缩文件一致性,看档案有无错误

      -v:可以显示出原档案/压缩文件案的压缩比等信息

      -#:压缩等级,-1最快,但压缩比最差,-9最慢,但压缩比最好,预设是-6

      zcat 档案名.gz:如果原档案是文本文件,我们可以尝试使用zcat去读取

  3. bzip2,bzcat

    bzip2是为了取代gzip并提供更佳的压缩比而来的,用法基本相同

    • bzip2 [-cdkzv#] 档案名

    • bzcat 档案名.bz2

      选项与参数:

      -c: 将压缩过程中产生的数据输出到屏幕上

      -d: 解压缩的参数

      -k: 保留源文件,而不会删除原始的档案

      -z: 压缩的参数

      -v: 可以显示出原档案/压缩文件案的压缩比等信息

      -#: 与gzip同样的,都是在计算压缩比的参数,-9最佳,-1最快

      同样的,bzcat这个指令可以读取压缩档案的内容

  4. 打包指令tar

    tar [-j|-z] [cv] [-f建立的档案名] filename  <==打包与压缩
    
    tar [-j|-z] [tv] [-f建立的档案名]    <==查看档案名
    
    tar -jxv -f filename.tar.bz2 -C 欲解压的目录  <==解压缩
    
    选项与参数:
    -c:建立打包档案,可搭配-v来查看过程中被打包的档名
    -t:查看打包档案中包含哪些档名
    -x:解打包或解压缩的功能,可搭配-C在特定目录解开
    -j:透过bzip2的支持进行压缩/解压缩:此时档案名最好为*.bar.bz2
    -z:透过gzip的支持进行压缩/解压缩:此时档案名最好为*.bar.gz
    -v:在压缩/解压缩的过程中,将正在处理的文件名显示出来
    -f filename:-f 后面要立即接要被处理的档名,建议-f单独写一个选项
    -C目录:这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项
    -p:保留备份数据原本权限与属性,常用于备份(-c)重要的配置文件
    -P:保留绝对路径,亦即允许被封数据中含有根目录存在之意
    

    需要注意的是我们使用查询命令查出来的备份的打包压缩文件是没有根目录的,因为我们使用tar备份的数据可能会解压缩回来使用,在tar所记录的文件名(就是使用tar -jtvf所查看到的档案名)就是解压缩后的实际档案名,如果拿掉了根目录,假设你将备份数据在 /tmp 解开,那么解压缩的档名就会变成『/tmp/etc/xxx』。 但『如 果没有拿掉根目录,解压缩后的档名就会是绝对路径, 亦即解压缩后的数据一定会被放置到 /etc/xxx 去!』如此一来,你的原本的 /etc/ 底下的数据, 就会被备份数据所覆盖过去了。

  5. 仅解开单一档案的方法

    利用grep关键词以及管线 |

    例如: tar -jtv -f /root/etc.tar.bz2 | grep ‘shadow’

  6. 打包某目录,但不包含该目录下的某些档案的做法

    透过–exclude 的帮忙,就是不包含的意思

    tar -jcv -f/root/system.tar.bz2 --exclude=/root/etc*\
    > --exclude=/root/system.tar.bz2 /etc/root
    

    上面的命令是打包/etc/ /root目录,但不打包/root/etc*开头的档案,并且不打包自己,上面的指令是可以一行写完的,如果要两行写完,就需要在第一行末加上反斜杠()然后立刻按下[enter],就能够在第二行继续输入了

  7. 仅备份比某个时刻新的档案

    有两个选项,一个是『 --newer 』另一个就是『 --newer-mtime 』,当使用 --newer 时,表示后续的日期包含『 mtime 与 ctime 』,而 --newer-mtime 则仅是 mtime 而已

  8. 基本名称:tarfile,tarball

    如果仅仅是打包,则称为tarfile,如果还有进行压缩的支持,则称为tarball

  9. 特殊应用:利用管线命令和数据流

    ​ 在 tar的使用中,有一种方式最特殊,那就是透过标准输入输出的数据流重导向(standard input/standard output), 以及管线命令 (pipe) 的方式,将待处理的档案一边打包一边解压缩到目标目录

    cd/tmp
    tar -cvf - /etc | tar -xvf -
    需要注意的是输出档和输入档都变成 - 
    

    在上面的例子中,想要『将 /etc 底下的资料直接 copy 到目前所在的路径,也就是 /tmp 底下』,但是又觉得使用 cp -r 有点麻烦,那么就直接以这个打包的方式来打包

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值