zoukankan      html  css  js  c++  java
  • linux 下对zip,rar,tar,tar.gz,tar.bz2,tar.xz,gzip,bzip2,xz文件的归档,压缩和解压缩

    一.关于打包和压缩

    1.打包(打包又称为归档)是指将一大堆文件或目录变成一个总的文件,压缩则是将一个大的文件通过特定的压缩算法变成一个小文件。

    2.归档和压缩文件的好处:方便管理,节约硬盘的资源,加快文件传输速度。

    3.LINUX中常见的归档压缩文件后缀名(归档压缩格式):

    归档压缩后缀名 格式描述
    .rar 表示通过WinRAR压缩工具生成的文件
    .zip 表示通过zip压缩工具生成的文件
    .gz 表示通过gzip压缩工具生成的文件
    .bz2 表示通过bzip2压缩工具生成的文件
    .xz 表示通过xz压缩工具生成的文件
    .tar 表示通过tar打包程序打包生成的文件
    .tar.gz 表示先由tar工具打包,然后由gzip工具进行压缩生成的文件
    .tar.bz2 表示先由tar工具打包,然后由bzip2工具进行压缩生成的文件
    .tar.xz 表示先由tar工具打包,然后由xz工具进行压缩生成的文件

    二.linux对rar文件的压缩和解压缩

    1.rar格式是windows系统最常见的压缩格式,rar压缩文件可通过WinRAR压缩生成,RAR是一种专利文件格式,用于数据压缩与归档打

    包,RAR通常情况比ZIP压缩比高,但压缩/解压缩速度较慢。一般linux都是通过tar打包文件,很少处理rar文件,但是难免会出现rar格式

    的文件,我们要学会处理此类文件。

    2.linux压缩和解压缩rar文件使用rarlinux程序,此程序需要使用源码编译安装(源码编译安装详情请查看https://www.cnblogs.com/renshengdezheli/p/13954234.html)。

    3.rar压缩文件的语法为:rar a 压缩以后的文件名 需要压缩的文件/目录。

    4.rar解压缩文件的语法为:rar x 压缩文件。

    #linux压缩和解压缩rar文件使用rarlinux程序
    [root@node5 ~]# wget http://www.rarlab.com/rar/rarlinux-3.8.0.tar.gz
    
    #解压缩文件
    [root@node5 ~]# tar xf rarlinux-3.8.0.tar.gz 
    
    [root@node5 ~]# cd rar
    
    #编译安装rarlinux
    [root@node5 ~]# make -j 4 && make install
    
    #centos编译安装rarlinux-3.8.0.tar.gz文件后,执行rar可能会出现“bash: /usr/local/bin/rar: /lib/ld-linux.so.2: bad ELF interpreter:No such file or directory”这样的报错,需要安装以下两个依赖包
    [root@node5 ~]# yum install glibc.i686
    [root@node5 ~]# yum install libstdc++.so.6 -y
    
    #rar压缩文件的语法为:rar a 压缩以后的文件名 需要压缩的文件/目录
    [root@node5 ~]# rar a etc.rar /etc
    
    [root@node5 ~]# ll etc.rar -h
    -rw-r--r-- 1 root root 15M Nov  2 23:23 etc.rar
    
    #rar解压缩文件的语法为:rar x 压缩文件
    [root@node5 ~]# rar x etc.rar 
    
    [root@node5 ~]# ll -d etc
    drwxr-xr-x 101 root root 8192 Nov  2 23:17 etc
    
    #查看rar的命令帮助,直接输入rar即可
    [root@node5 ~]# rar
    RAR 3.80   Copyright (c) 1993-2008 Alexander Roshal   16 Sep 2008
    Shareware version         Type RAR -? for help
    Usage:     rar <command> -<switch 1> -<switch N> <archive> <files...>
                   <@listfiles...> <path_to_extract>
    <Commands>
      a             Add files to archive
      c             Add archive comment
      cf            Add files comment
      ch            Change archive parameters
      cw            Write archive comment to file
    

    三.使用tar对文件进行归档,压缩,解压缩

    1.tar命令用来对文件进行打包,压缩和解压缩。

    2.tar命令的打包是把几个文件/目录集合在一个文件里,通过tar打包之后的文件,可以使用gzip,bzip2或xz等压缩工具进行压缩。

    3.tar的语法格式为:tar [OPTION...] [FILE]...,tar命令的常用参数有:

    • ​ -c create创建文件
    • ​ -x -extract [ˈekstrækt] 提取 解压还原文件
    • ​ -v --verbose显示执行详细过程
    • ​ -f --file指定备份文件
    • ​ -t --list 列出压缩包中包括哪些文件,不解包,查看包中的内容
    • ​ -C (大写)--directory 指定解压位置

    3.1 tar对文件进行归档和解压

    只对文件进行归档不压缩

    #对/boot目录打包
    #tar的参数前可以不加“-”,tar -cvf boot.tar /boot等价于tar cvf boot.tar /boot
    #在对文件进行打包的时候出现这么一句话“tar: Removing leading `/' from member names”,这是因为:在使用绝对路径名归档文件时,将默认从文件名中删除该路径中前面的 / 符号,这样解压时,会直接解压到当前目录。 如果不移除/压缩,当解包时,直接按绝对路径来释放文件,会覆盖原系统中此路径的文件。
    [root@node5 ~]# tar -cvf boot.tar /boot
    tar: Removing leading `/' from member names
    /boot/
    /boot/efi/
    /boot/efi/EFI/
    /boot/efi/EFI/centos/
    /boot/grub2/
    ......
    
    
    [root@node5 ~]# ll boot.tar -h
    -rw-r--r-- 1 root root 92M Nov  3 10:57 boot.tar
    
    #解压
    [root@node5 ~]# tar -xvf boot.tar 
    [root@node5 ~]# ll -d boot
    dr-xr-xr-x 5 root root 4096 Apr 26  2019 boot
    
    #指定解压位置  -C
    [root@node5 ~]# tar xf boot.tar -C /opt/
    [root@node5 ~]# ll -d /opt/boot
    dr-xr-xr-x 5 root root 4096 Apr 26  2019 /opt/boot
     
    #把指定的文件和目录进行打包
    [root@node5 ~]# tar cf guidan.tar 201810240430234009.pcm baidu.html iu.jpg wanyi.txt logqiege.sh stick 
    [root@node5 ~]# ll -h guidan.tar 
    -rw-r--r-- 1 root root 110K Nov  3 11:08 guidan.tar
    
    #不进行解压,查看tar包里面的内容
    [root@node5 ~]# tar tf guidan.tar 
    201810240430234009.pcm
    baidu.html
    iu.jpg
    wanyi.txt
    logqiege.sh
    stick/
    
    
    [root@node5 ~]# tar cf boot.tar /boot
    tar: Removing leading `/' from member names
     
    [root@node5 ~]# ll -h boot.tar 
    -rw-r--r-- 1 root root 92M Nov  3 11:22 boot.tar
     
    #解压指定的文件,boot目录里存在initramfs-3.10.0-693.el7.x86_64.img文件,现在我们只想解压此文件,别的文件不解压
    [root@node5 ~]# tar xf boot.tar boot/initramfs-3.10.0-693.el7.x86_64.img
    [root@node5 ~]# ll boot/initramfs-3.10.0-693.el7.x86_64.img -h
    -rw------- 1 root root 20M Apr 26  2019 boot/initramfs-3.10.0-693.el7.x86_64.img
    

    3.2 归档的添加和删除

    1.此步骤对已经打包的文件进行添加和删除,以及进行特定打包。

    [root@node5 opt]# ls
    apache-tomcat-8.0.51  boot.tar  boot.tar.bz2  boot.tar.gz  boot.tar.xz  nginx  sdb6_fulldump  sdb6_incredump1  sdb6_incredump2  xfsdump_sdb6  xfsdump_shadow
    
    #把指定的文件和目录进行打包
    [root@node5 opt]# tar cf ceshi.tar sdb6_fulldump sdb6_incredump1 sdb6_incredump2 xfsdump_sdb6
     
    #不进行解压,查看tar包里面的内容
    [root@node5 opt]# tar tf ceshi.tar 
    sdb6_fulldump
    sdb6_incredump1
    sdb6_incredump2
    xfsdump_sdb6
    
    #-r:向压缩归档文件末尾追加文件
    [root@node5 opt]# tar rf ceshi.tar xfsdump_shadow
    [root@node5 opt]# tar tf ceshi.tar 
    sdb6_fulldump
    sdb6_incredump1
    sdb6_incredump2
    xfsdump_sdb6
    xfsdump_shadow
    
    #向压缩归档文件删除指定文件
    [root@node5 opt]# tar --delete -f ceshi.tar sdb6_fulldump
    [root@node5 opt]# tar tf ceshi.tar 
    sdb6_incredump1
    sdb6_incredump2
    xfsdump_sdb6
    xfsdump_shadow
    
    #对/usr/local/nginx/conf目录进行打包,但是排除以default结尾和以types结尾的文件
    [root@node5 opt]# tar cf nginx1.19.tar /usr/local/nginx/conf --exclude=/usr/local/nginx/conf/*.default --exclude=/usr/local/nginx/conf/*.types
    tar: Removing leading `/' from member names
    
    #查看tar包发现,没有以default结尾和以types结尾的文件
    [root@node5 opt]# tar tf nginx1.19.tar 
    usr/local/nginx/conf/
    usr/local/nginx/conf/koi-win
    usr/local/nginx/conf/koi-utf
    usr/local/nginx/conf/win-utf
    usr/local/nginx/conf/fastcgi_params
    usr/local/nginx/conf/fastcgi.conf
    usr/local/nginx/conf/uwsgi_params
    usr/local/nginx/conf/scgi_params
    usr/local/nginx/conf/nginx.conf
    

    3.3 tar对文件进行归档压缩和解压缩

    1.此步骤不仅对文件进行归档,还进行相应的压缩。

    2.tar进行压缩常用的参数:

    • ​ -z, --gzip 以gzip方式压缩 :tar zcvf newfile.tar.gz SOURCE ,扩展名: tar.gz
    • ​ -j : 以bz2方式压缩 :tar jcvf newfile.tar.bz2 SOURCE 扩展名:tar.bz2
    • ​ -J : 以xz 方式压缩 :tar Jcvf newfile.tar.xz SOURCE 扩展名:tar.xz

    3.对/boot目录进行三种不同方式的压缩和解压缩,并对比压缩比率。

    [root@node5 ~]# cd /opt/
    [root@node5 opt]# pwd
    /opt
    [root@node5 opt]# ls
    apache-tomcat-8.0.51  nginx  sdb6_fulldump  sdb6_incredump1  sdb6_incredump2  xfsdump_sdb6  xfsdump_shadow
    
    #创建tar包
    [root@node5 opt]# tar cf boot.tar /boot
    tar: Removing leading `/' from member names
    
    #创建tar.gz包
    [root@node5 opt]# tar zcf boot.tar.gz /boot
    tar: Removing leading `/' from member names
    #解压缩tar.gz包
    [root@node5 opt]# tar zxf boot.tar.gz    
    
    #创建tar.bz2包
    [root@node5 opt]# tar jcf boot.tar.bz2 /boot
    tar: Removing leading `/' from member names
    #解压缩tar.bz2包
    [root@node5 opt]# tar jxf boot.tar.bz2   
    #解压缩tar.bz2包到/home/elk/目录
    [root@node5 opt]# tar jxf boot.tar.bz2 -C /home/elk/
    
    [root@node5 opt]# ll /home/elk/boot -dh
    dr-xr-xr-x 5 root root 4.0K Apr 26  2019 /home/elk/boot
    
    #创建tar.xz包
    [root@node5 opt]# tar Jcf boot.tar.xz /boot
    tar: Removing leading `/' from member names
    #解压缩tar.xz包
    [root@node5 opt]# tar Jxf boot.tar.xz           
    
    #对比三个压缩文件,发现boot.tar.xz压缩比例最高,但是花费时间也最多
    [root@node5 opt]# ll -h boot.tar*
    -rw-r--r-- 1 root root 92M Nov  3 14:51 boot.tar
    -rw-r--r-- 1 root root 84M Nov  3 14:54 boot.tar.bz2
    -rw-r--r-- 1 root root 84M Nov  3 14:52 boot.tar.gz
    -rw-r--r-- 1 root root 82M Nov  3 15:15 boot.tar.xz
    

    四.linux对zip文件的压缩和解压缩

    1.ZIP文件格式是一种数据压缩和文档储存的文件格式,原名Deflate,发明者为菲尔·卡茨(Phil Katz),zip格式的压缩文件在linux和

    windows上都是很常见的,在linux中,zip是压缩程序,unzip是解压缩程序。

    [root@node5 opt]# pwd
    /opt
    
    #将/usr/local/nginx/conf/目录下所有的conf文件压缩成一个zip包 
    [root@node5 opt]# zip conf.zip /usr/local/nginx/conf/*.conf
      adding: usr/local/nginx/conf/fastcgi.conf (deflated 60%)
      adding: usr/local/nginx/conf/nginx.conf (deflated 64%)
    
    #压缩文件
    [root@node5 opt]# zip shadow.zip /etc/shadow
      adding: etc/shadow (deflated 43%)
    
    #压缩目录
    [root@node5 opt]# zip -r boot.zip /boot
    
    #解压缩zip包
    [root@node5 opt]# unzip conf.zip 
    Archive:  conf.zip
      inflating: usr/local/nginx/conf/fastcgi.conf  
      inflating: usr/local/nginx/conf/nginx.conf  
     
    [root@node5 opt]# ls usr/local/nginx/conf/
    fastcgi.conf  nginx.conf
    
    #解压缩zip包到指定目录
    [root@node5 opt]# unzip conf.zip -d /home/elk/
    Archive:  conf.zip
      inflating: /home/elk/usr/local/nginx/conf/fastcgi.conf  
      inflating: /home/elk/usr/local/nginx/conf/nginx.conf  
    
    [root@node5 opt]# ls /home/elk/usr/local/nginx/conf/
    fastcgi.conf  nginx.conf
    

    五.使用gzip,bzip2,xz压缩文件,解压文件,查看文件

    [root@node5 opt]# ls
    apache-tomcat-8.0.51  nginx  sdb6_fulldump  sdb6_incredump1  sdb6_incredump2  usr  xfsdump_sdb6  xfsdump_shadow
    
    #gzip压缩
    [root@node5 opt]# gzip xfsdump_shadow 
    [root@node5 opt]# ls
    apache-tomcat-8.0.51  nginx  sdb6_fulldump  sdb6_incredump1  sdb6_incredump2  usr  xfsdump_sdb6  xfsdump_shadow.gz
    #查看gzip压缩之后的文件
    [root@node5 opt]# zcat xfsdump_shadow.gz
    #解压gzip文件
    [root@node5 opt]# gzip -d xfsdump_shadow.gz
    
    #bzip2压缩
    [root@node5 opt]# bzip2 xfsdump_sdb6
    [root@node5 opt]# ls
    apache-tomcat-8.0.51  nginx  sdb6_fulldump  sdb6_incredump1  sdb6_incredump2  usr  xfsdump_sdb6.bz2  xfsdump_shadow.gz
    #查看bzip2压缩之后的文件
    [root@node5 opt]# bzcat xfsdump_sdb6.bz2
    #解压bzip2文件
    [root@node5 opt]# bzip2 -d xfsdump_sdb6.bz2
    
    #xz压缩
    [root@node5 opt]# xz sdb6_incredump2
    [root@node5 opt]# ls
    apache-tomcat-8.0.51  nginx  sdb6_fulldump  sdb6_incredump1  sdb6_incredump2.xz  usr  xfsdump_sdb6.bz2  xfsdump_shadow.gz
    #查看xz压缩之后的文件
    [root@node5 opt]# xzcat sdb6_incredump2.xz
    #解压xz文件
    [root@node5 opt]# xz -d sdb6_incredump2.xz
    
  • 相关阅读:
    多线程
    集合与文件操作
    Net基础复习
    form表单
    html的常用标签和属性
    C#泛型与linq
    2020 年度总结 & OI 生涯感想——当年酒狂自负
    TODO-List
    Attention Points
    THUWC2020 游记
  • 原文地址:https://www.cnblogs.com/renshengdezheli/p/13952515.html
Copyright © 2011-2022 走看看