colinux 的備份
Tuesday, April 25th, 2006這幾天在試試備份 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