Linux中國

命令行生存指南:拆分與合併

操作概述

備份文件時常常涉及到大文件傳輸的問題,遇到網路質量不佳或者其他問題常常會導致傳輸中斷,而不得不進行重傳。如果採用先將大文件拆分成多個小文件進行傳輸、待全部傳輸完成後合併所有文件的方式,往往可以改善傳輸體驗。

這一節將會介紹 Linux 命令行下的文件拆分與合併操作。

概念和術語

拆分,顧名思義,就是將一個大的文件分割成若干個較小的文件,這些小文件按次序拼接後可以還原大文件。通常情況下,根據文件大小進行拆分是較為常見的方式;但由於文本文件具有行數特徵,所以除了按大小拆分之外,也可以按行數拆分。

合併,就是將若干個較小的文件拼接成一個較大文件。通常只需要按次序連接即可,相對比較簡單。

通常情況下,為確保拆分前和合併後的兩個文件相同,需要進行驗證。

操作實戰

場景一:使用 split 拆分文件

難度
演示用發行版 Fedora 32
涉及命令 split

split 是 Linux 環境提供的文件拆分實用程序,同時支持二進位文件和文本文件。通常情況下已經隨 coreutils 內置於系統中,無需另行安裝。

按大小拆分

二進位文件和文本文件按大小拆分時使用的選項不同:

  • 二進位文件使用 -b 選項指定分割後的文件大小。
  • 文本文件則使用 -C 選項指定分割後的文件大小。

二者用法類似,只需要:

split [選項] [大小] [待拆分文件] [拆分後的前綴(可選)]

以將 debian-live-10.5.0-amd64-lxqt.iso(約 2.4 GB)按 100MB 大小進行拆分為例:

> split -b 100M debian-live-10.5.0-amd64-lxqt.iso debian-live-

可以看到原文件被拆分成 25 個更小的文件,從 aa 到 ay:

debian-live-aa  debian-live-ad  debian-live-ag  debian-live-aj  debian-live-am  debian-live-ap  debian-live-as  debian-live-av  debian-live-ay
debian-live-ab  debian-live-ae  debian-live-ah  debian-live-ak  debian-live-an  debian-live-aq  debian-live-at  debian-live-aw
debian-live-ac  debian-live-af  debian-live-ai  debian-live-al  debian-live-ao  debian-live-ar  debian-live-au  debian-live-ax

場景二:使用 cat 合併文件

難度
演示用發行版 Fedora 32
涉及命令 catdiff

cat 是 linux 環境提供的文件連接實用程序,能夠連接文件並將其輸出到標準輸出。通常情況下已經隨 coreutils 內置於系統中,無需另行安裝。

值得注意的是,為了保證合併後的文件和原始文件一致,在有條件的情況下,可以用 diff 命令驗證。

合併拆分後的文件

使用 cat 合併文件可以採用 cat [文件...] > [合併後的文件名] 的格式,此方法對二進位文件和文本文件均有效。

以之前的 debian-live-aa 到 debian-live-ay 為例,合併時可以使用此命令:

> cat debian-live-* > debian-live.iso

可以看到目錄下會生成合併後的 debian-live.iso 文件。

debian-live-aa  debian-live-ad  debian-live-ag  debian-live-aj  debian-live-am  debian-live-ap  debian-live-as  debian-live-av  debian-live-ay
debian-live-ab  debian-live-ae  debian-live-ah  debian-live-ak  debian-live-an  debian-live-aq  debian-live-at  debian-live-aw  debian-live.iso
debian-live-ac  debian-live-af  debian-live-ai  debian-live-al  debian-live-ao  debian-live-ar  debian-live-au  debian-live-ax

使用 diff 驗證文件

只需要按 diff [原文件] [現文件] 的格式執行即可。如果沒有輸出,則證明兩個文件之間沒有差異。

以對比 debian-live-10.5.0-amd64-lxqt.isodebian-live.iso 為例:

> diff debian-live-10.5.0-amd64-lxqt.iso debian-live.iso
> # 無輸出,表示二者是相同的。

小練習

  • 嘗試以不同方式拆分系統中的日誌文件。

拓展閱讀


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    這個站點使用 Akismet 來減少垃圾評論。了解你的評論數據如何被處理

    More in:Linux中國

    Linux中國

    捐贈 Let's Encrypt,共建安全的互聯網

    隨著 Mozilla、蘋果和谷歌對沃通和 StartCom 這兩家 CA 公司處罰落定,很多使用這兩家 CA 所簽發證書的網站紛紛尋求新的證書籤發商。有一個非盈利組織可以為大家提供了免費、可靠和安全的 SSL 證書服務,這就是 Let's Encrypt 項目。現在,它需要您的幫助
    Linux中國

    關於Linux防火牆iptables的面試問答

    Nishita Agarwal是Tecmint的用戶,她將分享關於她剛剛經歷的一家公司(印度的一家私人公司Pune)的面試經驗。在面試中她被問及許多不同的問題,但她是iptables方面的專家,因此她想分享這些關於iptables的問題和相應的答案給那些以後可能會進行相關面試的人。 所有的問題和相應的答案都基於Nishita Agarwal的記憶並經過了重寫。 嗨,朋友!我叫Nishita Agarwal。我已經取得了理學學士學位,我的專業集中在UNIX和它的變種(BSD,Linux)。它們一直深深的吸引著我。我在存儲方面有1年多的經驗。我正在尋求職業上的變化,並將供職於印度的P
    Linux中國

    Lets Encrypt 已被所有主流瀏覽器所信任

    旨在讓每個網站都能使用 HTTPS 加密的非贏利組織 Lets Encrypt 已經得了 IdenTrust的交叉簽名,這意味著其證書現在已經可以被所有主流的瀏覽器所信任。從這個裡程碑事件開始,訪問者訪問使用了Lets Encrypt 證書的網站不再需要特別配置就可以得到 HTTPS 安全保護了。 Lets Encrypt 的兩個中級證書 ...