Pages

Tuesday, April 25, 2006

colinux 的備份

這幾天在試試備份  coLinux  的方法 最簡單的方式當然是直接壓縮  disk  image  了 不過壓來壓去,檔案總是很大....

Filesystem      Size Used  Avail  Use%  Mounted  on /dev/cobd0      1.5G 759M 677M 53%  / /dev/cobd1      1.5G 316M 1.1G 22%  /home

在  WindowsXP  底下用  7-zip  壓縮的結果

2006/04/25 上午  09:27     491,532,897  fs_home_20060425.7z 2006/04/25 上午  10:49     468,579,178  fs_root_20060425.7z

這樣子感覺好像看不出壓縮保存的效益,7-zip  有那麼遜嗎... 後來想想,該不會要做  dfrag  吧?雖說在  Linux  底下很少聽到需要做  dfrag 但的確還是有這樣的程式,只是我接觸  Linux  以來還沒機會用到,就趁這次來玩玩看吧

問了一下  google  大神,有人提到用  tar  包起來再還原就有  defrag  的效果了 既然不用特別裝程式,那就來試試看吧

我另外弄了一個乾淨的  disk  image,重跑過  mkfs.ext3,mount  在  /mnt/backup 然後寫了一個簡單的  script  把該備份的資料都移到新的  disk  image  裡 基本的指令大概是這樣

tar  cf  -  dir  |  tar  xf  -  -C  /mnt/backup

這是備份或轉移系統的基本指令,有做過的人應該不難 其中有幾個系統目錄要跳過,不然整個  Windows  會直接死當... 為了還原方便,該有的目錄結構也要建立好,這些東西我在  script  裡都處理了 (可能沒有很完整,但目前能用就好)

轉換的過程很快,只是單純的  copy  動作而已,壓縮的結果如下

2006/04/25 下午  04:43     154,420,656  fs_home_20060425.7z 2006/04/25 下午  04:10     198,657,490  fs_root_20060425.7z 2006/04/25 下午  03:49     239,735,856  fs_root_20060425.bz2

壓縮後的檔案大小還不到之前的一半 大概因為我常常在新增/刪除檔案吧 效果還蠻明顯的:D 如果使用的時間沒那麼久,出來的結果大概不會差很多 還原時只要解壓縮,蓋掉原本的  root  image  後重新啟動  coLinux  就可以了

壓縮的時候我還測了一下  bzip2  跟  7-zip  哪一個比較好用 對一個空的  disk  image  來講,我下載  [Link] 一個  1.5GB  的  disk  image  以  bzip2  壓縮後不到  10kB 不過我解壓縮後重新用  7-zip  壓縮,竟然超過  200  kB

但是對於有資料的  disk  image,7-zip  的壓縮結果似乎好一點 所以我後來就用  7-zip  壓了

如果有人需要這個  script  的話...(我多做了一些判斷,所以看起來有點長)

#!/bin/bash #  vim:  ts=2  sw=2

Mkdir=`which  mkdir`

root='/' [  "$1"  =  ""  ]  ||  root=$1 list='' exclude='cdrom  floppy  home  initrd  lost+found  mnt  proc  sys  tmp' exclude_match='' backup='/mnt/backup'

[  -d  $backup  ]  ||  $Mkdir  $backup

echo echo  "backup  $root" echo cd  $root for  d  in  * do     add=1     for  e  in  $exclude     do         if  [  "$d"  =  "$e"  ];  then             add=0             exclude_match=$exclude_match'  '$d             break         fi     done

    [  $add  =  '1'  ]  &&  list=$list"  "$d done

for  d  in  $list do     echo  -n  "archiving  $d..."     tar  cf  -  $d  |  tar  xf  -  -C  $backup     if  [  $?  =  '0'  ];  then         echo  'done'     else         echo  'failed'     fi done

echo echo  'keep  directory  structure' echo cd  $backup for  d  in  $exclude_match do     [  -d  $d  ]  ||  $Mkdir  $d done


This article was originally posted on this site.

3 comments:

  1. 死掉了,突然發現問題...
    最後建立的 tmp 需要修正權限,不然可能會沒辦法使用

    最後加上這行吧
    chmod 1777 /tmp

    ReplyDelete
  2. [...] 偶爾想亂玩系統的時候,coLinux 就非常好用了,可以先備份系統,玩壞再還原就好。關於備份的部份可以參考我以前寫過的 這篇文章。 [...]

    ReplyDelete
  3. [...] 偶爾想亂玩系統的時候,coLinux 就非常好用了,可以先備份系統,玩壞再還原就好。關於備份的部份可以參考我以前寫過的 這篇文章。 [...]

    ReplyDelete