linxu 打包壓縮分割功能

tolywang發表於2009-09-02
如何在linux下實現Windows中winrar和winzip等壓縮軟體所提供的打包壓縮分割功能)
將大檔案或目錄打包、壓縮並分割成制定大小的檔案,這在將資料備份到容量有限的移動儲存裝置時是必須的,在Linux下可以透過組合使用 tar,bzip2(或者gzip),split命令來實現。

假設要將下面這個檔案壓縮並分割成多個1.4M的檔案
-r-xr-xr-x 1 root root 4.4M 2004-08-27 01:50 a.chm
可以用下面的命令:
tar -jcf - a.chm | split -b 1400k - a.chm.tar.bz2.
完成後會生產下面的檔案:
-rw-r--r-- 1 root root 1433600 2004-08-27 01:55 a.chm.tar.bz2.aa
-rw-r--r-- 1 root root 1433600 2004-08-27 01:56 a.chm.tar.bz2.ab
-rw-r--r-- 1 root root 1433600 2004-08-27 01:56 a.chm.tar.bz2.ac
-rw-r--r-- 1 root root 225280 2004-08-27 01:56 a.chm.tar.bz2.ad

還原檔案用下面的命令:
cat a.chm.tar.bz2.a* | tar -jx
為了讓廣大菜鳥瞭解上面的命令,現解釋如下:
壓 縮命令"tar -jcf -" 中的 “-jcf" 引數是建立(c)檔案(f)並呼叫bzip2進行壓縮(j),跟在f後面的" -"是將所建立的檔案輸出到標準輸出上,在這裡就是透過"|"管道輸出給 split 命令進行檔案分割;分割命令"split -b 1400k - a.chm.tar.bz2." 中的 "-b 1400k" 是用來設定每個檔案大小的,除了"k",還可以用"m"來作為單位,接著的" - "就是將"tar"命令透過管道傳入的資料作為需要分割的資料來源,後面跟著的" a.chm.tar.bz2."就是檔名了。
這兩個命令如果獨立使用,可以將引數中獨立的" - "換為具體的檔名,這樣"tar"命令就可以將檔案打包壓縮成指定的檔案,而"split"命令就可以分割指定的檔案。
在"tar"命令中,大家也可以用"z"代替"j"參,這樣tar就會呼叫gzip進行壓縮,而不是bzip2,當然,如果你用了"z"引數,記得將輸出的檔名中的"bz2"改為"gz",這樣在解壓的時候就可以分辨出需要用那個引數進行解壓。
用split命令生產的檔案序列除了字母還可以使用" -d "引數指定為數字的形式,同時還可以透過" -a x"來設定序列的長度(預設值是2),例如命令:
split -b 1400k -d -a 1 - a.chm.tar.bz2.
就可以產生如下命名規則的檔案:
-rw-r--r-- 1 root root 1.4M 2004-08-28 01:01 a.chm.tar.bz2.0
-rw-r--r-- 1 root root 1.4M 2004-08-28 01:02 a.chm.tar.bz2.1
-rw-r--r-- 1 root root 1.4M 2004-08-28 01:02 a.chm.tar.bz2.2
-rw-r--r-- 1 root root 220K 2004-08-28 01:02 a.chm.tar.bz2.3

如果大家想更全面地瞭解這些命令,可以透過 "man 命令" 來查閱他們的手冊。

使用RAR分割 壓縮檔案:
rar a -v 1024k xxxx.rar xxxx.file
使用7z分割
安裝7z
sudo apt-get install p7zip-full
壓縮檔案:
7z a 22222.mp3.7z 22222.mp3 -v1024k
還原
7z x 22222.mp3.7z.001

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-615152/,如需轉載,請註明出處,否則將追究法律責任。

相關文章