zoukankan      html  css  js  c++  java
  • Linux文件压缩与打包

    准备工作

    [root@centos-01 ~]# cd /tmp/
    [root@centos-01 tmp]# ls
    1.txt
    systemd-private-40c0e692674844949b91361dc6ab4a40-chronyd.service-6km7K9
    systemd-private-40c0e692674844949b91361dc6ab4a40-vgauthd.service-3W1kyg
    systemd-private-40c0e692674844949b91361dc6ab4a40-vmtoolsd.service-wJZPyD
    [root@centos-01 tmp]# mkdir mytest
    [root@centos-01 tmp]# cd mytest/
    [root@centos-01 mytest]# ls
    [root@centos-01 mytest]# find /etc/ -type f -name "*conf"
    /etc/lvm/lvm.conf
    /etc/lvm/lvmlocal.conf
    /etc/resolv.conf
    /etc/pki/ca-trust/ca-legacy.conf
    /etc/yum/pluginconf.d/fastestmirror.conf
    /etc/yum/pluginconf.d/langpacks.conf
    /etc/yum/protected.d/systemd.conf
    /etc/yum/version-groups.conf
    /etc/asound.conf
    /etc/sasl2/smtpd.conf
    /etc/logrotate.conf
    /etc/openldap/ldap.conf
    /etc/libuser.conf
    /etc/sestatus.conf
    /etc/yum.conf
    /etc/host.conf
    /etc/dracut.conf
    /etc/dbus-1/system.d/teamd.conf
    /etc/dbus-1/system.d/org.freedesktop.hostname1.conf
    /etc/dbus-1/system.d/org.freedesktop.import1.conf
    /etc/dbus-1/system.d/org.freedesktop.locale1.conf
    /etc/dbus-1/system.d/org.freedesktop.login1.conf
    /etc/dbus-1/system.d/org.freedesktop.machine1.conf
    /etc/dbus-1/system.d/org.freedesktop.systemd1.conf
    /etc/dbus-1/system.d/org.freedesktop.timedate1.conf
    /etc/dbus-1/system.d/org.freedesktop.PolicyKit1.conf
    /etc/dbus-1/system.d/wpa_supplicant.conf
    /etc/dbus-1/system.d/nm-dispatcher.conf
    /etc/dbus-1/system.d/nm-ifcfg-rh.conf
    /etc/dbus-1/system.d/org.freedesktop.NetworkManager.conf
    /etc/dbus-1/system.d/com.redhat.tuned.conf
    /etc/dbus-1/system.d/FirewallD.conf
    /etc/dbus-1/system.d/dnsmasq.conf
    /etc/dbus-1/session.conf
    /etc/dbus-1/system.conf
    /etc/depmod.d/dist.conf
    /etc/modprobe.d/tuned.conf
    /etc/systemd/bootchart.conf
    /etc/systemd/coredump.conf
    /etc/systemd/journald.conf
    /etc/systemd/logind.conf
    /etc/systemd/system.conf
    /etc/systemd/user.conf
    /etc/rsyslog.d/listen.conf
    /etc/X11/xorg.conf.d/00-keyboard.conf
    /etc/prelink.conf.d/nss-softokn-prelink.conf
    /etc/prelink.conf.d/fipscheck.conf
    /etc/prelink.conf.d/grub2.conf
    /etc/ld.so.conf
    /etc/ld.so.conf.d/mariadb-x86_64.conf
    /etc/ld.so.conf.d/kernel-3.10.0-693.el7.x86_64.conf
    /etc/nsswitch.conf
    /etc/udev/udev.conf
    /etc/NetworkManager/NetworkManager.conf
    /etc/libaudit.conf
    /etc/fuse.conf
    /etc/GeoIP.conf
    /etc/selinux/semanage.conf
    /etc/selinux/targeted/setrans.conf
    /etc/sysctl.conf
    /etc/krb5.conf
    /etc/security/pwquality.conf
    /etc/security/access.conf
    /etc/security/chroot.conf
    /etc/security/group.conf
    /etc/security/limits.conf
    /etc/security/limits.d/20-nproc.conf
    /etc/security/namespace.conf
    /etc/security/pam_env.conf
    /etc/security/sepermit.conf
    /etc/security/time.conf
    /etc/wpa_supplicant/wpa_supplicant.conf
    /etc/plymouth/plymouthd.conf
    /etc/tuned/tuned-main.conf
    /etc/vmware-tools/guestproxy-ssl.conf
    /etc/vmware-tools/vgauth.conf
    /etc/firewalld/firewalld.conf
    /etc/kdump.conf
    /etc/audisp/audispd.conf
    /etc/audisp/plugins.d/af_unix.conf
    /etc/audisp/plugins.d/syslog.conf
    /etc/audit/auditd.conf
    /etc/chrony.conf
    /etc/rsyslog.conf
    /etc/man_db.conf
    /etc/sudo-ldap.conf
    /etc/sudo.conf
    /etc/e2fsck.conf
    /etc/mke2fs.conf
    /etc/vconsole.conf
    /etc/locale.conf
    /etc/updatedb.conf
    /etc/dnsmasq.conf
    [root@centos-01 mytest]# find /etc/ -type f -name "*conf" -exec cat {} >> 2.txt ;
    [root@centos-01 mytest]# ls
    2.txt
    [root@centos-01 mytest]# du -sh 2.txt 
    240K    2.txt
    [root@centos-01 mytest]# find /etc/ -type f -name "*conf" -exec cat {} >> 2.txt ;
    [root@centos-01 mytest]# du -sh 2.txt 
    476K    2.txt
    [root@centos-01 mytest]# find /etc/ -type f -name "*conf" -exec cat {} >> 2.txt ;
    [root@centos-01 mytest]# du -sh 2.txt 
    1.2M    2.txt
    [root@centos-01 mytest]# find /etc/ -type f -name "*conf" -exec cat {} >> 2.txt ;
    [root@centos-01 mytest]# du -sh 2.txt 
    1.2M    2.txt
    [root@centos-01 mytest]# find /etc/ -type f -name "*conf" -exec cat {} >> 2.txt ;
    [root@centos-01 mytest]# du -sh 2.txt 
    1.2M    2.txt
    [root@centos-01 mytest]# find /etc/ -type f -name "*conf" -exec cat {} >> 2.txt ;
    [root@centos-01 mytest]# du -sh 2.txt 
    2.2M    2.txt
    [root@centos-01 mytest]# wc -l 2.txt 
    36486 2.txt
    

    gzip压缩工具

    语法:gzip [-dn] filename(n为1-9的数字)

    • “-d”:解压缩时使用
    • “-n” (n为1-9的数字):压缩等级,第1级为最快压缩,但压缩量最小;第9级的压缩速度最慢,但压缩量最大。默认级别为6,“--fast”和“--best”分别等价于“-1”和“-9”。
    [root@centos-01 mytest]# gzip 2.txt 
    [root@centos-01 mytest]# ls
    2.txt.gz
    [root@centos-01 mytest]# du -sh 2.txt.gz 
    376K    2.txt.gz
    [root@centos-01 mytest]# gzip -d 2.txt.gz 
    [root@centos-01 mytest]# ls
    2.txt
    [root@centos-01 mytest]# du -sh 2.txt 
    1.4M    2.txt
    [root@centos-01 mytest]# wc -l 2.txt 
    36486 2.txt
    [root@centos-01 mytest]# gzip -1 2.txt 
    [root@centos-01 mytest]# du -sh 2.txt.gz 
    444K    2.txt.gz
    [root@centos-01 mytest]# gunzip 2.txt.gz 
    [root@centos-01 mytest]# ls
    2.txt
    [root@centos-01 mytest]# gzip -9 2.txt 
    [root@centos-01 mytest]# du -sh 2.txt.gz 
    372K    2.txt.gz
    [root@centos-01 mytest]# ls
    2.txt.gz
    [root@centos-01 mytest]# file 2.txt.gz 
    2.txt.gz: gzip compressed data, was "2.txt", from Unix, last modified: Fri May  4 10:49:46 2018, max compression
    
    • zcat命令查看压缩文件内容
    [root@centos-01 mytest]# zcat 2.txt.gz

    [root@centos-01 mytest]# ls
    2.txt.gz
    [root@centos-01 mytest]# gzip -d 2.txt.gz 
    [root@centos-01 mytest]# gzip -c 2.txt > /tmp/2.txt.gz
    [root@centos-01 mytest]# ls
    2.txt
    [root@centos-01 mytest]# ls /tmp/
    1.txt     systemd-private-ad61a62cb5b4492ca6ac55582093dd32-chronyd.service-yzD92d
    2.txt.gz  systemd-private-ad61a62cb5b4492ca6ac55582093dd32-vgauthd.service-inJewP
    mytest    systemd-private-ad61a62cb5b4492ca6ac55582093dd32-vmtoolsd.service-Exaldt
    [root@centos-01 mytest]# file /tmp/2.txt.gz 
    /tmp/2.txt.gz: gzip compressed data, was "2.txt", from Unix, last modified: Fri May  4 10:49:46 2018
    [root@centos-01 mytest]# gzip -d -c /tmp/2.txt.gz > /tmp/mytest/3.txt
    [root@centos-01 mytest]# ls
    2.txt  3.txt
    [root@centos-01 mytest]# wc -l 2.txt 3.txt 
      36486 2.txt
      36486 3.txt
      72972 总用量
    [root@centos-01 mytest]# du -sh *.txt
    1.4M    2.txt
    1.4M    3.txt
    • gzip是不支持压缩目录的。

    bzip2压缩工具

    [root@centos-01 mytest]# bzip2 2.txt 
    -bash: bzip2: 未找到命令
    [root@centos-01 mytest]# yum install -y bzip2

    语法:bzip2 [-dz] filename

    • “-d”:解压缩
    • “-z”:压缩
    [root@centos-01 mytest]# bzip2 2.txt 
    [root@centos-01 mytest]# ls
    2.txt.bz2  3.txt
    [root@centos-01 mytest]# du -sh 2.txt.bz2 
    160K    2.txt.bz2
    [root@centos-01 mytest]# bzip2 -d 2.txt.bz2 
    [root@centos-01 mytest]# ls
    2.txt  3.txt
    [root@centos-01 mytest]# bzip2 2.txt 
    [root@centos-01 mytest]# bunzip2 2.txt.bz2 
    [root@centos-01 mytest]# ls
    2.txt  3.txt
    [root@centos-01 mytest]# ls /tmp/
    1.txt     systemd-private-604486059e93474a8b695802ff294d42-chronyd.service-nvD2qs
    2.txt.gz  systemd-private-604486059e93474a8b695802ff294d42-vgauthd.service-xKKbjw
    mytest    systemd-private-604486059e93474a8b695802ff294d42-vmtoolsd.service-yaJKgA
    [root@centos-01 mytest]# bzip2 -c 2.txt > /tmp/3.txt.bz2
    [root@centos-01 mytest]# du -sh /tmp/3.txt.bz2 
    160K    /tmp/3.txt.bz2
    [root@centos-01 mytest]# bzip2 -d -c /tmp/3.txt.bz2 > 4.txt
    [root@centos-01 mytest]# ls
    2.txt  3.txt  4.txt
    [root@centos-01 mytest]# du -sh 4.txt 
    1.4M    4.txt
    • bzcat命令查看压缩文件内容
    [root@centos-01 mytest]# bzcat /tmp/3.txt.bz2
    • bzip2不可以压缩目录

    xz压缩工具

    [root@centos-01 mytest]# xz 2.txt 
    [root@centos-01 mytest]# ls
    2.txt.xz  3.txt  4.txt
    [root@centos-01 mytest]# du -sh 2.txt.xz 
    56K 2.txt.xz
    [root@centos-01 mytest]# xz -d 2.txt.xz 
    [root@centos-01 mytest]# ls
    2.txt  3.txt  4.txt
    [root@centos-01 mytest]# xz 2.txt 
    [root@centos-01 mytest]# unxz 2.txt.xz 
    [root@centos-01 mytest]# ls
    2.txt  3.txt  4.txt
    [root@centos-01 mytest]# ls /tmp/
    1.txt      systemd-private-604486059e93474a8b695802ff294d42-chronyd.service-nvD2qs
    2.txt.gz   systemd-private-604486059e93474a8b695802ff294d42-vgauthd.service-xKKbjw
    3.txt.bz2  systemd-private-604486059e93474a8b695802ff294d42-vmtoolsd.service-yaJKgA
    mytest
    [root@centos-01 mytest]# xz -c 2.txt > /tmp/4.txt.xz
    [root@centos-01 mytest]# xz -d -c /tmp/4.txt.xz > ./1.txt
    [root@centos-01 mytest]# ll
    总用量 5712
    -rw-r--r--. 1 root root 1460358 54 20:42 1.txt
    -rw-r--r--. 1 root root 1460358 54 10:49 2.txt
    -rw-r--r--. 1 root root 1460358 54 20:28 3.txt
    -rw-r--r--. 1 root root 1460358 54 20:30 4.txt
    • xzcat命令查看压缩文件内容
    [root@centos-01 mytest]# xzcat /tmp/4.txt.xz

    zip压缩工具

    [root@centos-01 mytest]# tree /tmp/
    /tmp/
    ├── 1.txt
    ├── 2.txt.gz
    ├── 3.txt.bz2
    ├── 4.txt.xz
    ├── mytest
    │   ├── 1.txt
    │   ├── 2.txt
    │   ├── 3.txt
    │   ├── 4.txt
    │   └── yourtest
    │       ├── 1.txt
    │       ├── 2.txt
    │       ├── 3.txt
    │       └── 4.txt
    ├── systemd-private-604486059e93474a8b695802ff294d42-chronyd.service-nvD2qs
    │   └── tmp
    ├── systemd-private-604486059e93474a8b695802ff294d42-vgauthd.service-xKKbjw
    │   └── tmp
    └── systemd-private-604486059e93474a8b695802ff294d42-vmtoolsd.service-yaJKgA
        └── tmp
            └── vmware-root
    
    9 directories, 12 files
    [root@centos-01 mytest]# du -sh yourtest/
    5.6M    yourtest/
    [root@centos-01 mytest]# zip 2.txt.zip 2.txt
    -bash: zip: 未找到命令
    [root@centos-01 mytest]# yum install -y zip
    
    [root@centos-01 mytest]# zip 2.txt.zip 2.txt
      adding: 2.txt (deflated 74%)
    [root@centos-01 mytest]# du -sh 2.txt.zip 
    376K    2.txt.zip
    [root@centos-01 mytest]# ls
    1.txt  2.txt  2.txt.zip  3.txt  4.txt  yourtest
    [root@centos-01 mytest]# zip -r yourtest.zip yourtest 3.txt 
      adding: yourtest/ (stored 0%)
      adding: yourtest/3.txt (deflated 74%)
      adding: yourtest/4.txt (deflated 74%)
      adding: yourtest/2.txt (deflated 74%)
      adding: yourtest/1.txt (deflated 74%)
      adding: 3.txt (deflated 74%)
    [root@centos-01 mytest]# ls
    1.txt  2.txt  2.txt.zip  3.txt  4.txt  yourtest  yourtest.zip
    [root@centos-01 mytest]# du -sh yourtest.zip 
    1.9M    yourtest.zip
    [root@centos-01 mytest]# unzip
    -bash: unzip: 未找到命令
    [root@centos-01 mytest]# yum install -y unzip
    [root@centos-01 mytest]# unzip yourtest.zip 
    Archive:  yourtest.zip
    replace yourtest/3.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename: n
    replace yourtest/4.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename: y
      inflating: yourtest/4.txt          
    replace yourtest/2.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename: A              
      inflating: yourtest/2.txt          
      inflating: yourtest/1.txt          
      inflating: 3.txt                   
    [root@centos-01 mytest]# mkdir test
    [root@centos-01 mytest]# unzip 2.txt.zip -d test/
    Archive:  2.txt.zip
      inflating: test/2.txt              
    [root@centos-01 mytest]# ls
    1.txt  2.txt  2.txt.zip  3.txt  4.txt  test  yourtest  yourtest.zip
    [root@centos-01 mytest]# unzip -l yourtest.zip 
    Archive:  yourtest.zip
      Length      Date    Time    Name
    ---------  ---------- -----   ----
            0  05-04-2018 21:27   yourtest/
      1460358  05-04-2018 21:27   yourtest/3.txt
      1460358  05-04-2018 21:27   yourtest/4.txt
      1460358  05-04-2018 21:27   yourtest/2.txt
      1460358  05-04-2018 21:27   yourtest/1.txt
      1460358  05-04-2018 20:28   3.txt
    ---------                     -------
      7301790                     6 files
    

    tar打包工具

    tar本身为一个打包工具,可以把目录打包成一个文件,它的好处是它把所有文件整合成一个大文件整体,方便拷贝或者移动。

    语法:tar [-zjxcvfpP] filename

    • “-z”:同时用gzip压缩
    • “-j”:同时用bzip2压缩
    • “-x”:解包或者解压缩
    • “-t”:查看tar包里面的文件
    • “-c”:建立一个tar包或者压缩文件包
    • “-v”:可视化
    • “-f”:后面跟文件名,压缩时跟“-f filename”,意思是压缩后的文件名为filename,解压时跟“-f 文件名”,意思是解压filename。需要注意,如果是多个参数组合的情况下带有“-f”,请把“-f”写到最后面。
    • “-p”:使用原文件的属性,压缩前什么属性压缩后还什么属性。
    • “-P”:可以使用绝对路径。
    • --exclude filename:在打包或者压缩时,不要将filename文件包括在内。
    [root@centos-01 mytest]# ls
    1.txt  2.txt  2.txt.zip  3.txt  4.txt  test  yourtest  yourtest.zip
    [root@centos-01 mytest]# tar -cvf yourtest.tar yourtest
    yourtest/
    yourtest/3.txt
    yourtest/4.txt
    yourtest/2.txt
    yourtest/1.txt
    [root@centos-01 mytest]# ls
    1.txt  2.txt  2.txt.zip  3.txt  4.txt  test  yourtest  yourtest.tar  yourtest.zip
    [root@centos-01 mytest]# tar -xvf yourtest.tar 
    yourtest/
    yourtest/3.txt
    yourtest/4.txt
    yourtest/2.txt
    yourtest/1.txt
    [root@centos-01 mytest]# tar -tf yourtest.tar 
    yourtest/
    yourtest/3.txt
    yourtest/4.txt
    yourtest/2.txt
    yourtest/1.txt
    [root@centos-01 mytest]# ls
    1.txt  2.txt  2.txt.zip  3.txt  4.txt  test  yourtest  yourtest.tar  yourtest.zip
    [root@centos-01 mytest]# tar -cvf yourtest.tar --exclude 1.txt yourtest
    yourtest/
    yourtest/3.txt
    yourtest/4.txt
    yourtest/2.txt
    

    tar打包并压缩

    [root@centos-01 mytest]# tar -zcvf yourtest.tar.gz yourtest
    yourtest/
    yourtest/3.txt
    yourtest/4.txt
    yourtest/2.txt
    yourtest/1.txt
    [root@centos-01 mytest]# du -sh yourtest.tar.gz 
    1.5M    yourtest.tar.gz
    [root@centos-01 mytest]# du -sh yourtest
    5.6M    yourtest
    [root@centos-01 mytest]# tar -jcvf yourtest.tar.bz2 yourtest
    yourtest/
    yourtest/3.txt
    yourtest/4.txt
    yourtest/2.txt
    yourtest/1.txt
    [root@centos-01 mytest]# du -sh yourtest.tar.bz2 
    544K    yourtest.tar.bz2
    [root@centos-01 mytest]# tar -Jcvf yourtest.tar.xz yourtest
    yourtest/
    yourtest/3.txt
    yourtest/4.txt
    yourtest/2.txt
    yourtest/1.txt
    [root@centos-01 mytest]# du -sh yourtest.tar.xz 
    60K yourtest.tar.xz
    [root@centos-01 mytest]# ls
    1.txt  2.txt.zip  4.txt  yourtest      yourtest.tar.bz2  yourtest.tar.xz
    2.txt  3.txt      test   yourtest.tar  yourtest.tar.gz   yourtest.zip
    [root@centos-01 mytest]# tar -tf yourtest.tar.gz 
    yourtest/
    yourtest/3.txt
    yourtest/4.txt
    yourtest/2.txt
    yourtest/1.txt
    [root@centos-01 mytest]# tar -tf yourtest.tar.bz2 
    yourtest/
    yourtest/3.txt
    yourtest/4.txt
    yourtest/2.txt
    yourtest/1.txt
    [root@centos-01 mytest]# tar -tf yourtest.tar.xz 
    yourtest/
    yourtest/3.txt
    yourtest/4.txt
    yourtest/2.txt
    yourtest/1.txt
    
  • 相关阅读:
    Salesforce LWC学习(十二) Dependence Picklist实现
    Salesforce LWC学习(十一) port 1717报错的处理
    Salesforce LWC学习(十) 前端处理之 list 处理
    salesforce零基础学习(九十五)lightning out
    Salesforce LWC学习(九) Quick Action in LWC
    Salesforce LWC学习(八) Look Up组件实现
    第四百零一节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署virtualenv虚拟环境安装,与Python虚拟环境批量安装模块
    第四百节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署CentOS6.5安装python3.5.1
    第三百九十九节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署CentOS6.5安装mysql5.6
    第三百九十八节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署CentOS6.5系统环境设置
  • 原文地址:https://www.cnblogs.com/Genesis2018/p/8998088.html
Copyright © 2011-2022 走看看