Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

VM Backup Shell Skript aendern

Frage Entwicklung Batch & Shell

Mitglied: winlin

winlin (Level 2) - Jetzt verbinden

22.03.2013 um 11:55 Uhr, 1740 Aufrufe, 10 Kommentare

Hallo Leute,

das u.g. Skript funktioniert eigentlich wunderbar um eine VM von HOST1 auf HOST2 zu sichern, inkl. Log etc sowie Speicherplatzcheck....
...dabei hat mir ein CommunityMitglied geholfen. Nun mäöchte ich aber das Skript so ändern:
- Es soll nicht nur eine VM auf dem Quellhost gesichert werden sondern mehrere
- Es soll nicht mehr eine Platte gemountet werden sondern ein Share verwendet werden den der Rechner bereits in Zugriff hat /share/IT/backup

An welchen Stellen ändere ich das nun?
1. Anstatt USB="/mnt/cdrom" --> PLATTE="/share/IT/backup" und dann überall wo USB steht im Code PLATTE hinzufügen?
2. Wie kann ich denn mehrere VM´s sichern? bzw. alle VM´s die unter /data1/vm/ abgelegt sind? Dort gibt es vm01, vm02, vm03 usw.
--> VM1 heisst bei mir immer gleich: w7x64.vmx
--> VM_Ordner1 heisst dann vm01 oder vm02 oder vm03 etc.

01.
#!/bin/bash 
02.
# Ab hier alle Einstellungen überprüfen und ggf. anpassen!! 
03.
# --------------------------------------------------------- 
04.
VM_ORDNER1="vm01" #In welchem Ordner liegt die VM 
05.
VM_BACKUP1="/data2/vm/vm01" #Der komplette Pfad zum VM Ordner 
06.
VM_1="w7x64.vmx" #Name der VM 
07.
BACKUPORDNER="backup" #Name des Backup-Ordners, wird angelegt falls nicht vorhanden.  
08.
LOGZIEL="/data1/vm_backup_logs" #Pfad zu den Logs, muss vorhanden sein. 
09.
USER="xxx" #Administrator für VMware Server 2 
10.
PW="xxx" #PW für Administrator VMware Server 2 
11.
IP="https://127.0.0.1/sdk" #Nur in AUSNAHMEFÄLLEN ändern. (Bei Standartinstallationen kann dies so bleiben) 
12.
USB="/mnt/cdrom" #Mountpoint 
13.
CLEAN=0 #Alte Backups im Ordner "BACKUPORDNER" bei Platzmangel löschen? 1=ja, 0=nein 
14.
# --------------------------------------------------------- 
15.
# AB HIER NICHTS MEHR ÄNDERN 
16.
# --------------------------------------------------------- 
17.
DATUM="$(date +%d-%m-%Y)" 
18.
LOG="${LOGZIEL}/${DATUM}.log" 
19.
LOG_ERR="${LOGZIEL}/${DATUM}_err.log" 
20.
ZIEL="" 
21.
MOUNTED=0 
22.
DEVICE="" 
23.
  
24.
#mail_err () 
25.
#{  
26.
#  echo | mail -s "${DATUM}, $(date +%H:%M) Backup-Fehler" $MAIL < $LOG_ERR 
27.
#}  
28.
#  
29.
#mail_final () 
30.
#{  
31.
#  echo | mail -s "${DATUM}, $(date +%H:%M) Backup-Erfolg" $MAIL <$LOG 
32.
#}  
33.
  
34.
#USB-Platten werden gemountet  
35.
for i in $(seq 1 $PLATTEN); do 
36.
    if [ $MOUNTED = 0 ]; then 
37.
	echo "Datum: "$DATUM >> $LOG 
38.
	echo "Zeit: "$(date +%H:%M) >> $LOG 
39.
#	echo | mount $USB$DEVICE -o force 1>> $LOG 2>> $LOG_ERR 
40.
	echo | mount SERVERFORBACKUP:/data2/vm/ /mnt/cdrom/ 
41.
	if [ $? = 0 ]; then 
42.
	    ZIEL=$USB"/"$BACKUPORDNER 
43.
	    MOUNTED=1 
44.
	    echo "${USB}${DEVICE} gemountet." >>$LOG 
45.
	else 
46.
	    DEVICE=$(( $DEVICE + 1 )) 
47.
	fi 
48.
    fi 
49.
done 
50.
  
51.
#Wenn keine der Platten eingebunden werden kann: EXIT mit Error-Mail 
52.
if [ $MOUNTED = 0 ]; then 
53.
    echo "Keine Speichermedien gefunden. Backup wurde abgebrochen!" >>$LOG_ERR 
54.
	mail_err 
55.
    exit 
56.
fi 
57.
  
58.
#Wenn nicht vorhanden wird Backup-Ordner erstellt. 
59.
if ! [ -d $ZIEL ]; then 
60.
	echo "Erstelle Ziel-Ordner (${ZIEL})." >>$LOG 
61.
	echo | mkdir $ZIEL 1>> $LOG 2>> $LOG_ERR 
62.
		if ! [ $? = 0 ]; then 
63.
			echo "Ordner $ZIEL konnte nicht erstellt werden. Backup wird abgebrochen." >>$LOG 
64.
			mail_err 
65.
			exit 
66.
			else 
67.
				echo "Ordner ${ZIEL} wurde erstellt." >> $LOG 
68.
			fi 
69.
  
70.
else 
71.
	echo "Ordner (${ZIEL}) bereits vorhanden." >> $LOG 
72.
fi 
73.
  
74.
#Speicherplatzabfrage.  
75.
#Wenn CLEAN auf 1 gesetzt, wird bei zu geringem Speicherplatz der Backupordner gelöscht.  
76.
#Backup-Rotation in Planung.... 
77.
S="/" 
78.
MB=0 
79.
MENGEQ=" GB" 
80.
MENGEZ=" GB" 
81.
MENGED=" GB" 
82.
LIMIT=1 
83.
LAUF=2 
84.
END=0 
85.
echo 1 
86.
for i in $(seq 1 $LAUF); do 
87.
	if [ $END = 0 ]; then 
88.
		QUELLE=$(du -s $S$VM_BACKUP1 | tr -s " " | cut -d "/" -f 1) 
89.
		ZIEL1=$(df $S$ZIEL | tr -s " " | cut -d " " -f 4 | grep -v "Avai") 
90.
		QUELLEERG=$(( $QUELLE / 1048576 )) 
91.
			if [ $QUELLEERG -lt $LIMIT ]; then 
92.
				QUELLEERG=$(( $QUELLE / 1024 )) 
93.
				MB=1 
94.
				MENGEQ=" MB"  
95.
			fi 
96.
  
97.
		ZIELERG=$(( $ZIEL1 / 1048576 )) 
98.
			if [ $MB = 1 ]; then 
99.
				ZIELERG=$(( $ZIEL1 / 1024 )) 
100.
				MENGEZ=" MB" 
101.
				MENGED=" MB"  
102.
			fi 
103.
 
104.
		DIFFERENZ=$(( $ZIELERG - $QUELLEERG )) 
105.
		PROZENT=$(( $DIFFERENZ * 100 / $ZIELERG )) 
106.
		NUTZ=$(( 100 - $PROZENT )) 
107.
 
108.
				if  [ $ZIELERG -lt $QUELLEERG ]; then 
109.
					if [ $CLEAN = 1 ]; then 
110.
						echo "Größe VM........................: "$QUELLEERG$MENGEQ >> $LOG 
111.
						echo "Verfügbarer Speicherplatz.......: "$ZIELERG$MENGEZ >> $LOG 
112.
						echo "Freier Speicherplatz nach Backup: "$DIFFERENZ$MENGED >> $LOG 
113.
						echo "Platzbedarf in %................: "$NUTZ" %" >> $LOG 
114.
						echo " " >> $LOG 
115.
						echo "Speicherplatz nicht ausreichend. Ordner ${ZIEL} wird geleert." >> $LOG 
116.
						echo "...." >> $LOG 
117.
						echo | touch $ZIEL/test.file 1>> $LOG 2>> $LOG_ERR 
118.
						echo | rm -r $ZIEL/* 1>> $LOG 2>> $LOG_ERR 
119.
					else 
120.
						echo "Größe VM........................: "$QUELLEERG$MENGEQ >> $LOG_ERR 
121.
					echo "Verfügbarer Speicherplatz.......: "$ZIELERG$MENGEZ >> $LOG_ERR 
122.
						echo "Freier Speicherplatz nach Backup: "$DIFFERENZ$MENGED >> $LOG_ERR 
123.
						echo "Platzbedarf in %................: "$NUTZ" %" >> $LOG_ERR 
124.
						echo " " >> $LOG_ERR 
125.
						echo "Speicherplatz nicht ausreichend. Backup-Vorgang wird abgebrochen." >> $LOG_ERR 
126.
						mail_err 
127.
						exit 
128.
					fi 
129.
				else 
130.
					END=1 
131.
					echo "Größe VM........................: "$QUELLEERG$MENGEQ >> $LOG 
132.
					echo "Verfügbarer Speicherplatz.......: "$ZIELERG$MENGEZ >> $LOG 
133.
					echo "Freier Speicherplatz nach Backup: "$DIFFERENZ$MENGED >> $LOG 
134.
					echo "Platzbedarf in %................: "$NUTZ" %" >> $LOG 
135.
					echo " " >> $LOG 
136.
					echo "Speicherplatz ausreichend. Backup wird gestartet." >> $LOG 
137.
				fi				 
138.
	fi 
139.
done 
140.
 
141.
# VMs in den Suspend setzen und Erfolg abfragen 
142.
# 0 = i.O. 
143.
# 255 = Fehler 
144.
  
145.
echo | vmrun -T server -h $IP -u $USER -p $PW suspend "[ha-datacenter/standard] $VM_ORDNER1/$VM_1" 1>>$LOG 2>>$LOG_ERR 
146.
if  [ $? = 255 ]; then 
147.
		echo "ACHTUNG: Die Virtuelle Maschine ($VM_ORDNER1/$VM_1) konnte nicht in den Suspend Modus versetzt werden." >>$LOG_ERR 
148.
		echo "Backup wurde abgebrochen" >>$LOG_ERR 
149.
		umount $USB$DEVICE >> $LOG_ERR 
150.
		mail_err 
151.
		exit 
152.
			else 
153.
				echo "$(date +%H:%M): Virtuelle Maschine ($VM_1) wurde erfolgreich in den Suspend-Mode versetzt" >>$LOG 
154.
fi	 
155.
  
156.
  
157.
  
158.
#Verzeichnis für neues Backup erstellen falls noch nicht vorhanden 
159.
if ! [ -d $ZIEL/$DATUM ]; then 
160.
		echo | mkdir $ZIEL/$DATUM >> $LOG 
161.
fi 
162.
  
163.
#Jetzt kann tar loslegen 
164.
cd / 
165.
echo | tar -czvf $ZIEL/$DATUM/$DATUM.tar.gz $VM_BACKUP1 1>>$LOG 2>>$LOG 
166.
  
167.
#Auf Fehler während tar prüfen: 
168.
# 0 = fehlerfrei, 
169.
echo "Errorlevel TAR: "$? >> $LOG  
170.
  
171.
if  [ $? != 0 ] ; then 
172.
    echo "ACHTUNG: Beim Backup (tar) von (${VM_BACKUP1}) wurden am ${DATUM} um $(date +%H:%M) Uhr Fehler/Meldungen ausgegeben!" >>$LOG 
173.
    echo "Das erstellte Archiv befinden sich in ${ZIEL}/${DATUM}/${DATUM}.tar.gz" >>$LOG 
174.
	umount $USB$DEVICE >> $LOG 
175.
    echo | vmrun -T server -h $IP -u $USER -p $PW start "[standard] $VM_ORDNER1/$VM_1" 1>>$LOG 2>>$LOG_ERR 
176.
  
177.
		# Prüfen ob VM gestartet werden konnte 
178.
		if  [ $? = 255 ]; then 
179.
			echo "ACHTUNG: Die Virtuelle Maschine ($VM_ORDNER1/$VM_1) konnte nicht gestartet werden." >>$LOG_ERR 
180.
			mail_err 
181.
			else 
182.
  
183.
			echo "$(date +%d-%m-%Y): Virtuelle Maschine ($VM_1) wurde erfolgreich gestartet" >>$LOG 
184.
		fi  
185.
  
186.
		mail_final 
187.
		exit 
188.
  
189.
		else 
190.
			echo | vmrun -T server -h $IP -u $USER -p $PW start "[standard] $VM_ORDNER1/$VM_1" 1>>$LOG 2>>$LOG_ERR 
191.
  
192.
			#Prüfen ob VM gestartet werden konnte 
193.
			if  [ $? = 255 ]; then 
194.
				echo "ACHTUNG: Die Virtuelle Maschine ($VM_ORDNER1/$VM_1) konnte nicht gestartet werden." >>$LOG_ERR 
195.
				mail_err 
196.
					else 
197.
						echo "-------------------------------------------------------------------" >>$LOG 
198.
						echo "$(date +%H:%M): Virtuelle Maschine ($VM_1) wurde erfolgreich gestartet" >>$LOG     
199.
					fi 
200.
		#Backup war erfolgreich also beenden wir die .log entsprechend und verschicken die Mail	  
201.
		echo "------------------------------------------------------------ " >> $LOG 
202.
		echo "Das Backup von ${VM_1} wurde am ${DATUM} um $(date +%H:%M) Uhr erfolgreich beendet und in ${ZIEL}/${DATUM}/${DATUM}.tar.gz gespeichert." >> $LOG 
203.
		umount $USB$DEVICE 1>>$LOG 2>>$LOG_ERR 
204.
		mail_final 
205.
  
206.
fi
Mitglied: hmarkus
22.03.2013, aktualisiert um 12:15 Uhr
Hallo,

Du kannst statt
VM_ORDNER1="vm01" #In welchem Ordner liegt die VM
eine for-Schleife nehmen
for i in 1 2 3; do VM_ORDNER=vm0$i;  
   Dein weiterer Code hier 
done
und den Code dann innerhalb der Schleife ausführen.

Kannst Du nicht
USB=/mnt/cdrom
ersetzen durch
USB=/share/IT/backup
und dann den Codeblock wo die USB-Platten gemountet werden auskommentieren?

Markus
Bitte warten ..
Mitglied: hmarkus
22.03.2013 um 12:41 Uhr
Zur Berechnung des Speicherplatzes:

Diese Zeile
QUELLE=$(du -s $S$VM_BACKUP1 | tr -s " " | cut -d "/" -f 1)
funktioniert nur dann, wenn $S$VM_BACKUP1 ein absoluter Pfad ist, also mit einem / anfängt. du verwendet als Trenner den Tab \t der aber auch von cut standardmäßig benutzt wird. Also funktioniert auch
QUELLE=$(du -s $S$VM_BACKUP1 | cut -f 1) 
Und hier
ZIEL1=$(df $S$ZIEL | tr -s " " | cut -d " " -f 4 | grep -v "Avai")
könnte man tail verwenden
ZIEL1=$(df $S$ZIEL | tr -s " " | cut -d " " -f 4 | tail -1)
Außerdem kann man mit der Option -m bei du und df die Ausgabe in MB erhalten und braucht dann nicht mehr umzurechnen.
QUELLE=$(du -sm $S$VM_BACKUP1 | cut -f 1)  
ZIEL1=$(df -m $S$ZIEL | tr -s " " | cut -d " " -f 4 | tail -1) 
das funktioniert hier, soweit ich das testen kann.

Markus
Bitte warten ..
Mitglied: winlin
22.03.2013, aktualisiert 25.03.2013
meinst du so????
01.
#!/bin/bash 
02.
# Ab hier alle Einstellungen überprüfen und ggf. anpassen!! 
03.
# --------------------------------------------------------- 
04.
for i in 01 02 03 04 05 06 07 do VM_ORDNER1=w7vm$i; 
05.
VM_BACKUP1="xxx" 
06.
VM_1="W7_x64.vmx"  
07.
BACKUPORDNER="xxx_backup"  
08.
LOGZIEL="xxx/xxx/"  
09.
USER="xxx" 
10.
PW="xxx" 
11.
IP="https://127.0.0.1/sdk"  
12.
USB="/share/IT/backup"  
13.
CLEAN=0 #Alte Backups im Ordner "BACKUPORDNER" bei Platzmangel löschen? 1=ja, 0=nein 
14.
done 
15.
# --------------------------------------------------------- 
16.
# AB HIER NICHTS MEHR ÄNDERN 
17.
# --------------------------------------------------------- 
18.
DATUM="$(date +%d-%m-%Y)" 
19.
LOG="${LOGZIEL}/${DATUM}.log" 
20.
LOG_ERR="${LOGZIEL}/${DATUM}_err.log" 
21.
ZIEL="" 
22.
MOUNTED=0 
23.
DEVICE="" 
24.
  
25.
#mail_err () 
26.
#{  
27.
#  echo | mail -s "${DATUM}, $(date +%H:%M) Backup-Fehler" $MAIL < # $LOG_ERR 
28.
#}  
29.
#  
30.
#mail_final () 
31.
#{  
32.
#  echo | mail -s "${DATUM}, $(date +%H:%M) Backup-Erfolg" $MAIL #<$LOG 
33.
#}  
34.
  
35.
#USB-Platten werden gemountet  
36.
#for i in $(seq 1 $PLATTEN); do 
37.
#    if [ $MOUNTED = 0 ]; then 
38.
#	echo "Datum: "$DATUM >> $LOG 
39.
#	echo "Zeit: "$(date +%H:%M) >> $LOG 
40.
#	echo | mount $USB$DEVICE -o force 1>> $LOG 2>> $LOG_ERR 
41.
#	echo | mount ceplx270:/scr2/vm/ /mnt/cdrom/ 
42.
#	if [ $? = 0 ]; then 
43.
#	    ZIEL=$USB"/"$BACKUPORDNER 
44.
#	    MOUNTED=1 
45.
#	    echo "${USB}${DEVICE} gemountet." >>$LOG 
46.
#	else 
47.
#	    DEVICE=$(( $DEVICE + 1 )) 
48.
#	fi 
49.
 #   fi 
50.
#done 
51.
  
52.
#Wenn keine der Platten eingebunden werden kann: EXIT mit Error-Mail 
53.
#if [ $MOUNTED = 0 ]; then 
54.
#    echo "Keine Speichermedien gefunden. Backup wurde abgebrochen!" >>$LOG_ERR 
55.
#mail_err 
56.
#   exit 
57.
#fi 
58.
  
59.
#Wenn nicht vorhanden wird Backup-Ordner erstellt. 
60.
if ! [ -d $ZIEL ]; then 
61.
	echo "Erstelle Ziel-Ordner (${ZIEL})." >>$LOG 
62.
	echo | mkdir $ZIEL 1>> $LOG 2>> $LOG_ERR 
63.
		if ! [ $? = 0 ]; then 
64.
			echo "Ordner $ZIEL konnte nicht erstellt werden. Backup wird abgebrochen." >>$LOG 
65.
			mail_err 
66.
			exit 
67.
			else 
68.
				echo "Ordner ${ZIEL} wurde erstellt." >> $LOG 
69.
			fi 
70.
  
71.
else 
72.
	echo "Ordner (${ZIEL}) bereits vorhanden." >> $LOG 
73.
fi 
74.
  
75.
#Speicherplatzabfrage.  
76.
#Wenn CLEAN auf 1 gesetzt, wird bei zu geringem Speicherplatz der Backupordner gelöscht.  
77.
#Backup-Rotation in Planung.... 
78.
S="/" 
79.
MB=0 
80.
MENGEQ=" GB" 
81.
MENGEZ=" GB" 
82.
MENGED=" GB" 
83.
LIMIT=1 
84.
LAUF=2 
85.
END=0 
86.
echo 1 
87.
for i in $(seq 1 $LAUF); do 
88.
	if [ $END = 0 ]; then 
89.
		QUELLE=$(du -s $S$VM_BACKUP1 | tr -s " " | cut -d "/" -f 1) 
90.
		ZIEL1=$(df $S$ZIEL | tr -s " " | cut -d " " -f 4 | grep -v "Avai") 
91.
		QUELLEERG=$(( $QUELLE / 1048576 )) 
92.
			if [ $QUELLEERG -lt $LIMIT ]; then 
93.
				QUELLEERG=$(( $QUELLE / 1024 )) 
94.
				MB=1 
95.
				MENGEQ=" MB"  
96.
			fi 
97.
  
98.
		ZIELERG=$(( $ZIEL1 / 1048576 )) 
99.
			if [ $MB = 1 ]; then 
100.
				ZIELERG=$(( $ZIEL1 / 1024 )) 
101.
				MENGEZ=" MB" 
102.
				MENGED=" MB"  
103.
			fi 
104.
 
105.
		DIFFERENZ=$(( $ZIELERG - $QUELLEERG )) 
106.
		PROZENT=$(( $DIFFERENZ * 100 / $ZIELERG )) 
107.
		NUTZ=$(( 100 - $PROZENT )) 
108.
 
109.
				if  [ $ZIELERG -lt $QUELLEERG ]; then 
110.
					if [ $CLEAN = 1 ]; then 
111.
						echo "Größe VM........................: "$QUELLEERG$MENGEQ >> $LOG 
112.
						echo "Verfügbarer Speicherplatz.......: "$ZIELERG$MENGEZ >> $LOG 
113.
						echo "Freier Speicherplatz nach Backup: "$DIFFERENZ$MENGED >> $LOG 
114.
						echo "Platzbedarf in %................: "$NUTZ" %" >> $LOG 
115.
						echo " " >> $LOG 
116.
						echo "Speicherplatz nicht ausreichend. Ordner ${ZIEL} wird geleert." >> $LOG 
117.
						echo "...." >> $LOG 
118.
						echo | touch $ZIEL/test.file 1>> $LOG 2>> $LOG_ERR 
119.
						echo | rm -r $ZIEL/* 1>> $LOG 2>> $LOG_ERR 
120.
					else 
121.
						echo "Größe VM........................: "$QUELLEERG$MENGEQ >> $LOG_ERR 
122.
					echo "Verfügbarer Speicherplatz.......: "$ZIELERG$MENGEZ >> $LOG_ERR 
123.
						echo "Freier Speicherplatz nach Backup: "$DIFFERENZ$MENGED >> $LOG_ERR 
124.
						echo "Platzbedarf in %................: "$NUTZ" %" >> $LOG_ERR 
125.
						echo " " >> $LOG_ERR 
126.
						echo "Speicherplatz nicht ausreichend. Backup-Vorgang wird abgebrochen." >> $LOG_ERR 
127.
						mail_err 
128.
						exit 
129.
					fi 
130.
				else 
131.
					END=1 
132.
					echo "Größe VM........................: "$QUELLEERG$MENGEQ >> $LOG 
133.
					echo "Verfügbarer Speicherplatz.......: "$ZIELERG$MENGEZ >> $LOG 
134.
					echo "Freier Speicherplatz nach Backup: "$DIFFERENZ$MENGED >> $LOG 
135.
					echo "Platzbedarf in %................: "$NUTZ" %" >> $LOG 
136.
					echo " " >> $LOG 
137.
					echo "Speicherplatz ausreichend. Backup wird gestartet." >> $LOG 
138.
				fi				 
139.
	fi 
140.
done 
141.
 
142.
# VMs in den Suspend setzen und Erfolg abfragen 
143.
# 0 = i.O. 
144.
# 255 = Fehler 
145.
  
146.
echo | vmrun -T server -h $IP -u $USER -p $PW suspend "[ha-datacenter/standard] $VM_ORDNER1/$VM_1" 1>>$LOG 2>>$LOG_ERR 
147.
if  [ $? = 255 ]; then 
148.
		echo "ACHTUNG: Die Virtuelle Maschine ($VM_ORDNER1/$VM_1) konnte nicht in den Suspend Modus versetzt werden." >>$LOG_ERR 
149.
		echo "Backup wurde abgebrochen" >>$LOG_ERR 
150.
		umount $USB$DEVICE >> $LOG_ERR 
151.
		mail_err 
152.
		exit 
153.
			else 
154.
				echo "$(date +%H:%M): Virtuelle Maschine ($VM_1) wurde erfolgreich in den Suspend-Mode versetzt" >>$LOG 
155.
fi	 
156.
  
157.
  
158.
  
159.
#Verzeichnis für neues Backup erstellen falls noch nicht vorhanden 
160.
if ! [ -d $ZIEL/$DATUM ]; then 
161.
		echo | mkdir $ZIEL/$DATUM >> $LOG 
162.
fi 
163.
  
164.
#Jetzt kann tar loslegen 
165.
cd / 
166.
echo | tar -czvf $ZIEL/$DATUM/$DATUM.tar.gz $VM_BACKUP1 1>>$LOG 2>>$LOG 
167.
  
168.
#Auf Fehler während tar prüfen: 
169.
# 0 = fehlerfrei, 
170.
echo "Errorlevel TAR: "$? >> $LOG  
171.
  
172.
if  [ $? != 0 ] ; then 
173.
    echo "ACHTUNG: Beim Backup (tar) von (${VM_BACKUP1}) wurden am ${DATUM} um $(date +%H:%M) Uhr Fehler/Meldungen ausgegeben!" >>$LOG 
174.
    echo "Das erstellte Archiv befinden sich in ${ZIEL}/${DATUM}/${DATUM}.tar.gz" >>$LOG 
175.
	umount $USB$DEVICE >> $LOG 
176.
    echo | vmrun -T server -h $IP -u $USER -p $PW start "[standard] $VM_ORDNER1/$VM_1" 1>>$LOG 2>>$LOG_ERR 
177.
  
178.
		# Prüfen ob VM gestartet werden konnte 
179.
		if  [ $? = 255 ]; then 
180.
			echo "ACHTUNG: Die Virtuelle Maschine ($VM_ORDNER1/$VM_1) konnte nicht gestartet werden." >>$LOG_ERR 
181.
			mail_err 
182.
			else 
183.
  
184.
			echo "$(date +%d-%m-%Y): Virtuelle Maschine ($VM_1) wurde erfolgreich gestartet" >>$LOG 
185.
		fi  
186.
  
187.
		mail_final 
188.
		exit 
189.
  
190.
		else 
191.
			echo | vmrun -T server -h $IP -u $USER -p $PW start "[standard] $VM_ORDNER1/$VM_1" 1>>$LOG 2>>$LOG_ERR 
192.
  
193.
			#Prüfen ob VM gestartet werden konnte 
194.
			if  [ $? = 255 ]; then 
195.
				echo "ACHTUNG: Die Virtuelle Maschine ($VM_ORDNER1/$VM_1) konnte nicht gestartet werden." >>$LOG_ERR 
196.
				mail_err 
197.
					else 
198.
						echo "-------------------------------------------------------------------" >>$LOG 
199.
						echo "$(date +%H:%M): Virtuelle Maschine ($VM_1) wurde erfolgreich gestartet" >>$LOG     
200.
					fi 
201.
		#Backup war erfolgreich also beenden wir die .log entsprechend und verschicken die Mail	  
202.
		echo "------------------------------------------------------------ " >> $LOG 
203.
		echo "Das Backup von ${VM_1} wurde am ${DATUM} um $(date +%H:%M) Uhr erfolgreich beendet und in ${ZIEL}/${DATUM}/${DATUM}.tar.gz gespeichert." >> $LOG 
204.
		umount $USB$DEVICE 1>>$LOG 2>>$LOG_ERR 
205.
		mail_final 
206.
  
207.
fi
Bitte warten ..
Mitglied: winlin
22.03.2013 um 14:00 Uhr
supi danke...das ist gleich der nächste schritt den ich ändern werde...
Bitte warten ..
Mitglied: hmarkus
22.03.2013 um 14:29 Uhr
In die Zeile mit der for-Schleife
for i in 01 02 03 04 05 06 07 do VM_ORDNER1=w7vm$i;
gehört entwede ein Semikolon for "do" oder ein Zeilenumbruch. Also
for i in 01 02 03 04 05 06 07; do VM_ORDNER1=w7vm$i;
oder
for i in 01 02 03 04 05 06 07  
    do VM_ORDNER1=w7vm$i;
Markus
Bitte warten ..
Mitglied: winlin
25.03.2013 um 09:39 Uhr
Hey Markus!

nachdem ich deine Änderung übernommen habe, läuft das Skript zwar gerade immer noch - bekomme aber trotzdem folgenden Fehler:
01.
[root@linuxhost vmware]# ./BACKUP_VM_TEMPLATE 
02.
03.
./BACKUP_VM_TEMPLATE: line 68: /dev/mapper/vgroot 
04.
193681860 / 1048576 : syntax error: operand expected (error token is "/dev/mapper/vgroot 
05.
193681860 / 1048576 ")
Zeile 68 ist gerade diese hier:
01.
 ZIELERG=$(( $ZIEL1 / 1048576 ))
Bitte warten ..
Mitglied: hmarkus
25.03.2013 um 10:11 Uhr
Gib
ZIEL1=2000000 
ZIELERG=$(( $ZIEL1 / 1048576 )) 
echo $ZIELERG
im Terminal ein. Was passiert?

Du musst die einzelnen Zeilen im Terminal ausprobieren um Fehler zu finden.

Markus
Bitte warten ..
Mitglied: winlin
25.03.2013, aktualisiert um 10:27 Uhr
hmmmm das werde ich gleich mal testen...gib dir auch gleich ein Feedback.

Gebackupt hat er nun trotzdem, leider nicht in das Verzeichnis das ich ihm angegeben habe sonder im Wurzelverzeichnis:
/25-03-2013/25-03-2013.tar.gz

01.
#!/bin/bash 
02.
####################### 
03.
# Backupskript VMware #        
04.
####################### 
05.
  
06.
# Ab hier alle Einstellungen überprüfen und ggf. anpassen!! 
07.
# --------------------------------------------------------- 
08.
for i in 01 02 03 04 05 06 07; do VM_ORDNER1=w7vm$i; 
09.
#VM_ORDNER1="w7vm$i" #In welchem Ordner liegt die VM 
10.
VM_BACKUP1="data1/vm" #Der komplette Pfad zum VM Ordner 
11.
VM_1="W7_x64.vmx" #Name der VM 
12.
BACKUPORDNER="w7_vm_backup" #Name des Backup-Ordners, wird angelegt falls nicht vorhanden.  
13.
LOGZIEL="/data1/vm/" #Pfad zu den Logs 
14.
USER="xxx" 
15.
PW="xxx" 
16.
IP="https://127.0.0.1/sdk" #Nur in AUSNAHMEFÄLLEN ändern. (Bei Standartinstallationen kann dies so bleiben) 
17.
PLATTE="/data2/VMTEST" #Mountpoint 
18.
CLEAN=0 #Alte Backups im Ordner "BACKUPORDNER" bei Platzmangel löschen? 1=ja, 0=nein 
19.
#done 
20.
# --------------------------------------------------------- 
21.
# AB HIER NICHTS MEHR ÄNDERN 
22.
# --------------------------------------------------------- 
23.
DATUM="$(date +%d-%m-%Y)" 
24.
LOG="${LOGZIEL}/${DATUM}.log" 
25.
LOG_ERR="${LOGZIEL}/${DATUM}_err.log" 
26.
ZIEL="" 
27.
MOUNTED=0 
28.
DEVICE="" 
29.
 
30.
#Wenn nicht vorhanden wird Backup-Ordner erstellt. 
31.
if ! [ -d $ZIEL ]; then 
32.
	echo "Erstelle Ziel-Ordner (${ZIEL})." >>$LOG 
33.
	echo | mkdir $ZIEL 1>> $LOG 2>> $LOG_ERR 
34.
		if ! [ $? = 0 ]; then 
35.
			echo "Ordner $ZIEL konnte nicht erstellt werden. Backup wird abgebrochen." >>$LOG 
36.
			exit 
37.
			else 
38.
				echo "Ordner ${ZIEL} wurde erstellt." >> $LOG 
39.
			fi 
40.
  
41.
else 
42.
	echo "Ordner (${ZIEL}) bereits vorhanden." >> $LOG 
43.
fi 
44.
  
45.
#Speicherplatzabfrage.  
46.
#Wenn CLEAN auf 1 gesetzt, wird bei zu geringem Speicherplatz der Backupordner gelöscht.  
47.
#Backup-Rotation in Planung.... 
48.
S="/" 
49.
MB=0 
50.
MENGEQ=" GB" 
51.
MENGEZ=" GB" 
52.
MENGED=" GB" 
53.
LIMIT=1 
54.
LAUF=2 
55.
END=0 
56.
echo 1 
57.
for i in $(seq 1 $LAUF); do 
58.
	if [ $END = 0 ]; then 
59.
		QUELLE=$(du -s $S$VM_BACKUP1 | tr -s " " | cut -d "/" -f 1) 
60.
		ZIEL1=$(df $S$ZIEL | tr -s " " | cut -d " " -f 4 | grep -v "Avai") 
61.
		QUELLEERG=$(( $QUELLE / 1048576 )) 
62.
			if [ $QUELLEERG -lt $LIMIT ]; then 
63.
				QUELLEERG=$(( $QUELLE / 1024 )) 
64.
				MB=1 
65.
				MENGEQ=" MB"  
66.
			fi 
67.
  
68.
		ZIELERG=$(( $ZIEL1 / 1048576 )) 
69.
			if [ $MB = 1 ]; then 
70.
				ZIELERG=$(( $ZIEL1 / 1024 )) 
71.
				MENGEZ=" MB" 
72.
				MENGED=" MB"  
73.
			fi 
74.
 
75.
		DIFFERENZ=$(( $ZIELERG - $QUELLEERG )) 
76.
		PROZENT=$(( $DIFFERENZ * 100 / $ZIELERG )) 
77.
		NUTZ=$(( 100 - $PROZENT )) 
78.
 
79.
				if  [ $ZIELERG -lt $QUELLEERG ]; then 
80.
					if [ $CLEAN = 1 ]; then 
81.
						echo "Größe VM........................: "$QUELLEERG$MENGEQ >> $LOG 
82.
						echo "Verfügbarer Speicherplatz.......: "$ZIELERG$MENGEZ >> $LOG 
83.
						echo "Freier Speicherplatz nach Backup: "$DIFFERENZ$MENGED >> $LOG 
84.
						echo "Platzbedarf in %................: "$NUTZ" %" >> $LOG 
85.
						echo " " >> $LOG 
86.
						echo "Speicherplatz nicht ausreichend. Ordner ${ZIEL} wird geleert." >> $LOG 
87.
						echo "...." >> $LOG 
88.
						echo | touch $ZIEL/test.file 1>> $LOG 2>> $LOG_ERR 
89.
						echo | rm -r $ZIEL/* 1>> $LOG 2>> $LOG_ERR 
90.
					else 
91.
						echo "Größe VM........................: "$QUELLEERG$MENGEQ >> $LOG_ERR 
92.
					echo "Verfügbarer Speicherplatz.......: "$ZIELERG$MENGEZ >> $LOG_ERR 
93.
						echo "Freier Speicherplatz nach Backup: "$DIFFERENZ$MENGED >> $LOG_ERR 
94.
						echo "Platzbedarf in %................: "$NUTZ" %" >> $LOG_ERR 
95.
						echo " " >> $LOG_ERR 
96.
						echo "Speicherplatz nicht ausreichend. Backup-Vorgang wird abgebrochen." >> $LOG_ERR 
97.
						exit 
98.
					fi 
99.
				else 
100.
					END=1 
101.
					echo "Größe VM........................: "$QUELLEERG$MENGEQ >> $LOG 
102.
					echo "Verfügbarer Speicherplatz.......: "$ZIELERG$MENGEZ >> $LOG 
103.
					echo "Freier Speicherplatz nach Backup: "$DIFFERENZ$MENGED >> $LOG 
104.
					echo "Platzbedarf in %................: "$NUTZ" %" >> $LOG 
105.
					echo " " >> $LOG 
106.
					echo "Speicherplatz ausreichend. Backup wird gestartet." >> $LOG 
107.
				fi				 
108.
	fi 
109.
done 
110.
 
111.
# VMs in den Suspend setzen und Erfolg abfragen 
112.
# 0 = i.O. 
113.
# 255 = Fehler 
114.
  
115.
echo | vmrun -T server -h $IP -u $USER -p $PW suspend "[ha-datacenter/standard] $VM_ORDNER1/$VM_1" 1>>$LOG 2>>$LOG_ERR 
116.
if  [ $? = 255 ]; then 
117.
		echo "ACHTUNG: Die Virtuelle Maschine ($VM_ORDNER1/$VM_1) konnte nicht in den Suspend Modus versetzt werden." >>$LOG_ERR 
118.
		echo "Backup wurde abgvim chen" >>$LOG_ERR 
119.
		exit 
120.
			else 
121.
				echo "$(date +%H:%M): Virtuelle Maschine ($VM_1) wurde erfolgreich in den Suspend-Mode versetzt" >>$LOG 
122.
fi	 
123.
  
124.
  
125.
  
126.
#Verzeichnis für neues Backup erstellen falls noch nicht vorhanden 
127.
if ! [ -d $ZIEL/$DATUM ]; then 
128.
		echo | mkdir $ZIEL/$DATUM >> $LOG 
129.
fi 
130.
  
131.
#Jetzt kann tar loslegen 
132.
cd / 
133.
echo | tar -czvf $ZIEL/$DATUM/$DATUM.tar.gz $VM_BACKUP1 1>>$LOG 2>>$LOG 
134.
  
135.
#Auf Fehler während tar prüfen: 
136.
# 0 = fehlerfrei, 
137.
echo "Errorlevel TAR: "$? >> $LOG  
138.
  
139.
if  [ $? != 0 ] ; then 
140.
    echo "ACHTUNG: Beim Backup (tar) von (${VM_BACKUP1}) wurden am ${DATUM} um $(date +%H:%M) Uhr Fehler/Meldungen ausgegeben!" >>$LOG 
141.
    echo "Das erstellte Archiv befinden sich in ${ZIEL}/${DATUM}/${DATUM}.tar.gz" >>$LOG 
142.
	echo | vmrun -T server -h $IP -u $USER -p $PW start "[standard] $VM_ORDNER1/$VM_1" 1>>$LOG 2>>$LOG_ERR 
143.
  
144.
		# Prüfen ob VM gestartet werden konnte 
145.
		if  [ $? = 255 ]; then 
146.
			echo "ACHTUNG: Die Virtuelle Maschine ($VM_ORDNER1/$VM_1) konnte nicht gestartet werden." >>$LOG_ERR 
147.
			else 
148.
  
149.
			echo "$(date +%d-%m-%Y): Virtuelle Maschine ($VM_1) wurde erfolgreich gestartet" >>$LOG 
150.
		fi  
151.
  
152.
		exit 
153.
  
154.
		else 
155.
			echo | vmrun -T server -h $IP -u $USER -p $PW start "[standard] $VM_ORDNER1/$VM_1" 1>>$LOG 2>>$LOG_ERR 
156.
  
157.
			#Prüfen ob VM gestartet werden konnte 
158.
			if  [ $? = 255 ]; then 
159.
				echo "ACHTUNG: Die Virtuelle Maschine ($VM_ORDNER1/$VM_1) konnte nicht gestartet werden." >>$LOG_ERR 
160.
					else 
161.
						echo "-------------------------------------------------------------------" >>$LOG 
162.
						echo "$(date +%H:%M): Virtuelle Maschine ($VM_1) wurde erfolgreich gestartet" >>$LOG     
163.
					fi 
164.
		#Backup war erfolgreich also beenden wir die .log entsprechend  
165.
		echo "------------------------------------------------------------ " >> $LOG 
166.
		echo "Das Backup von ${VM_1} wurde am ${DATUM} um $(date +%H:%M) Uhr erfolgreich beendet und in ${ZIEL}/${DATUM}/${DATUM}.tar.gz gespeichert." >> $LOG 
167.
		 
168.
fi 
169.
 
Bitte warten ..
Mitglied: hmarkus
25.03.2013 um 12:15 Uhr
So, ich hab das mal ausprobiert mit der Berechnung ob der Speicherplatz reicht. Zuverlässig geht es mit bc
ZIELERG=$(echo $ZIEL1 / 1048576 | bc -l )
Markus
Bitte warten ..
Mitglied: hmarkus
25.03.2013 um 12:18 Uhr
Am einfachsten wäre es, wenn Du nur den Teil des Codes posten würdest, der nicht funktioniert. Du musst Dir die Variablen anzeigen lassen, die eigentlich verwendet werden sollen, also "echo" einbauen wo was nicht geht. Das ganze Skript ist so kaum nachvollziehbar.

Markus
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Xenserver
Xenserver 6.5 - Backup Server und VM auf NAS (1)

Frage von caspi-pirna zum Thema Xenserver ...

SAN, NAS, DAS
NAS RAID5 - RAID0 und Backup (7)

Frage von easy4breezy zum Thema SAN, NAS, DAS ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...