Conversor de disco
Script para converter discos VMDK para a Azure.
#!/bin/bash
function sizeraw() {
MB=$((1024*1024))
size=$(qemu-img info -f raw --output json "$1" | gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}')
expr $(expr $(expr $size \/ $MB) + 1) \* $MB
}
function tovhd() {
echo -e "\e[45m"
echo converting $1 into $2
echo -en "\e[0m"
qemu-img resize $1 $(sizeraw $1)
qemu-img convert -f raw -o subformat=fixed,force_size -O vpc $1 $2
}
function toraw() {
echo -e "\e[44m"
echo converting $1 into $2
echo -en "\e[0m"
qemu-img convert -f vmdk -O raw $1 $2
}
function AJUDA() {
echo -e "\e[42m"
echo \#$0 toraw \<VMDK de origem\> \<arquivo raw de destino\>
echo \#$0 tovhd \<arquivo raw de origem\> \<arquivo vhd de destino\>
echo \#$0 tudo \<arquivo vmdk de origem\> \<diretorio de destino\>
echo -en "\e[0m"
}
export origem=$2
export destino=$3
case $# in
3)
case $1 in
toraw)
time toraw $origem $destino
;;
tovhd)
time tovhd $origem $destino
;;
tudo)
if [ -f $origem ]
then
if [ -d $destino ]
then
if [ $(echo $origem | grep -i vmdk | grep -v flat | wc -l| awk '{print $1}') -ne 0 ]
then
export FILE_VMDK=$origem
export FILE_RAW=$(echo $origem|tr '/' '\n' | tail -n 1| awk -F . '{print $1}').raw
export FILE_VHD=$(echo $origem|tr '/' '\n' | tail -n 1| awk -F . '{print $1}').vhd
echo VMDK=$FILE_VMDK
echo RAW=$FILE_RAW
echo VHD=$FILE_VHD
time toraw $FILE_VMDK $destino/$FILE_RAW
time tovhd $destino/$FILE_RAW $destino/$FILE_VHD
else
echo \"$origem\" nao é um vmkd valido.
fi
else
echo \"$destino\" nao e um diretorio de destino valido.
fi
else
echo \"$origem\" nao e um arquivo de origem valido.
fi
;;
*)
AJUDA
;;
esac
;;
*)
AJUDA
;;
esac