壓縮(zip)

来源:http://www.cnblogs.com/argor/archive/2017/11/28/7908179.html
-Advertisement-
Play Games

預設情況這些壓縮工具在壓縮後會刪除源文件(zip除外);而且預設只壓縮文件,而不壓縮目錄(鏈接到打包程式)。 gzip bzip2 zip GNU tar 1.gzip 1.gzip 1.1.壓縮 gzip 壓縮工具壓縮一個普通文件擴展名為“.gz”。壓縮後刪除了原文件。 可以一次壓縮多個文件。壓縮 ...


  預設情況這些壓縮工具在壓縮後會刪除源文件(zip除外);而且預設只壓縮文件,而不壓縮目錄(鏈接到打包程式)。

    1. gzip

    2. bzip2

    3. zip

    4. GNU tar

     

    • 1.gzip


    1.1.壓縮

      gzip 壓縮工具壓縮一個普通文件擴展名為“.gz”。壓縮後刪除了原文件。

    $ gzip user.sh

      可以一次壓縮多個文件。壓縮時每個文件獨立壓縮。

    $ gzip *

     

    1.2.解壓

      解壓縮;同樣刪除原文件。

    $ gunzip user.sh.gz

      其實,解壓縮使用的命令是個腳本。

    #!/bin/sh
    PATH=${GZIP_BINDIR-'/bin'}:$PATH
    exec gzip -d "$@"

     

    1.3.測試壓縮文件完整性

    $ gzip -t hello
    gzip: hello: unexpected end of file

     

    1.4.查看壓縮文件內容

    $ zcat hello.gz

     

    • 2.bzip2/xz


    2.1.壓縮

      壓縮後擴展名“.bz2”,同樣會刪除原文件。

    $ bzip2 *

      使用星號時,會壓縮多個文件,每個文件獨立壓縮。

     

    2.2.解壓

    $ bunzip2 *
    $ bzip2 -d *

     

    2.3.保留原文件

    $ bzip2 -k hello

      不支持使用星號

     

    2.4.查看壓縮文件內容

    $ bzcat hello.bz2

     

    • 3.zip


      壓縮時指定壓縮包名稱為“foo”,最後生成壓縮包名為“foo.zip”。追加成員,無須特定選項。
      壓縮時,運行在unix環境下,支持正在表達式匹配:?、*、[]。分別代表匹配單個字元、匹配任意數量字元(包括空)、其中之一匹配。

    3.1.壓縮目錄

      可以直接壓縮目錄

    $ zip mash.zip mash/

     

      這樣確實可以直接壓縮目錄,但是如果目錄“mash”下全是目錄文件,那麼壓縮包里就是空的。因為之壓縮了目錄(確實是壓縮了)。

      壓縮目錄 "zip-dir" 下的所有文件(包含其中子目錄及子目錄中文件),解壓後還有目錄 “zip-dir”。(選項帶“-r”、末尾帶星號“*”)

    $ zip -r zip-dir.zip zip-dir/*

     

    3.2.壓縮文件

    壓縮當前目錄下的所有文件和目錄(不包含當前目錄子目錄中的文件)。

    $ zip zip-dir *

     

    3.3.指定壓縮包位置

    指定到其它目錄下。

    $ zip /test/zip-dir *

     

    3.4.壓縮後刪除原始文件

    創建壓縮文件“all.zip”的同時刪除原始文件“all”。

    $ cd zip-dir
    $ mkdir all
    $ zip -rm all all

     

    追加當前目錄下的文件到壓縮文件;並刪除原始文件。

    $ zip -rm all *

     

    3.5.為壓縮包設置密碼

      給壓縮包加密,使用選項“-e”。

    $ zip -r -e bin.zip bin/*
    Enter password: 
    Verify password: 
      adding: bin/zcw_bak4release-3.2.sh (deflated 57%)
      adding: bin/zcw_mkdir4bak-2.2.sh (deflated 52%)
      adding: bin/zcw_replace4release-2.2.sh (deflated 58%)
      adding: bin/zcw_Virtualfile-1.3.sh (deflated 56%)

     

      可以直接在命令行指定加密密碼,使用大寫“-P”:

    # zip -r -e -P hello bin.zip bin/*

     

    3.6.顯示壓縮了多少文件

    在壓縮完成後顯示壓縮了多少文件。

    $ zip -dc bin.zip bin/*
      0/  4 updating: bin/zcw_bak4release-3.2.sh (deflated 57%)
      1/  3 updating: bin/zcw_mkdir4bak-2.2.sh (deflated 52%)
      2/  2 updating: bin/zcw_replace4release-2.2.sh (deflated 58%)
      3/  1 updating: bin/zcw_Virtualfile-1.3.sh (deflated 56%)

     

    3.7.壓縮後去掉目錄

      僅壓縮指定目錄下的文件而不包含其中子目錄,也不包含當前目錄(zip-dir)。(解壓後只有文件不見目錄)

    $ zip -j zip-dir zip-dir/*

     

      實例:獲取tomcat的日誌(壓縮後路徑較長,使用不便):

    [root@right mag]# zip -j catalina.zip /home/work/tomcat4file/logs/catalina.out 
      adding: catalina.out (deflated 93%)

     

    3.8.改變壓縮輸入方式(壓縮文件來自管道)

    $ find /etc/sysconfig/network-scripts -name "ifcfg*" -print | zip ifcfg -@

     

    3.9.追加文件到壓縮包

      追加文件到壓縮包,啥都不要直接操作。

    [root@right mag]# zip back 1.txt
      adding: 1.txt (stored 0%)
    [root@right mag]# zip back 2.conf
      adding: 2.conf (stored 0%)
    [root@right mag]# zip back 3.xml 4.html 5.sql
      adding: 3.xml (stored 0%)
      adding: 4.html (stored 0%)
      adding: 5.sql (stored 0%)
    [root@right mag]# unzip -l back
    Archive:  back.zip
      Length      Date    Time    Name
    ---------  ---------- -----   ----
            0  01-11-2014 15:55   1.txt
            0  01-11-2014 15:55   2.conf
            0  01-11-2014 15:55   3.xml
            0  01-11-2014 15:55   4.html
            0  01-11-2014 15:55   5.sql
    ---------                     -------
            0                     5 files

     

    3.10.壓縮指定文件

      通過選項“-i”、“--include”獲取指定格式的文件:

    zip -r foo . -i \*.c

      只壓縮某些日誌,實例:

    [root@right mag]# zip -r lz.zip /home -i \*.out
      adding: home/work/tomcat4file/logs/catalina.out (deflated 93%)
    [root@right mag]# unzip -l lz.zip 
    Archive:  lz.zip
      Length      Date    Time    Name
    ---------  ---------- -----   ----
    132020334  01-11-2014 15:09   home/work/tomcat4file/logs/catalina.out
    ---------                     -------
    132020334                     1 file

     

      研發常常會找運維人員要文件:

    [root@iZ28srao5ssZ mag]# zip -rj config.zip /home/work -i "*config.properties"
      adding: config.properties (deflated 63%)

     

    3.11.壓縮時跳過指定文件

      指定選項“-x”、“--exclude”。
      跳過手機客戶程式:

    # zip -r 160.zip /home/work/release/* -x \*.apk

     

    3.12.刪除壓縮文件中某個指定文件

      指定名稱名,使用選項“-d”刪除。

    [root@iZ28srao5ssZ mag]# zip -d config.zip home/work*
    deleting: home/work/release/caiBao/WEB-INF/classes/config.properties
    [work@app47 .donatello]$ zip -d 10_zcw_release-3.0.1.zip _re*
    deleting: _replace4release-3.2.sh

     

    3.13.檢查文件

      選項“-T”

     

    # zip -T cat-47.zip 
    test of cat-47.zip OK

     

     

     

    • unzip

    3.1.測試壓縮文件

      檢查壓縮後有沒有錯誤產生

    $ unzip -t bin
    Archive:  bin.zip
        testing: bin/                     OK
        testing: bin/zcw_bak4release-3.2.sh   OK
        testing: bin/zcw_Virtualfile-1.3.sh   OK
    No errors detected in compressed data of bin.zip.
    $ unzip -tq bin
    No errors detected in compressed data of bin.zip.

     

    3.2.列出壓縮包中的文件

    $ unzip -l zip-dir.zip

      詳細列出壓縮包中的文件信息

    $ unzip -v zip-dir.zip

     

    3.3.解壓所有文件  

      提取zcw.zip中所有文件

    $ unzip zcw
    Archive:  zcw.zip
      inflating: zcw_replace4release-2.3.sh  
      inflating: zcw_Virtualfile-1.3.sh

     

      解壓時,去掉目錄結構。

    $ unzip -j bin

     

      解壓指定的某個文件

    $ unzip bin \*zcw_V*.sh
    Archive:  bin.zip
      inflating: bin/zcw_Virtualfile-1.3.sh

     

    • FAQ: 解壓後的位置

    $ zip base.repo.zip /etc/yum.repos.d/CentOS-Base.repo
    $ unzip -l base.repo.zip
    Archive:  base.repo.zip
      Length      Date    Time    Name
    ---------  ---------- -----   ----
         1926  12-28-2014 14:22   etc/yum.repos.d/CentOS-Base.repo
    ---------                     -------
         1926                     1 file

     

    即:

    $ cd /data/Test
    $ unzip /root/base.repo.zip
    $ ls -R etc/
    wKiom1SiZtjDnZJyAABF2UK-zJg639.jpg
    $ ls /data/Test/etc/yum.repos.d/CentOS-Base.repo
    /data/Test/etc/yum.repos.d/CentOS-Base.repo

     

    3.4.指定解壓目錄

      預設解壓所有文件、子目錄到當前目錄下,使用選項“-d”可以指定目錄。

    # unzip caiBao.zip -d /home/work/payment_front_pro/release/

     


     

    主要操作模式

      -cf  歸檔打包

      -tf  查看歸檔包(效果類似於“ls”的顯示樣式,but不是以空白分割,而是換行分割)

      -tvf  查看歸檔包(效果類似於“ls -l”的顯示樣式)

      -xf  歸檔解包

     

    通用選項

      -C  指定解壓目錄

      -v  詳細列出已處理的文件

    $ tar -cf demo.tar demo/
    $ tar -tf demo.tar
    ……
    
     
    
    $ tar -xf nari.tar

     

    4.1.壓縮

    $ tar -zcvf 2022.tar.gz 2022

      壓縮時帶上時間信息

    $ tar -zcf etc_$(date +%F).tar.gz /etc
    $ tar -jcf root_$(date +%Y.%m.%d-%H%M%S).tar.bz2 /root
    $ tar -jcf root_$(date +%y.%m.%d-%H%M%S).tar.bz2 /root

     

    4.2.解壓縮

    $ tar -zxvf 2022.tar.gz
    $ tar -zxvf 2022.tgz
    $ tar -jxvf 2022.tar.bz2
    $ tar -Jxvf 2022.tar.Z
    $ tar -xf 2022.tar.gz

     

      預設還原到原始打包的路徑下;可以使用選項“-C”指定解壓後的目錄。

    $ tar -zxf /opt/etc.tar.gz
    $ tar -zxf /opt/etc.tar.gz -C /root

     

    4.3.查看壓縮包文件結構

    查看壓縮文件列表

    $ tar -tf etc.tar.gz

    詳細查看壓縮文件列表

    $ tar -tvf etc.tar.gz

     

     

    4.4.打包時跳過某些文件

    選項“-X”、“--exclude”

    $ tar --exclude=/data/tomcat_cb/logs/* -zcvf  tom.tgz /data/tomcat_cb/

     


    您的分享是我們最大的動力!

    -Advertisement-
    Play Games
    更多相關文章
    • 查找今天過生日的同學 這裡表中已經存儲了生日,所以思路是取出date_birth去今天的日期相比較 ...
    • 1、表的基本概念 每一行代表一條唯一的記錄,每一列代表記錄中的一個欄位。 2、創建表 例子: 3、查看表結構 (1)DESCRIBE語句查看表定義 語法: 例子: (2)SHOW CREATE TABLE語句查看詳細表詳細定義 語法: 例子: 註意:在顯示表詳細定義信息時,可以使用“;”、“\g”和 ...
    • (開頭閑淡)項目需要必須安裝SQL的,查了很久,斷斷續續用了各種方法,今天終於用了正確的姿(xia)勢(mo)弄成了。 最開始用的方法是調用Win的API模擬滑鼠操作安裝的,嗯,雖然勉強可以,就是有些狗屎。 大概可以放到GitHub 上丟人現眼了 今天搜資料庫創建的問題看到"無人值守安裝sql",才 ...
    • Redis 持久化之RDB和AOF Redis 有兩種持久化方案,RDB (Redis DataBase)和 AOF (Append Only File)。如果你想快速瞭解和使用RDB和AOF,可以直接跳到文章底部看總結。本章節通過配置文件,觸發快照的方式,恢複數據的操作,命令操作演示,優缺點來學習 ...
    • 首先聲明:未經本人同意,請勿轉載,謝謝! 本人使用自己編譯的開源版本的greenplum資料庫用於學習,版本為PostgreSQL 8.3.23 (Greenplum Database 4.3.99.00 build dev) on x86_64-unknown-linux-gnu, compile ...
    • 恢復內容開始 問題引起原因: 由於在執行大量插入操作的時候意外終止程式之後, MySQl的線程並沒有被終止,導致表不能打開和操作 - 解決思路就是找到等待的線程並kill -- 查看所有進程 1、SHOW PROCESSLIST; 2、找到卡死或在等待的線程,kill,假設這裡是49496卡死了 K ...
    • 1、NN宕掉切不過去先看zkfc的log引起原因是dfs.ha.fencing.ssh.private-key-files的配置路徑配錯造成以致無法找到公鑰 2、dfs.namenode.shared.edits.dir為JN啟動的所在地址,在部署時必須啟動對應伺服器的JN,否則無法完成NN的元信息 ...
    • axios的介紹就不用了吧,api有具體的介紹axios或者是axios中文; 主要講的就是我自己在第一次使用axios中遇到的問題,及二次封裝 先來說說二次封裝,之前自己也是網上找了很多同學的封裝,要麼就是把post和get請求分開的,要麼就是只大概寫了一種的或者只是吧API又複製粘貼了的,都不太 ...
    一周排行
      -Advertisement-
      Play Games
    • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
    • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
    • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
    • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
    • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
    • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
    • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
    • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
    • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
    • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...