#! /bin/bash
if [ -d /media/Lark/.linuxroot ];then
/bin/umount /media/Lark/.linuxroot
fi
if [ $UID -ne 0 ];then
echo "请切换root权限执行"
exit -5
fi
if [ $# -ne 2 ]
then
echo "请输入 u盘名 镜像名称!"
exit -7
fi
LS_MEDIA_LARK=`ls /media/Lark`
SELECTED_DISK=
counter=0
for file in `ls /media/Lark`
do
counter=`expr $counter + 1`
done
if [ $counter == 0 ]
then
echo "没有插入u盘或者没有挂载盘符!!请检测u盘是否可正常识别!"
exit -1
fi
DISK1=`echo $LS_MEDIA_LARK|awk -F ' ' '{print $1}'`
DISK2=`echo $LS_MEDIA_LARK|awk -F ' ' '{print $2}'`
echo "检测目前根文件大小"
dupath=`du -m --total / --exclude=proc --exclude=media |grep 总用量 |cut -f 1`
echo "根文件大小为$dupath M"
echo "####生成根文件镜像####"
let SIZE=$dupath+10
echo "生成文件大小为$SIZE M"
echo "步骤一:选择存放镜像的U盘"
if false;then
if [ -n "$DISK2" ] ;then
echo "共检测出u盘 $counter个:请选择1.$DISK1 2.$DISK2"
read CHOICE
case $CHOICE in
1)
echo "你选择的u盘为$DISK1"
SELECTED_DISK=$DISK1
;;
2)
echo "你选择的u盘为$DISK2"
SELECTED_DISK=$DISK2
;;
*)
echo "选择错误"
exit -2
;;
esac
else
SELECTED_DISK=$DISK1
fi
fi
SELECTED_DISK=$1
DISK_SPACE=`df -hm /media/Lark/$SELECTED_DISK | sed -n "2p" | awk '{print $4}'`
echo "剩余空间为 $DISK_SPACE M"
if [ $SIZE -gt $DISK_SPACE ];then
echo "根文件大小大于备份区最大空间,请删减可删减的文件进行备份"
exit -3
fi
echo "步骤二:切换到U盘目录,且创建镜像文件,请耐心等待"
cd /media/Lark/$SELECTED_DISK
if false;then
{
while true
do
CHECK_DISK=/media/Lark/$SELECTED_DISK
if [ ! -d $CHECK_DISK ];then
echo "u盘已断开,请检测其连接性并重新执行"
echo
exit -4
fi
if [ $FLAGS == 1 ];then
exit 0
fi
done
}&
fi
IMAGE_NAME=$2".tmp"
echo "步骤三:生成镜像名:$IMAGE_NAME"
touch $IMAGE_NAME
echo "步骤四:生成指定大小空文件"
dd if=/dev/zero of=$IMAGE_NAME bs=1M count=$SIZE
if [ $? == 0 ]
then
echo "步骤五:格式化镜像文件"
mkfs.ext4 -F -L .linuxroot $IMAGE_NAME
else
echo "dd 操作失误"
exit -1;
fi
if [ $? == 0 ]
then
echo "步骤六:挂载镜像文件到mnt目录"
mount -o loop $IMAGE_NAME /mnt
if [ $? == 0 ]
then
echo "步骤七:同步根分区到mnt"
rsync -axv / /mnt
fi
fi
if [ $? == 0 ];then
echo "同步完成"
else
echo "同步失败,请重新执行"
fi
if [ $? == 0 ]
then
cd /tmp
umount /mnt
if [ $? == 0 ]
then
echo "挂载点已卸载"
fi
fi
echo " 镜像已生成!"
sleep 3
echo "镜像修正以便烧写"
mv /media/Lark/$SELECTED_DISK/$IMAGE_NAME /media/Lark/$SELECTED_DISK/$2".img"
umount /media/Lark/$SELECTED_DISK
if [ $? == 0 ];then
echo "$SELECTED_DISK 已卸载成功"
exit 0
else
echo "请卸载并拔除U盘"
fi