Hallo Leute,
ich hab ein seltsames verhalten bei einem Shellskript und weiß leider nicht mehr weiter.
Infos:
Ubuntu Linux (6.06 Dapper LTS) auf einem
Intel Dual Xeon á 1,6 GHz (4x1,6 GHz)
Raid 5 3x80 GB
Soviel zum System an sich.
Auf dem Server läuft VMWare Server 1.02 und in der VMWare läuft momentan ein Exchange Server.
Der Speicherplatz dieser VM ist komplett vorreserviert und nicht in 2GB blöcke aufgeteilt.
Diesen Exchange möchte ich nun per Shellskript auf einen externen NAS sichern.
Shellskript arbeitet (im groben) wie folgt:
-Variablen deklarieren
-VM herunterfahren
-Backup durchführen (Ordner in dem die VM liegt zippen und auf dem NAS speichern)
-VM starten
-Ende
Wenn ich dieses Skript von Hand anschmeiße ist auch alles OK.
Wenn ich dieses Skript auf eine andere VM anwende, bei der der Speicherplatz NICHT vorreserviert ist geht es auch.
Wenn ich allerdings das Skript per Cronjob um 3 Uhr Nachts ausführen lasse, Startet er das Skript, bricht aber nach ca. 4-700 MB Sicheurng OHNE Fehlermeldung ab.
In den Logs ist zumindest kein Fehler ersichtlich.
Jetzt kommt aber nicht mit Sprüchen wie: Dann schmeiß es doch per hand an.
Das geht nämlich nicht, da ich den Server zwischen 6 Uhr morgens und 1 Uhr nachts nicht herunterfahren darf.
Da ich nachts aber nicht arbeite, geht es nur per Cronjob!!
So nun hoffe ich das einer von euch ne Idee hat...
Linux 14.986 Themen, 106.416 Beiträge
Ich greife uach nicht auf die Daten der VM zu, sondern ich sichere die Komplette VM. Wie ein Image.
Script:
#!/bin/sh
#
# ==== Assign variables ====
VMName="W3krzexch" # Name of VM to back up
Today=$(date +'%d-%m-%y') #Loads current date as dd-mm-yyyy into variable
DirToBackup="/vm/W3krzexch/" #Specifies to back up name_of_machine folder
VMXPath="/vm/W3krzexch/Windows Server 2003 Standard Edition.vmx"
#Name of backup file. Includes date stamp.
BackupDestination="/backup/VM/"$VMName"_"$Today".zip"
#Name and location of backup log file
BackupLog="/backup/VM/"$VMName"_backup$Today".log
nowtime=$(date +'%D-%R')
i=0
WL='/vm/W3krzexch/Festplatte D.vmdk.WRITELOCK'
#==== Shutdown VM ====
state=`vmware-cmd "$VMXPath" getstate | sed 's/getstate() = //'`
if [ "$state" = "on" ]
then
echo "Shutdown VM "$VMName" at "$nowtime >>$BackupLog
vmware-cmd "$VMXPath" stop
else
echo "VM-State was already OFF" >>$BackupLog
fi
# ==== Run the backup=====
until [ $i -eq 10 ]
do
i=`expr $i + 1`
sleep 60
if [ ! -f "$WL" ]
then
nowtime=$(date +'%D-%R')
echo "Start packing at "$nowtime >>$BackupLog
zip -r $BackupDestination $DirToBackup >>$BackupLog
#echo "zip"
mbcheck=`ls -al "$BackupDestination" | awk '{print $5}'`
if [ $mbcheck -ge 734003200 ]
then
i=10
status="SUCCESFULL"
else
echo $i" attemp not successful! Starting next try!" >> $BackupLog
status="FAILED"
fi
else
echo "VM not completely shutdown" >>$BackupLog
state=`vmware-cmd "$VMXPath" getstate | sed 's/getstate() = //'`
if [ "$state" = "on" ]
then
vmware-cmd "$VMXPath" stop
# echo "stop"
else
echo "There was an critical error while shutting down the VM" >>$BackupLog
vmware-cmd "$VMXPath" start
sleep 180
echo "VM was startet again to solve the problem" >>$BackLog
status="FAILED"
fi
fi
done
#==== Startup VM ====
nowtime=$(date +'%D-%R')
echo "Start VM at "$nowtime >>$BackupLog
vmware-cmd "$VMXPath" start
#=== Backup abgeschlossen ====
echo ' ' >>$BackupLog
echo 'BACKUP '$status >>$BackupLog
Wie gesagt, dass Script läuft.
Also es ist direkt in den Crontab (nano /etc/crontab) eingegeben worden und zwar mit rootrechten
59 2 * * 1 root /vm/backup/backup-email.sh
Das ABS Guide kenne ich noch nicht. Muss ich mir bei Zeiten mal durchlesen.