Top-Themen

Aktuelle Themen (A bis Z)

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, 1865 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: 64748
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: 64748
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: 64748
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: 64748
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: 64748
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: 64748
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 ..
Ähnliche Inhalte
Debian
Mit Shell Skript PHP ausfüheren
gelöst Frage von zeroblue2005Debian6 Kommentare

Hallo Zusammen, lacht nicht aber habe ich eben noch nie gemacht ich möchte eine Sh Datei haben die folgendes ...

Batch & Shell
Backup Skript
gelöst Frage von DavidMueBatch & Shell18 Kommentare

Guten Tag, Ich habe wieder einmal eine Skripting aufgabe im Unterricht bekommen, ohne einen Ansatzpunkt zu haben. (Bin nicht ...

Vmware
VM mittels ESXi Shell erstellen
Frage von BeKo-123Vmware1 Kommentar

Hallo, ist es möglich, eine VM über die ESXi Shell per SSH zu erstellen? Vielen dank im vorraus Liebe ...

Vmware
Acronis Backup in VM wiederherstellen
Frage von metal-shotVmware2 Kommentare

Hallo Gibt eine Möglichkeit aus einem Acronis Backup (erstellt mit Acronis Backup 11.5) direkt in eine VM (Wünschenswert VMplayer/Worlstation) ...

Neue Wissensbeiträge
Verschlüsselung & Zertifikate

Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows

Information von ticuta1 vor 11 MinutenVerschlüsselung & Zertifikate

Interessant SSH-Kommando in CMD.exe und PowerShell

Apple

IOS 11.2.1 stopft HomeKit-Remote-Lücke

Tipp von BassFishFox vor 1 TagApple

Das Update für iPhone, iPad und Apple TV soll die Fernsteuerung von Smart-Home-Geräten wieder in vollem Umfang ermöglichen. Apple ...

Windows 10

Windows 10 v1709 EN murkst bei den Regionseinstellungen

Tipp von DerWoWusste vor 1 TagWindows 10

Dieser kurze Tipp richtet sich an den kleinen Personenkreis, der Win10 v1709 EN-US frisch installiert und dabei die englische ...

Webbrowser

Kein Ton bei Firefox Quantum über RDP

Tipp von Moddry vor 1 TagWebbrowser

Hallo Kollegen! Hatte das Problem, dass der neue Firefox bei mir auf der Kiste keinen Ton hat, wenn ich ...

Heiß diskutierte Inhalte
Windows Server
RODC kann nicht aus Domäne entfernt werden
Frage von NilsvLehnWindows Server18 Kommentare

HAllo, ich arbeite in einem Universitätsnetzwerk mit 3 Standorten. Die Standorte haben alle ein ESXi Cluster und auf diesen ...

Hardware
Kein Bild mit nur einer bestimmten Grafikkarten - Mainboard Konfiguration
gelöst Frage von bestelittHardware18 Kommentare

Hallo zusammen, ich hatte schon einmal eine ähnliche Frage gestellt. Damals hatte ich genau das gleiche Problem. Allerdings lies ...

Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement17 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...