2011/05/14

打包檔案的好幫手:tar 與 split

想幫資料做備份,可用 tar 合併成一個檔案:
tar -cvf backup.tar mydata/

tar 只是將多個檔案合併在一起,若希望將資料壓縮省點空間,可以使用 -z (gzip) 或是 -j (bzip2) 壓縮:
tar -zcvf backup.tgz mydata/

若是壓縮後的資料還是太大沒辦法燒錄是光碟,可以使用 split 工具將備份檔分割。先使用 tar 將資料打包、壓縮,在傳給 split 做分割:
tar -xcvf - mydata/ | split -b 650M - backup.tgz.

split 預設使用 a、b、c 當作分割檔標記,上述方式讓單檔最大 650M,檔名分別為 backup.tgz.a、backup.tgz.b、backup.tgz.c ...。

若要讓 split 以數字方式為檔案命名,可以加上 -d 參數,檔案 suffix 則會改為 1、2、3 ...。另外 split 預設字串遞增一次為二個位數,表示檔名後面會是:00、01、02、03 ....,用參數 -a 1 可讓字串遞增改為一位數。


要還原資料時,使用 cat 把資料串接回來即可:
cat backup.tgz.* | tar -xvf -



參考資料:仲佑的網誌 » Blog Archive » Tar and Split
http://yowlab.shps.kh.edu.tw/wordpress/?p=289

3 則留言:

  1. 哈囉! 您好~
    有些程式設計的問題想請教

    關於像網咖使用的那套點餐系統
    一般來說怎麼寫比較好?

    回覆刪除
  2. 請問「怎麼寫」是指那一方面的問題呢?

    沒寫過類似的程式
    大概只知道點餐系統多會與週邊硬體整合
    如印表機或是生產線上的顯示器

    目前看到大部分的系統似乎是 .NET + SQL Server
    不過最近也有看到 Linux 上運作的系統
    但不清楚使用哪些東西實作

    回覆刪除
  3. 假如檔案太大的話 用dd會比較快

    ls file.tgz.*|xargs -i -n 1 dd if=./{} of=file.tgz oflag=append conv=notrunc

    回覆刪除