#! /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