Conversor de disco

De Wiki Clusterlab.com.br
Revisão de 13h21min de 9 de agosto de 2017 por Damato (discussão | contribs)
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)
Ir para navegação Ir para pesquisar

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