自己写的一个在新硬盘上自动恢复系统备份的脚本

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

说明:

之前开发了一个基于Freebsd的准嵌入式系统。基本系统放在DOM上,用户数据放在硬盘上。因为系统比较复杂,每次恢复/安装系统都很繁琐。就自己写了一个脚本。实现了自动安装。

其中包括自动对硬盘进行分区,自动格式化等功能。有兴趣的朋友可以看看:)

欢迎指点!:)

#!/bin/sh

#Root Directory

BASE_DIR=/root/autobuild/backup-pack

Backup_Dir="$BASE_DIR"/NetEngine/System-Backup

#Partition directory

USR_DIR=/mnt/usr

VAR_DIR=/mnt/var

TMP_DIR=/mnt/tmp

HOME_DIR=/mnt/home

#Device

DISKLABEL=/sbin/disklabel

DEVICEDIR=dev

HARDDISK=ad1

DOM=ad2

LABEL=s1

PARTITIONFILE=/tmp/partition

USRNUM=d

VARNUM=e

TMPNUM=f

HOMENUM=g

DOM_DEVICE=/"$DEVICEDIR"/"$DOM"

# Auto Fdisk

#Get harddisk memory

disksize=`$DISKLABEL /"$DEVICEDIR"/"$HARDDISK" | grep "sectors/unit" | awk '{print $2}'`

disksize=`expr $disksize - 409600`

#Get usr spec

usrsize=`expr $disksize / 10 \* 5`

#Get var memory

varsize=`expr $disksize / 10 \* 2`

#Get tmp memory

tmpsize=`expr $disksize / 10 \* 1 - 20000`

tmpoffset=`expr $usrsize + $varsize`

#Get home memory

homesize=`expr $disksize / 10 \* 2`

homeoffset=`expr $tmpoffset + $tmpsize`

#Get swap offset

swapoffset=`expr $homeoffset + $homesize`

#Confirm tmp memory

#Initial harddisk

echo -n "Init harddisk partition... "

dd>/dev/null 2>&1 if=/dev/zero of=/"$DEVICEDIR"/"$HARDDISK" bs=1k count=1

fdisk>/dev/null 2>&1 -BI /"$DEVICEDIR"/"$HARDDISK"

$DISKLABEL>/dev/null 2>&1 -B -w -r $HARDDISK$LABEL auto

$DISKLABEL >$PARTITIONFILE /"$DEVICEDIR"/"$HARDDISK"$LABEL

#Initial partition table

echo "d: $usrsize 0 4.2BSD 2048 16384 89">>$PARTITIONFILE

echo "e: $varsize $usrsize 4.2BSD 2048 16384 89">>$PARTITIONFILE

echo "f: $tmpsize $tmpoffset 4.2BSD 2048 16384 89">>$PARTITIONFILE

echo "g: $homesize $homeoffset 4.2BSD 2048 16384 89">>$PARTITIONFILE

echo "h: 409600 $swapoffset swap">>$PARTITIONFILE

#Auto partition

$DISKLABEL>/dev/null 2>&1 -R /"$DEVICEDIR"/"$HARDDISK"$LABEL $PARTITIONFILE

echo "done"

#Create file system

echo -n "Format harddisk... "

newfs>/dev/null 2>&1 /"$DEVICEDIR"/"$HARDDISK"$LABEL$USRNUM

newfs>/dev/null 2>&1 /"$DEVICEDIR"/"$HARDDISK"$LABEL$VARNUM

newfs>/dev/null 2>&1 /"$DEVICEDIR"/"$HARDDISK"$LABEL$HOMENUM

newfs>/dev/null 2>&1 /"$DEVICEDIR"/"$HARDDISK"$LABEL$TMPNUM

echo "done"

# Mount all harddisk partition

echo -n "Mount all partition... "

mount /"$DEVICEDIR"/"$HARDDISK"$LABEL$USRNUM $USR_DIR

mount /"$DEVICEDIR"/"$HARDDISK"$LABEL$VARNUM $VAR_DIR

mount /"$DEVICEDIR"/"$HARDDISK"$LABEL$HOMENUM $HOME_DIR

mount /"$DEVICEDIR"/"$HARDDISK"$LABEL$TMPNUM $TMP_DIR

echo "done"

#Auto burn dom image

echo -n "Burn dom image... "

dd>/dev/null 2>&1 if=$Backup_Dir/NetEngine-dombak.img of=$DOM_DEVICE

echo "done"

#Auto uncompress tar.gz pack to harddisk

cd $USR_DIR

echo -n "Unpack usr directory... "

tar>/dev/null 2>&1 zxvf $Backup_Dir/usrbak.tar.gz ./

echo "done"

cd $VAR_DIR

echo -n "Unpack var directory... "

tar>/dev/null 2>&1 zxvf $Backup_Dir/varbak.tar.gz ./

echo "done"

cd $TMP_DIR

echo -n "Unpack tmp directory... "

tar>/dev/null 2>&1 zxvf $Backup_Dir/tmpbak.tar.gz ./

echo "done"

cd $HOME_DIR

echo -n "Unpack home directory... "

tar>/dev/null 2>&1 zxvf $Backup_Dir/homebak.tar.gz ./

echo "done"

# Umount harddisk

cd /

echo -n "Unmount all partition... "

umount $USR_DIR $VAR_DIR $TMP_DIR $HOME_DIR

echo "done"

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航