linux备份某一个程序,备份一个Linux系统硬盘 I

此方法在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 and "

脚本会找到/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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值