backup der vm's per script
Verfasst: 11.01.2012, 14:38
Hey Leute,
ihr habt mir so gut geholfen vielleicht könnt Ihr mir auch dabei helfen.
Mein Vorgänger hat auf dem Host per Cronjob BAckupscript eingebunden. Dieses sichert alle VM's in eine Backup Ordner.
Soweit so gut. Diese funktioniert auch ganz gut. Nun habe ich auf dem Host ein paar VM's installiert. Leider gelingt es mir nicht Backupscript so anzupassen das auch meine neue Vm's gesichert werden.
Habe jetzt auf meine Testsystem alle mal nachgebaut. hier ist mein Script:
#!/bin/bash
declare ScriptDir=/root/scripts
declare BackupItems="SRV2003V1"
VMHostName=`uname -n`
BackupDir=/vmfs/volumes/storage_$VMHostName/VM-Backups
rm -r -f $BackupDir/*
i=1
error=0
for VirtMachine in $BackupItems
do
if [ "`/usr/bin/vmware-cmd -l | grep $VirtMachine.vmx -i -m 1 -c`" == "1" ]; then
VMConfigFile=`/usr/bin/vmware-cmd -l | grep $VirtMachine`
if [ "`/usr/bin/vmware-cmd "$VMConfigFile" getstate`" == "getstate() = on" ]; then
$ScriptDir/conhotbackup "$VMConfigFile" $VirtMachine
Fehler=$?
if [ $Fehler -eq 0 ]; then body[i]=$VirtMachine' Image OK Code '$Fehler
else
body[i]=$VirtMachine' Image !!FEHLER!! Code '$Fehler
error=1
fi
i=$[$i+1]
fi
fi
done
dieser ruft dann diesen auf:
declare VMConfigFile=$1
declare VirtMachine=$2
if [ "`/usr/bin/vmware-cmd "$VMConfigFile" hassnapshot`" == "hassnapshot() = 1" ];
then
exit 4
fi
VMHostName=`uname -n`
BackupDir=/vmfs/volumes/4f073dfe-597b8f96-239b-00142215d92e/VM-Backups
rm -r -f $BackupDir/$VirtMachine
mkdir $BackupDir/$VirtMachine
vmdk=`vmware-cmd "$VMConfigFile" getconfig scsi0:0.fileName|awk '{ print $4 }'`
vmvol=`vmware-cmd "$VMConfigFile" getconfig scsi0:0.fileName|awk '{ print $3 }'`
vmvol=`echo $vmvol |awk '{ print substr($1,2,length($1)-2) }'`
vmdkfull="/vmfs/volumes/$vmvol/$vmdk"
VMConfigPath=`echo $VMConfigFile|awk 'BEGIN {FS="/"};{OFS="/"};{ print($1,$2,$3,$4,$5) }'`
cd $VMConfigPath
cp *.log $BackupDir/$VirtMachine
cp *.nvram $BackupDir/$VirtMachine
cp *.vmsd $BackupDir/$VirtMachine
cp *.vmx $BackupDir/$VirtMachine
cp *.vmxf $BackupDir/$VirtMachine
vmware-cmd "$VMConfigFile" createsnapshot "HotBackupSnap" "Hotbackup" 0 0
if [ $? -ne 0 ]; then exit 1
fi
sleep 5
/usr/sbin/vmkfstools -i $vmdkfull -d 2gbsparse $BackupDir/$VirtMachine/$VirtMachine.vmdk
if [ $? -ne 0 ]; then exit 2
fi
vmware-cmd "$VMConfigFile" removesnapshots
if [ $? -ne 0 ]; then exit 3
else exit 0
fi
wenn ich die ausführe passiert leider nichts, es wird noch nicht mal diese VM-Backups Ordner erstellt. Auch bekomme ich keine Fehlermeldung.
Kann mir da jemand helfen?
VG
ihr habt mir so gut geholfen vielleicht könnt Ihr mir auch dabei helfen.
Mein Vorgänger hat auf dem Host per Cronjob BAckupscript eingebunden. Dieses sichert alle VM's in eine Backup Ordner.
Soweit so gut. Diese funktioniert auch ganz gut. Nun habe ich auf dem Host ein paar VM's installiert. Leider gelingt es mir nicht Backupscript so anzupassen das auch meine neue Vm's gesichert werden.
Habe jetzt auf meine Testsystem alle mal nachgebaut. hier ist mein Script:
#!/bin/bash
declare ScriptDir=/root/scripts
declare BackupItems="SRV2003V1"
VMHostName=`uname -n`
BackupDir=/vmfs/volumes/storage_$VMHostName/VM-Backups
rm -r -f $BackupDir/*
i=1
error=0
for VirtMachine in $BackupItems
do
if [ "`/usr/bin/vmware-cmd -l | grep $VirtMachine.vmx -i -m 1 -c`" == "1" ]; then
VMConfigFile=`/usr/bin/vmware-cmd -l | grep $VirtMachine`
if [ "`/usr/bin/vmware-cmd "$VMConfigFile" getstate`" == "getstate() = on" ]; then
$ScriptDir/conhotbackup "$VMConfigFile" $VirtMachine
Fehler=$?
if [ $Fehler -eq 0 ]; then body[i]=$VirtMachine' Image OK Code '$Fehler
else
body[i]=$VirtMachine' Image !!FEHLER!! Code '$Fehler
error=1
fi
i=$[$i+1]
fi
fi
done
dieser ruft dann diesen auf:
declare VMConfigFile=$1
declare VirtMachine=$2
if [ "`/usr/bin/vmware-cmd "$VMConfigFile" hassnapshot`" == "hassnapshot() = 1" ];
then
exit 4
fi
VMHostName=`uname -n`
BackupDir=/vmfs/volumes/4f073dfe-597b8f96-239b-00142215d92e/VM-Backups
rm -r -f $BackupDir/$VirtMachine
mkdir $BackupDir/$VirtMachine
vmdk=`vmware-cmd "$VMConfigFile" getconfig scsi0:0.fileName|awk '{ print $4 }'`
vmvol=`vmware-cmd "$VMConfigFile" getconfig scsi0:0.fileName|awk '{ print $3 }'`
vmvol=`echo $vmvol |awk '{ print substr($1,2,length($1)-2) }'`
vmdkfull="/vmfs/volumes/$vmvol/$vmdk"
VMConfigPath=`echo $VMConfigFile|awk 'BEGIN {FS="/"};{OFS="/"};{ print($1,$2,$3,$4,$5) }'`
cd $VMConfigPath
cp *.log $BackupDir/$VirtMachine
cp *.nvram $BackupDir/$VirtMachine
cp *.vmsd $BackupDir/$VirtMachine
cp *.vmx $BackupDir/$VirtMachine
cp *.vmxf $BackupDir/$VirtMachine
vmware-cmd "$VMConfigFile" createsnapshot "HotBackupSnap" "Hotbackup" 0 0
if [ $? -ne 0 ]; then exit 1
fi
sleep 5
/usr/sbin/vmkfstools -i $vmdkfull -d 2gbsparse $BackupDir/$VirtMachine/$VirtMachine.vmdk
if [ $? -ne 0 ]; then exit 2
fi
vmware-cmd "$VMConfigFile" removesnapshots
if [ $? -ne 0 ]; then exit 3
else exit 0
fi
wenn ich die ausführe passiert leider nichts, es wird noch nicht mal diese VM-Backups Ordner erstellt. Auch bekomme ich keine Fehlermeldung.
Kann mir da jemand helfen?
VG