Merge branch 'zrlang'

This commit is contained in:
qin bo
2010-09-27 18:14:34 +08:00
2 changed files with 76 additions and 62 deletions

View File

@@ -40,19 +40,11 @@ setArgument(){
for((i=0; i<${#ARGV_MKFSTAB[@]}; i++))
do
case ${ARGV_MKFSTAB[$i]} in
--from)
--from|-f)
((i++))
PATHFROM=${ARGV_MKFSTAB[$i]}
;;
--to)
((i++))
PATHTO=${ARGV_MKFSTAB[$i]}
;;
-f)
((i++))
PATHFROM=${ARGV_MKFSTAB[$i]}
;;
-t)
--to|-t)
((i++))
PATHTO=${ARGV_MKFSTAB[$i]}
;;
@@ -77,15 +69,7 @@ setArgument(){
# Description: copy the old fstab to a temp place
###########################################################################
cpTmpfstab(){
local i
local TMPPATH=`echo "$2"|sed -e s/[/]/' '/g`
for i in $TMPPATH
do
continue
done
local PATHTOFILE=$i
local PATHTODIR=`echo "$2"|sed -e s/"$PATHTOFILE"/''/g`
local PATHTODIR=`dirname $2`
mkdir -p $PATHTODIR 2>>$LOGDIR$LOGFILE
if [ $? != "0" ];then
echo "can not makedir named $PATHTODIR" >>$LOGDIR$LOGFILE
@@ -108,44 +92,81 @@ mdfyTmpFstab(){
local i
local j
local LASTNAME=''
local UUIDFROMFSTAB=$(awk '/^[ \t]*[^#]/ { if ($1 ~ "^[UUID]") { print $1}}' $1)
for i in $UUIDFROMFSTAB
do
blkid -t$i >/tmp/.blkid.tmp
local NAMEFROMUUID=`cut -f 1 -d : /tmp/.blkid.tmp`
if [ ! "${NAMEFROMUUID}" ];then
echo "error UUID, can not find devices by blkid" >>$LOGDIR$LOGFILE
exit 1
fi
if [ `echo $NAMEFROMUUID| wc -w` -lt 2 ];then
LASTNAME=$NAMEFROMUUID
else
for j in $NAMEFROMUUID
do
if [ `echo $j|grep 'md'` ];then
if [ ! $LASTNAME ]; then
LASTNAME=$j
#replace UUID in the temp fstab
local UUIDFROMFSTAB=$(awk '/^[ \t]*[^#]/ { if ($1 ~ "^[UUID]") { print $1}}' $1)
if [ -n "$UUIDFROMFSTAB" ];then
for i in $UUIDFROMFSTAB
do
local NAMEFROMUUID=`blkid -t$i |cut -f 1 -d :`
if [ ! "${NAMEFROMUUID}" ];then
echo "error UUID, can not find devices by blkid" >>$LOGDIR$LOGFILE
exit 1
fi
if [ `echo $NAMEFROMUUID| wc -w` -lt 2 ];then
LASTNAME=$NAMEFROMUUID
else
for j in $NAMEFROMUUID
do
if [ `echo $j|grep 'md'` ];then
if [ ! $LASTNAME ]; then
LASTNAME=$j
else
echo "too many raid devices be found" >>$LOGDIR$LOGFILE
exit 1
fi
else
echo "too many raid devices be found" >>$LOGDIR$LOGFILE
exit 1
if [ `mdadm -Ds -v|grep -w $j` ];then
continue
else
echo "too many partitions be found" >>$LOGDIR$LOGFILE
exit 1
fi
fi
else
if [ `mdadm -Ds -v|grep -w $j` ];then
continue
else
echo "too many partitions be found" >>$LOGDIR$LOGFILE
exit 1
fi
fi
done
fi
sed -i s@$i@$LASTNAME@g $1
LASTNAME=''
done
rm /tmp/.blkid.tmp
done
fi
sed -i s@$i@$LASTNAME@g $1
LASTNAME=''
done
fi
#replace by-id in the temp fstab
local BYIDFROMFSTAB=$(awk '/^[ \t]*[^#]/ { if ($1 ~ "by-id") { print $1}}' $1)
if [ -n "$BYIDFROMFSTAB" ];then
for i in $BYIDFROMFSTAB
do
local NAMEFROMBYID=`readlink $BYIDFROMFSTAB`
NAMEFROMBYID="/dev/`basename $NAMEFROMBYID`"
sed -i s@$i@$NAMEFROMBYID@g $1
done
fi
}
###########################################################################
# Function Name: checkArgument()
# Input: $PATHFROM $PATHTO
# Return: nothing
# Description: check the arguments
###########################################################################
checkArgument(){
if [ ! -f $1 ];then
echo "Can not find pathfrom $1" >>$LOGDIR$LOGFILE
exit 1
fi
if [ ! $2 ];then
echo "pathto argument is empty!!" >>$LOGDIR$LOGFILE
exit 1
fi
}
###########################################################################
# Function Name: ()
# Input: $PATHFROM $PATHTO
# Return: nothing
# Description: check the arguments
###########################################################################
###########################################################################
# Function Name: usage()
# Input: nothing
@@ -197,6 +218,7 @@ NOWDATE=`date`
echo $NOWDATE >>$LOGDIR$LOGFILE
setArgument $@
checkArgument $PATHFROM $PATHTO
cpTmpfstab $PATHFROM $PATHTO
mdfyTmpFstab $PATHTO
echo "make temp fstab all right" >>$LOGDIR$LOGFILE

View File

@@ -13,15 +13,7 @@ if [ ! $1 ]; then
exit 1
fi
CONPATH=`echo $1|sed -e s/[/]/' '/g`
for i in $CONPATH
do
continue
done
CONFILE=$i
CONDIR=`echo $1|sed -e s/$CONFILE/''/g`
CONDIR=`dirname $1`
if [ ! -d $CONDIR ]; then
mkdir -p $CONDIR
if [ $? != 0 ]; then
@@ -29,5 +21,5 @@ if [ ! -d $CONDIR ]; then
exit 1
fi
fi
mdadm -Ds -v > $CONDIR$CONFILE
mdadm -Ds -v > $1