天天看點

Linux Tar Split壓縮解壓縮分片壓縮解壓縮

tar cjf /home/data/ai-new/packets/ | split -b 1000m - tt.tar.bz2

cat tt.tar.bz2.a* > tt.tar.bz2

tar czvf xx.tar.gz /home/dd

tar xvvf xx.tar.gz /home/dd

通過使用-c指定解壓目錄

tar -zxvf eclipse-jee-indigo-sr2-linux-gtk-x86_64.tar.gz -c /usr

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

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.tar.gz. --verbose

creating file <code>skype_backup_20090626.tar.gz.aa’&lt;br/&gt;creating file</code>skype_backup_20090626.tar.gz.ab’

creating file <code>skype_backup_20090626.tar.gz.ac’&lt;br/&gt;creating file</code>skype_backup_20090626.tar.gz.ad’

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

skype_backup_20090626.tar.gz.aa

skype_backup_20090626.tar.gz.ab

skype_backup_20090626.tar.gz.ac

skype_backup_20090626.tar.gz.ad

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

man tar

-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 &gt;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