感谢作者:home_king兄
part_it代码: #!/bin/sh # Create partitions(logical for slave hard disk automatically. # WARNNING!!! # Your hard disk must be empty initially, # OTHERWISE this script does not process! # # Written by home_king <home_king@163.com> # # Check parted if [ "$(whereis parted | awk '{print $2}')" = "" ]; then echo "Parted is not installed!" exit 1 fi # Create partition if [ -n "$1" ]; then bdev=$1 if [ -n "$(parted -s $bdev print |grep ^1)" ]; then echo 'Your hard disk must be not partitioned yet!!!' exit 1 fi tmpvar=$(parted -s $1 print |grep "Disk geometry" |awk '{print $5}') edge=${tmpvar##*-} iedge=${edge%%.*} # Create refer to config_file if [ -n "$2" ] && [ -f $2 ]; then config_file=$2 rm -f tmpfile cat $config_file |grep ^[1-9] > tmpfile startM=0 lastflag=0 while read size parttype fs; do if [ $((size-0)) -eq 0 ] || [ $size -le 0 ]; then echo 'Invalid "size" format!!!' exit 1 fi case $parttype in l) parttype="logical";; p) parttype="primary";; *) echo 'Invalid part type!!![logical|primary]' exit 1;; esac case $fs in ext2) fs="ext2";; *) echo 'Invalid filesystem!!![Now just support ext2]' exit 1;; esac endM=$(($size+$startM)) if [ $endM -gt $iedge ]; then lastflag=1 endM=$edge fi parted -s $bdev mkpartfs $parttype $fs $startM $endM [ $lastflag -eq 1 ] && exit 0 startM=$endM done < tmpfile # Auto mode else flag="" until [ "$flag" = "y" ] || [ "$flag" = "n" ]; do read -p 'WRNNING!!!NO CONFIG!!!Auto mode?[y/n]' flag done [ "$flag" = "n" ] && echo "exit" && exit 1 avrsize=$(($iedge/4)) startM=0 i=1 until [ $i -gt 3 ]; do endM=$(($avrsize*$i)) parted -s /dev/hda mkpartfs logical ext2 $startM $endM startM=$endM i=$((i+1)) done parted -s /dev/hda mkpartfs logical ext2 $startM $edge echo "All done!!!" echo parted -s /dev/hda print fi else echo "You must input device to process!" exit 1 fi
这个shell脚本用法是 chmod +x part_it ./part_it /dev/hdX config-file 其中/dev/hdX是你的从盘,如X是b; config-file是分区配置文件,格式如下
#size parttype fs 6000 l ext2 2000 l ext2 8000 l ext2
第一列是分区大小,第二列是分区类型(logical,缩写l,代表逻辑分区),第三列是文件系统,.三列用TAB键分开!!! 由于不知道你的具体要求是什么,只好仅仅支持逻辑分区以及ext2,兄弟最好在这个基础上自己修改一下脚本. 另外,脚本会自动判别你是否已分区,配置文件中总的size是否超出硬盘容量等等. 仅提供参考,后果自负!!! |