使用tar和split打包分割檔案

2021-06-27 17:48:23 字數 4007 閱讀 1944

tar是檔案打包工具,split是檔案分割工具,在郵件中傳送附件的時候,可能因為附件大小限制,需要壓縮並分割,分幾封郵件傳送。如果需要備份很多資料的時候,打包後的單個檔案可能超出檔案系統支援的單個檔案大小限制的時候,也需要分割成適合大小的檔案包。剛好今天又要備份skype資料夾,所以就用這個例項來說明一下tar和split這兩個指令,如何壓縮、分割,再通過cat合併分割的檔案解壓還原,以及在管道」|」配合下的打包分割檔案過程。

例如:我的.skype檔案已經有35m之多了,現在需要壓縮備份起來,直接用tar打包:

tar壓縮檔案:

[marco.chan@linuxhobby backup]$ ls

skype_backup

[marco.chan@linuxhobby backup]$tar-czvp -f skype_backup.tar.gz skype_backup

中間的打包壓縮輸出過程省略…

skype_backup/marco.chan.skype/chat512.dbb

skype_backup/marco.chan.skype/user4096.dbb

skype_backup/marco.chan.skype/chatmsg256.dbb

skype_backup/shared.xml

skype_backup/shared.lck

[marco.chan@linuxhobby backup]$ ls

skype_backup.tar.gz skype_backup

因為用了「-v」引數,所以中間會輸出打包壓縮的檔案資訊。

-c (create)當然是建立乙個打包檔案。

-z (gzip)呼叫gzip進行壓縮,建議字尾名為*.tar.gz;也可以用-j(bzip2),建議字尾名為*.tar.bz2。

-p (preserve-permissions)小寫的p,保持原先的檔案屬性,也就是rwx屬性。

-f (file)輸出的目標檔案「skype_backup.tar.gz」 將要被處理的原始檔「skype_backup」,可以將-f連寫,但是為了容易記憶和區分,所以這裡分開寫了。

打包後的skype_backup.tar.gz還有15m大小,但是我的郵件附件就支援6m大小,所以還得分割。

splite分割檔案

[marco.chan@linuxhobby backup]$split -b 4000k skype_backup.tar.gz skype_backup_20090626.tar.gz. –verbose

creating file `skype_backup_20090626.tar.gz.aa』

creating file `skype_backup_20090626.tar.gz.ab』

creating file `skype_backup_20090626.tar.gz.ac』

creating file `skype_backup_20090626.tar.gz.ad』

[marco.chan@linuxhobby backup]$ ls

skype_backup skype_backup_20090626.tar.gz.ac

skype_backup_20090626.tar.gz.aa skype_backup_20090626.tar.gz.ad

skype_backup_20090626.tar_20090626.gz.ab skype_backup.tar.gz

-b 指定分割大小,例如k,m等單位。

–verbose 輸出分割檔案資訊,可選。

skype_backup.tar.gz 被分割的檔案。

skype_backup_20090626.tar.gz. 分割後的檔名(注意gz後面的」.」),如果不指定的話,預設是xaa,xab,xac。

現在通過tar,split,已經將skype_backup目錄檔案打包、分割為每個最大為4m大小的壓縮包了。

以上是分步執行,如果用管道」|」,將tar,split寫成乙個執行語句:

使用管道「|」合併兩個指令:

[marco.chan@linuxhobby backup]$tar-czvp -f – skype_backup |split -b 4000k – skype_backup_20090626.tar.gz. –verbose

[marco.chan@linuxhobby backup]$ ls

skype_backup

skype_backup_20090626.tar.gz.aa

skype_backup_20090626.tar.gz.ab

skype_backup_20090626.tar.gz.ac

skype_backup_20090626.tar.gz.ad

注意一下指令中的兩個「-」,如果分開執行,就不用」-」。為什麼有這個」-」?

mantar

-f, –file [hostname:]f

use archive file or device f (default 「-」, meaning stdin/stdout). note that 「/dev/stdout」 is not equivalent to 「-」.using 「/dev/stdout」 explicitly can lead to corrupted archive, especially when coupled with 「-v」.

如何解壓分割檔案

把檔案分割了幾個包,當然也要能合併解壓了,合併檔案當然用cat了,cat不僅僅是用來處理合併文字檔案的,也可以用來合併壓縮檔案。

cat合併分割的檔案:

[marco.chan@linuxhobby backup]$cat skype_backup_20090626.tar.gz.a* >skype_backup_cat.tar.gz

將之前分割的壓縮包合併成skype_backup_cat.tar.gz,然後可以通過tar-zxvf來解壓skype_backup_cat.tar.gz,通過管道」|」可寫成:

使用管道「|」合併兩個指令:

[marco.chan@linuxhobby backup]$cat skype_backup_20090626.tar.gz.a* |tar-zxv

關於更多的tar、split、cat指令應用,建議通過man查詢。

tar常用引數 配合split進行檔案分割

tar常用引數 配合split進行檔案分割 c 建立乙個壓縮檔案的引數指令 create 的意思 c directory dir 轉到指定的目錄 f file 指定存檔或裝置 指定檔名,注意 在 f 之後要立即接檔名 不要再加引數,否則非法 use archive file or device f ...

split 分割和join 合併

split 分割和join 合併 split 可以基於指定分隔符將字串分隔成多個子字串 儲存到列表中 如果不指定分隔 符,則預設使用空白字元 換行符 空格 製表符 示例 如下 join0的作用和split 作用剛好相反,用於將一 系列子字串連線起來。示例 如下 拼接字串要點 使用字串拼接符 會生成新...

關於tar打包和壓縮

1.區分打包和壓縮的不同 打包是將一些檔案或目錄變成乙個總的檔案,壓縮則是將乙個大的檔案通過一些壓縮演算法變成乙個小檔案 2.tar 的命令引數含義 c 建立新的打包檔案 x 從打包檔案中解出檔案 v 輸出過程資訊 f 對普通檔案操作 z 呼叫gzip來壓縮打包檔案,與x聯用時呼叫gzip完成解壓縮...