Linux上的壓縮與歸檔

来源:https://www.cnblogs.com/alongdidi/archive/2019/04/23/compress_and_archive.html
-Advertisement-
Play Games

非常非常非常簡要的描述而已。 壓縮 壓縮的簡要原理是通過一些演算法,拿CPU的計算時間去換磁碟上存儲的空間。同時還可節省網路傳輸中的帶寬。 對於文本文件的壓縮效果比較好,對二進位程式、圖片等文件的壓縮效果就很差。 compress, uncompress 文件名:*.Z 古老的壓縮工具,目前已經不使用 ...


非常非常非常簡要的描述而已。

壓縮

壓縮的簡要原理是通過一些演算法,拿CPU的計算時間去換磁碟上存儲的空間。同時還可節省網路傳輸中的帶寬。

對於文本文件的壓縮效果比較好,對二進位程式、圖片等文件的壓縮效果就很差。

compress, uncompress

文件名:*.Z

古老的壓縮工具,目前已經不使用。

gzip, gunzip, zcat

文件名:*.gz

gzip用於壓縮文件,簡要語法。

# gzip [OPTION] FILE...

FILE是待壓縮的文件名,可多個。

[root@C7 tmp]# ls -l
total 364
-rw-r--r--. 1 root root  18104 Jan  3  2018 functions
-rw-r--r--  1 root root  22384 Apr 17 14:20 lvm_mount_point.xfsdump
-rw-------  1 root root 327049 Apr 23 16:20 messages
[root@C7 tmp]# gzip functions lvm_mount_point.xfsdump messages 
[root@C7 tmp]# ls -l
total 64
-rw-r--r-- 1 root root  5021 Jan  3  2018 functions.gz
-rw-r--r-- 1 root root   769 Apr 17 14:20 lvm_mount_point.xfsdump.gz
-rw------- 1 root root 50126 Apr 23 16:20 messages.gz

壓縮後,會自動刪除源文件,並生成.gz名稱的壓縮文件。

-d:用於解壓縮。等同於gunzip命令。

[root@C7 tmp]# gzip -d functions.gz
[root@C7 tmp]# gunzip functions.gz

同理,解壓後,壓縮文件消失,壓縮前的源文件生成。

-# --fast --best:“#”表示一個數字,取值為1~9,表示壓縮的效果。1表示最快--fast,9表示最好--best。預設是6。

-c:表示將壓縮後的數據流輸出到STDOUT,不會修改源文件。結合重定向可以實現壓縮文件時不刪除源文件。

[root@C7 tmp]# ls -l functions*
-rw-r--r-- 1 root root 18104 Jan  3  2018 functions
[root@C7 tmp]# gzip -c functions > functions.gz
[root@C7 tmp]# ls -l functions*
-rw-r--r-- 1 root root 18104 Jan  3  2018 functions
-rw-r--r-- 1 root root  5021 Apr 23 16:51 functions.gz

對於文本文件壓縮後的文件,是無法使用諸如cat等文本查看器直接查看了,想基於壓縮文件查看的話,可使用zcat。

[root@C7 tmp]# zcat functions.gz | tail
              "x$1" = xcondrestart ] ; then

        systemctl_redirect $0 $1
        exit $?
    fi
fi

strstr "$(cat /proc/cmdline)" "rc.debug" && set -x
return 0

bzip2, bunzip2, bzcat

文件名:*.bz2

命令功能與用法等同於gzip系列。

在gzip中想要在壓縮的時候保留源文件,需要通過-c選項結合重定向,而在bzip2中,可直接通過-k選項。

-k --keep:壓縮時,不刪除源文件。

[root@C7 tmp]# bzip2 -k lvm_mount_point.xfsdump
[root@C7 tmp]# ls -l lvm_mount_point.xfsdump*
-rw-r--r-- 1 root root 22384 Apr 17 14:20 lvm_mount_point.xfsdump
-rw-r--r-- 1 root root   764 Apr 17 14:20 lvm_mount_point.xfsdump.bz2

xz, unxz, xzcat

文件名:*.xz

命令功能與用法等同於bzip2系列。含-k選項。

壓縮小結

壓縮效果:xz>bzip2>gzip。

可通過file命令查看壓縮文件的實際/內部格式,不可以僅通過文件的擴展名來判斷一個文件的類型,擴展名僅作為用戶識別。

[root@C7 tmp]# file functions.gz lvm_mount_point.xfsdump.bz2 messages.xz 
functions.gz:                gzip compressed data, was "functions", from Unix, last modified: Wed Jan  3 00:29:40 2018
lvm_mount_point.xfsdump.bz2: bzip2 compressed data, block size = 900k
messages.xz:                 XZ compressed data

 

歸檔

上述的壓縮命令,是無法實現將多個文件合併壓縮為一個壓縮文件,或者針對目錄進行壓縮的。

[root@C7 tmp]# file init.d/
init.d/: directory
[root@C7 tmp]# gzip init.d/
gzip: init.d/ is a directory -- ignored
[root@C7 tmp]# bzip2 init.d/
bzip2: Input file init.d/ is a directory.
[root@C7 tmp]# xz init.d/
xz: init.d/: Is a directory, skipping

想實現該需求,就需要歸檔。

歸檔的作用是可以將多個文件/目錄合併為一個檔案文件(archive),即類似於Windows上的WinRAR的打包操作。

歸檔工具有兩種,cpio和tar,前者是比較古老的命令,已逐漸被後者所取代,因此本文簡述一下後者的使用即可。

創建檔案

檔案文件名:*.tar、*.tar.gz、*.tar.bz2、*.tar.xz

# tar -c[zjJ]f ARCH_FILE FILE...

-c:表示創建檔案。

-f:指定檔案文件名(ARCH_FILE),後面必須跟上檔案文件名,否則報錯。例如“-fc”會報錯。

FILE:待歸檔文件/目錄。

在歸檔的時候,可以指定壓縮。tar的壓縮本質上是調用了上文所說到的壓縮工具,而不是它本身就具備了壓縮的能力。

-z:使用gzip壓縮。

-j:使用bzip2壓縮。

-J:使用xz壓縮。

[root@C7 tmp]# tar -czf test.tar.gz functions init.d/ lvm_mount_point.xfsdump messages 
[root@C7 tmp]# file test.tar.gz 
test.tar.gz: gzip compressed data, from Unix, last modified: Tue Apr 23 17:48:25 2019

歸檔操作不會刪除源文件。因此歸檔壓縮後,源文件“functions init.d/ lvm_mount_point.xfsdump messages”還存在。

展開檔案

# tar -xf ARCH_FILE [-C EXTRACT_DIR]

tar展開歸檔,會自動覆蓋已有文件。不需要指定原壓縮格式,tar會自動識別。

[root@C7 tmp]# rm -rf functions lvm_mount_point.xfsdump messages init.d/
[root@C7 tmp]# tar -xf test.tar.gz
[root@C7 tmp]# ls -ld functions lvm_mount_point.xfsdump messages init.d/
-rw-r--r-- 1 root root  18104 Jan  3  2018 functions
drwxr-xr-x 2 root root     70 Apr 23 17:31 init.d/
-rw-r--r-- 1 root root  22384 Apr 17 14:20 lvm_mount_point.xfsdump
-rw------- 1 root root 327049 Apr 23 16:20 messages

-C EXTRACT_DIR:用於指定歸檔展開的路徑,預設不指定的話,是在當前目錄下。

[root@C7 tmp]# mkdir new_dir
[root@C7 tmp]# tar -xf test.tar.gz -C new_dir/
[root@C7 tmp]# ls -l new_dir/
total 364
-rw-r--r-- 1 root root  18104 Jan  3  2018 functions
drwxr-xr-x 2 root root     70 Apr 23 17:31 init.d
-rw-r--r-- 1 root root  22384 Apr 17 14:20 lvm_mount_point.xfsdump
-rw------- 1 root root 327049 Apr 23 16:20 messages

查看檔案

# tar -tf ARCH_FILE
[root@C7 tmp]# tar -tf test.tar.gz 
functions
init.d/
init.d/README
init.d/functions
init.d/netconsole
init.d/network
lvm_mount_point.xfsdump
messages

 


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

-Advertisement-
Play Games
更多相關文章
  • 環境準備 vs開發環境:vs2017 consul版本: 1.4.4 netcore版本:2.1 安裝Consul 1.從官網下載consul到本地,選擇系統對應的版本進行下載到本地,下載地址:https://www.consul.io/downloads.html 2.下載到本地之後解壓壓縮文件, ...
  • 前言 作為一個Windows系統下的開發者,我對於Core的使用機會幾乎為0,但是考慮到微軟的戰略規劃,我覺得,Core還是有先瞭解起來的必要。 因為,目前微軟已經搞出了兩個框架了,一個是Net標準(.NetFramework),一個是Net Core。 而新特性的更新幾乎都是在Net Core這個 ...
  • 當進行數據遷移的時候提示 修改appsettings配置連接串的Trusted_Connection 屬性 Trusted_Connection 當為 false 時,將在連接中指定用戶 ID 和密碼。當為 true 時,將使用當前的 Windows 帳戶憑據進行身份驗證。 可識別的值為 true、 ...
  • 當進行cobbler配置後,併進行web登錄時,出現錯誤: 先查看其日誌位置 #cat /etc/httpd/conf.d/ssl.conf 在其中位置發現其錯誤的日誌位置為/etc/httpd/logs/ssl_error_log 打開文件#cat /etc/httpd/logs/ssl_erro ...
  • 安裝32位程式運行支持 可能報錯: 解決方案: 若沒有aptitude需先安裝該軟體 在提示中第一處選n, 第二處選y, 如下: 安裝arm編譯gcc 安裝 測試是否安裝成功 在目錄/opt/gcc 4.4.4 glibc 2.11.1 multilib 1.0/arm fsl linux gnue ...
  • 因業務需要在DHCP伺服器上綁定設備MAC,提示”指定的IP地址或硬體地址正被其他客戶端使用”,與業務同事溝通之前該設備做過地址保留,具體對應地址遺忘了。問題描述:a.按照用戶需求添加地址保留:b.提示:指定的IP地址或硬體地址正被其他客戶端使用;添加失敗。環境描述:Windows DHCP Ser... ...
  • Triggered buffer support觸發緩衝支持 在許多數據分析應用中,能夠基於某些外部信號(觸發器)捕獲數據是比較有用的。 這些觸發器可能是: 數據就緒信號 連接到某個外部系統的IRQ線路(GPIO或其他) 處理器周期性中斷 用戶空間在sysfs中讀/寫特定文件 數據就緒信號 連接到某 ...
  • Linux系統的目錄結構(必須掌握的內容) 所有目錄只有一個頂點/(根),所有目錄的起點。 只有一棵樹 Linux的目錄結構也是有規律的,而且也是按照類別組織的。 應用程式 /usr/bin 數據文件,幫助/usr/share 配置文件/etc/ 啟動命令 /etc/init.d/ 結論: 通俗的理 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...