5分鐘學linux命令之split

情景介紹

平時工做中,我習慣使用rz從本地上傳文件到服務器,sz從服務器下載文件到本地,但對傳輸文件大小有限制,例如排查線上jvm的問題,須要生成了dump文件,可能有10G大,超過了限制,怎麼下載呢?git

拆分文件命令之split

語法shell

split [-<行數>][-l<行數>][-b<字節>][-C<字節>][要切割的文件][輸出文件名的前綴][-a<後綴長度>]

-<行數>或-l<行數>:指定每多少行切成一個小文件bash

-b<字節>:指定每多少字節切成一個小文件,這裏也能夠指定K、M、G等單位服務器

-C<字節>:與-b<字節>相似,但在切割時會盡可能維持每行的完整性jvm

輸出文件名的前綴:設置拆分後文件的名稱前綴,split會自動在前綴後面加上編號,默認從aa開始code

-a<後綴長度>:默認後綴長度是2,即按 aa,ab,ac的順序排序blog

<br>排序

split命令和cat命令能夠完成上面的難題,排查線上問題的現場已經沒有了,因此爲了演示,用dd命令(對dd命令不瞭解的也能夠學下,由於此次重點介紹split,因此dd暫且不介紹)建立一個400MB的文件,文件名是adsearch.hprof,這裏假設400MB的大小就超過了服務器的下載限制md5

dd if=/dev/zero bs=1024 count=409600 of=adsearch.hprof

file

如圖所示,建立了一個400MB的文件cmd

<br>

那我把adsearch.hprof文件按100MB大小拆分,能夠拆分紅4個文件

split -b 100M adsearch.hprof

file

能夠看到在執行完split命令後,目錄下生成了四個相同大小 xaa、xab、xac、xad四個100MB的小文件。由於咱們沒有指定前綴,就採用了默認的前綴x,後面跟着aa、ab、ac、ad。咱們也能夠指定前綴,好比我把剛剛生成的四個小文件刪掉,用下面的命令從新切分下

split -b 100M adsearch.hprof adsearch-

file

<br>

合併文件之cat

把大文件切分後,咱們就能夠把小文件下載到本地,而後把他們再拼接起來

// 用通配符的形式,要保證該目錄下沒有其餘以adsearch-a爲前綴的文件
cat adsearch-a* > adsearch.hprof
// 或者指定文件進行拼接
cat adsearch-aa adsearch-ab adsearch-ac adsearch-ad > adsearch.hprof

file

<br> **備註**

上面的操做我是在win本上的gitbash操做的,有cat命令

<br>

那若是沒有安裝gitbash只有cmd呢?

可使用copy /b 命令來拼接,其中 /b 表明指定以二進制格式進行復制

copy /b adsearch-aa + adsearch-ab + adsearch-ac + adsearch-ad adsearch.hprof

<br> #### 校驗

通過拆分-合併後,兩個文件同樣嗎?這是咱們主要關心的問題,咱們對文件作一個md5,看結果是否相等,就能夠判斷文件是否同樣了

原始文件的md5 file

合併後文件的md5(gitbash) file

合併後文件的md5(cmd)

file

通過對先後文件的md5值比價,結果一致,說明咱們的操做沒有問題

<br> #### 小結

當咱們下載或上傳相對較大的文件時,可使用split把大文件拆分紅小文件,而後用cat命令把這些小文件從新拼接成大文件

相關文章
相關標籤/搜索