壓縮(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
    • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
    • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
    • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
    • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
    • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
    • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
    • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
    • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
    • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
    • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...