歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 備份一個Linux系統硬盤[Fedora環境]

備份一個Linux系統硬盤[Fedora環境]

日期:2017/2/28 16:32:53   编辑:Linux教程

此方法在Fedora系統驗證多次通過。

假設你有一個Linux系統已經可以正常工作,現在想復制一個系統出來到另外一個硬盤上以備系統崩潰時開可以立即啟用這個備份硬盤,以至於不影響系統的運行,同時這塊備份硬盤可能與原系統的硬盤大小不一致。

對於上面的苛刻要求,都沒關系!下面的方法就解決這個問題。

腳本假設前提條件:

1. 備份硬盤在/dev/sdb

2. 在運用此腳本前,你必須手動對備份硬盤分區. 1 2 3 <5 6>
/dev/sdb1 mount /boot
/dev/sdb2 swap
/dev/sdb3 mount /
/dev/sdb5 mount /var
/dev/sdb6 mount /home
這樣1、2、3為主分區,5、6在擴展分區內。至於每個分區的大小要視你的原系統每個目錄的大小為准,自行決定

3. 此腳本要求root權限運行

#! /bin/sh
# backup total system to a Mirror Hard Disk
# written by Visual.Wei

rootdirlist=`ls /`
skiplist="mnt proc sys"
bskip="0"
mirrordsk=/dev/sdb
mntpoint=/mnt/mybakroot

makedir() {
if [ ! -d $1 ] ; then
echo $"create directory $1"
mkdir -p $1
else
echo $"dir $1 already existing"
fi
}

umnt() {
if [ -e /proc/mounts ] ; then
if grep $1 /proc/mounts > /dev/null ; then
umount $1
echo $"unmount device $1"
fi
fi
}

checkdisk() {
if [ ! -e $1 ] ; then
echo "Mirror Device $1 can not be found"
return 1
else
return 0
fi
}

if ! checkdisk "$mirrordsk" ; then
exit 1
fi

umnt "$mirrordsk"1
umnt "$mirrordsk"5
umnt "$mirrordsk"6
umnt "$mirrordsk"3

echo $"Format ext3 partitions..."
if checkdisk "$mirrordsk"3 ; then
mkfs.ext3 -L / "$mirrordsk"3 > /dev/null
else
exit 1
fi

if checkdisk "$mirrordsk"1 ; then
mkfs.ext3 -L /boot "$mirrordsk"1 > /dev/null
else
exit 1
fi

if checkdisk "$mirrordsk"5 ; then
mkfs.ext3 -L /var "$mirrordsk"5 > /dev/null
else
exit 1
fi

if checkdisk "$mirrordsk"6 ; then
mkfs.ext3 -L /home "$mirrordsk"6 > /dev/null
else
exit 1
fi

echo $"Format swap partition"

if checkdisk "$mirrordsk"2 ; then
mkswap -v1 -L newswap "$mirrordsk"2 > /dev/null
else
exit 1
fi


makedir $mntpoint
echo $"mount root directory"
mount "$mirrordsk"3 $mntpoint

makedir $mntpoint/boot
makedir $mntpoint/var
makedir $mntpoint/home

echo $"mount other directories..."
mount "$mirrordsk"1 $mntpoint/boot
mount "$mirrordsk"5 $mntpoint/var
mount "$mirrordsk"6 $mntpoint/home


echo $"start copy system directories...It may takes very long time"
for i in $rootdirlist ; do
bskip="0"
for j in $skiplist ; do
if [ "$i" == "$j" ] ; then
echo $"skip $i"
bskip="1"
break
fi
done
if [ "$bskip" == "0" ] ; then
echo $"copy directory $i"
cp -a /$i $mntpoint
fi
done

echo $"create empty directories..."
for j in $skiplist ; do
makedir $mntpoint/$j
done


echo $"please use < chroot $mntpoint > ,then edit </etc/fstab> and </boot/grub/menu.lst>"

腳本會找到/dev/sdb,並且umount每個分區,然後對每個分區格式化,最後復制目錄結構。

運行完畢時,硬盤的數據就和原系統一摸一樣了。

但是有個問題,當原系統的硬盤崩潰時,你必須卸下原系統的硬盤,然後裝上備份硬盤引導系統,因此備份硬盤還缺少獨立引導能力。所以還有幾件事

1. chroot /mnt/mybakroot

2. vim etc/fstab

備份硬盤可能需要擁有於原硬盤不一樣的fstab,因為他們可能存儲空間大小不同,分區結構也不同

3. vim boot/grub/menu.lst

備份硬盤可能需要擁有於原硬盤不一樣的內核啟動菜單,因為他們可能存儲空間大小不同,分區結構也不同

4. grub-install /dev/sdb

向備份硬盤寫入bootloader---grub

Copyright © Linux教程網 All Rights Reserved