Donnerstag, 2. Dezember 2010
esx cmd & other comands
vdf -h
sql commands (oracle)
netstat -an | findstr 1524
sqlplus v500/v500@prod1
Mittwoch, 1. Dezember 2010
Cron einrichten (crontab)
- Einleitung
- Einfaches Timing unter Debian
- Der Befehl crontab
- Eine "einmalige" Aufgabe definieren
- Wiederholende Aufgaben
- Zeitabschnitte/Bereiche
- Listen
- Schritte/Sprünge
- Komplexere Aufgaben
- Zusammenfassung
Einleitung
Aus aktuellem Anlass habe ich mich dazu entschlossen nun ein Tutorial für die Einrichtung von Cron unter Linux (nicht ausschließlich Debian) zu schreiben. Cron ist dafür zuständig Programme oder Scripte zu einger gegebenen Uhrzeit bzw. zu einem gegebenen Datum auszuführen. Cron kann allerdings natürlich auch Programme und Scripte zu wiederkehrenden Uhrzeiten oder Wochentagen ausführen. Genaugenommen kann Cron so ziemlich alles Timen was man sich vorstellen kann. Aber dazu später mehr.
Zum einen möchte ich eine möglichst einfache und detailierte Beschreibung für Anfänger geben. Zum Anderen möchte ich aber auch in der Zusammenfassung nocheinmal alles beisammen haben für diejenigen die Cron an sich schon kennen, aber eine kurze und schnelle Hilfe gebrauchen können um sich die Möglichkeiten wieder ins Gedächtniss zu rufen.
Wenn jemandem noch etwas einfällt, was in diesem Tutorial fehlt, kann er mir das mit der Kommentarfunktion oder per eMail mitteilen. Über Kommentare freue ich mich natürlich in jedem Fall!
Einfaches Timing unter Debian
Debian bietet einige Verzeichnisse die das schnelle Einrichten von häufig benötigten Cron-Aufträgen vereinfacht. Diese Verzeichnisse lauten:
/etc/cron.hourly/
/etc/cron.daily/
/etc/cron.weekly/
/etc/cron.monthly/
Die Namen verraten eigentlich schon welchem Zweck diese Verzeichnisse dienen. Alles was man tun muss, ist ein Script in einem dieser Verzeichnisse abzulegen (oder ein Symlink zu einem Script zu erzeugen) und Cron startet dieses Script dann, je nachdem in welches Verzeichniss man es legt, stündlich bis monatlich.
Hinweis: Immer darauf achten das die Scripte auch die erforderlichen Berechtigungen haben um ausgeführt zu werden.
Der Vollständigkeit halber möchte ich auch gleich noch das Verzeichniss /etc/cron.d/ erwähnen. Dieses Verzeichniss ist hilfreich, wenn man gut sortiert für jeden Anwendungszweck eine globale Konfigurationsdatei erstellen möchte. Hier findet also eine Einteilung nach Dateien statt. Die übliche konfiguration von Cron ist nach Benutzern unterteilt. Die Syntax dieser Datei entspricht jedoch der, die auch bei der benutzerbasierten Konfiguration verwendet wird.
Der Befehl crontab
Der Befehl crontab wird dazu genutzt um Cron einzurichten. Die Syntax ist glücklicherweise recht einfach.
Mit crontab -e öffnet man die Crontab für den aktuellen Benutzer um sie zu editieren.
Um sich die Crontab nur auflisten zu lassen, führt man crontab -l aus.
Wer seine Crontab löschen möchte, kann dies mit crontab -r tun.
Eine weitere Sicherheitsabfrage vor dem Löschen erreicht man mit contab -ir.
Und wenn man auf die Crontab eines anderen Benutzers zugreifen möchte (sofern man die Berechtigungen dazu hat), kann man dies tun, indem man -u user dazwischen setzt. Also zum Beispiel: crontab -u user -e
Wenn man den Befehl zum Editieren einer Crontab eingegeben hat, öffnet sich die entsprechende Crontab direkt in einem Texteditor. Dort kann man sie beliebig editieren und speichern. Sobald man den Editor verlässt, wird die Crontab automatisch übernommen und ist ab sofort aktiv.
Eine "einmalige" Aufgabe definieren
Es gibt natürlich noch andere simple Aufgaben, die nicht einfach über die Cron-Verzeichnisse definiert werden können. Dazu kommen wir gleich. Erstmal müssen wir dazu jedoch verstehen wie eine Crontab-Datei aufgebaut ist. Hierfür beschreibe ich erstmal wie man eine "einmalige" Aufgabe definiert. Allerdings ist sie nicht ganz einmalig. Sie wird jedes Jahr wiederholt, sofern man sie nicht löscht.
Jede Zeile definiert eine einzelne Aufgabe, auch Cronjob genannt. Es können beliebig viele Zeilen in einer Crontab-Datei stehen.
Die verschiedenen Parameter werden jeweils durch Leerzeichen getrennt. Die Zeilen sind folgermaßen aufgebaut:
Minute Stunde TagDesMonats Monat Wochentag Befehl
Normalerweise werden alle Parameter (bis auf den Befehl natürlich) in Zahlen angegeben. Der Monat und der Wochentag können allerdings auch in Namen eingegeben werden, was jedoch gewisse Einschränkungen mit sich bringt, wenn es um komplexere Aufgaben geht. Deshalb werde ich hier nicht weiter darauf eingehen.
Wenn man also um 10 Minuten nach 13 Uhr am 24 Dezember daran erinnert werden möchte das Heiligabend ist, müsste die Zeile in so lauten:
10 13 24 12 * echo "Es ist Heiligabend"
Was hat nun das Sternchen zu bedeuten? Ganz einfach: Es sagt aus das der Wochentag beliebig sein kann. Würde man statt dem * zum Beispiel eine 1 schreiben, würde der Befehl, entgegen dem was man vielleicht erwartet, AUCH jeden Montag ausgeführt werden! Und nicht nur wenn der 24. Dezember auf einen Montag fällt. Diese Besonderheit gilt es zu beachten!
Wiederholende Aufgaben
Aber Cron kann wesentlich mehr als einen an Feiertage zu erinnern. Man könnte sich zum Beispiel daran erinnern lassen das Wochenende ist. Wer das braucht? Na jeder der gerade Urlaub hat und nicht vergessen will noch einzukaufen, bevor die Geschäfte dicht machen. Wie sähe solch eine Zeile aus? Zum Beispiel so:
0 13 * * 6 echo "Heute ist Samstag"
Dieser Eintrag meldet sich also an jedem Samstag um Punkt 13 Uhr. Warum gebe ich 0 und 13 ein anstatt einfach Sternchen zu benutzen? Ganz einfach: Würde ich Sternchen benutzen, würde der Befehl nicht nur einmal am Samstag ausgeführt werden, sondern jede Minute, solange Samstag ist. Wer es also aufdringlicher mag, kann den Befehl auch so gestalten:
0 * * * 6 echo "Heute ist Samstag"
Dieser Cronjob würde also an jedem Samstag ausgeführt werden, sobald die Uhrzeit 0 Minuten zeigt. Mit anderen Worten: Zu jeder vollen Stunde. Den ganzen Samstag lang. Etwas nervig, oder?
Zeitabschnitte/Bereiche
Etwas zu jeder beliebigen Minute oder Stunde tun zu können ist an sich zwar ganz nett, aber noch lang nicht ausreichend. Wenn ich zum Beispiel nur einmal in der Stunde daran erinnert werden möchte das schon Samstag ist, aber nur in der Zeit zwischen 9 Uhr und 21 Uhr, dann sähe das so aus:
10 9-20 * * 6 echo "Es ist schon wieder Samstag"
Die 10 am Anfang sagt aus das der Alarm nicht zur vollen Stunde ausgelöst wird, sondern immer 10 Minuten danach. 9-20 sagt etwas über die Stunden aus. Das erste mal wird der Alarm also um 9:10 Uhr ausgelöst, dann um 10:10 Uhr usw. Bis 20:10 Uhr. Um 21:10 Uhr wird kein Alarm mehr geschlagen. Da ist der Tag dann ja auch nahezu vorbei.
Auf diese Weise können wir also Zeitabschnitte definieren in denen der Cronjob immer wieder ausgeführt wird. Das gleiche geht natürlich auch mit Monaten.
Jeder Mensch der viel mit Computern arbeitet kennt die Situation des blendenden Sonnenlichts im Sommer. Man kann dann kaum noch etwas auf dem Bildschirm erkennen. Damit man allerdings zumindest im Winter sei Rollo gelegentlich öffnet, wäre es vielleicht gut sich daran erinnern zu lassen das Momentan eher wenig Sonnenlicht ist. Damit wir hier nicht einen Schritt überspringen, wähle ich mal Oktober bis Dezember aus. Der Befehl würde so lauten:
0 9 * 10-12 * echo "Mach das Rollo hoch!"
Hiermit würden wir erreichen das jeden Tag um 9:00 Uhr eine Warnmeldung ausgegeben wird. Allerdings nur im 10. 11. und 12. Monat des Jahres.
Listen
Und wenn ich nun mehrere unzusammenhängende Monate definieren möchte? Brauche ich dann mehrere Zeilen? Die Antwort lautet: Nein. Hierfür kann man Listen definieren. Möchte ich z.B. einen Befehl immer um 9:10 Uhr, um 10:10 Uhr, sowie um 13:10 Uhr und um 18:10 Uhr ausführen, dann sieht das wie folgt aus:
10 9,10,13,18 * * * echo "Was könnte das hier wohl bringen?"
Natürlich geht das auch mit den Minuten:
10,20,40 9,13 * * * echo "Noch kurioser!"
Wer jetzt aufgepasst hat, weiß bereits das dieser Cronjob jeweils um 9:10 Uhr, 9:20 Uhr, 9:40 Uhr, 13:10 Uhr, 13:20 Uhr und 13:40 Uhr ausgeführt wird. Mit Wochentagen geht das genauso. Denkbar wäre dies hier, zum Beispiel, für eine Erinnerung an die Termine für einen Verein.
30 16 * * 1,3,5 echo "Schützenverein - Schießen lernen - Freunde treffen"
Nun würde man jeden Montag, Mittwoch und Freitag um 16:30 Uhr an das Vereinstreffen erinnert werden.
Schritte/Sprünge
Die letzte, aber nicht weniger wichtige, Funktion von Cron sind Schritte bzw. Sprünge in den definierten Bereichen. Wenn ich zum Beispiel jeden zweiten Monat daran erinnert werden möchte das ich viel zu faul bin, ginge das so:
10 16 15 1,3,5,7,9,11 * echo "Tu mal was!"
Das würde mich zwar am 15. Tag in jedem zweiten Monat um 16:10 Uhr daran erinnern das ich noch etwas tun müsste, wäre aber nicht sehr elegant. Wesentlich eleganter geht es hiermit:
10 16 15 1-12/2 * echo "Tu trotzdem mal etwas!"
Hiermit definiere ich den Zeitabschnitt vom 1. bis zum 12. Monat. Ich könnte stattdessen natürlich auch ein Sternchen benutzen. Der Schrägstrich sagt aus das aber nur jeder zweite Monat von dem Schritt erfasst wird. Cron fängt also am Anfang des Bereichs an. In unserem Fall ist das die Eins. Danach wird ein Schritt von zwei Monaten gegangen. Die Zwei wird also übersprungen, als nächstes kommt die Drei an die Reihe usw.
Komplexere Aufgaben
Wenn man all diese Möglichkeiten kombiniert, kann man auch komplexe und teilweise absure Cronjobs erstellen. Cron könnte also auch einen Befehl an jedem Dienstag, Mittwoch und Donnerstag sowie an jedem 10. 12. 22. und 25. bis 30. im Monat auführen. Alle 10 Minuten um 9 bis 13 Uhr, sowie 18 Uhr und 22 Uhr. Aber nur innerhalb der ersten 40 Minuten in jeder Stunde. Und das ganze natürlich nur jeden dritten Monat im Jahr. Der Befehl dazu sieht so aus (ich hoffe ich mach jetzt keinen Fehler):
0-40/10 9-13,18,22 10,12,22,25-30 */3 2-4 echo "Was mache ich hier eigentlich?"
Dies ist nur ein wirres Beispiel um zu zeigen wie komplex ein Cronjob aussehen kann. Wer verstanden hat was hier abläuft und warum, der muss sich keine Sorgen bei der Einrichtung seiner Cronjobs machen. Aber in jedem Fall: Viel Spaß beim ausprobieren!
Zusammenfassung
Dateiaufbau:
Minute Stunde TagDesMonats Monat Wochentag Befehl
Die Werte werden durch Leerzeichen getrennt. Der sechste Wert, also der Befehl, darf beliebig viele Leerzeichen enthalten, da er bis zum Ende der Zeile geht.
Erlaubte Werte:
Minute 0-59
Stunde 0-23
TagDesMonats 1-31
Monat 1-12
Wochentag 0-7 (0 oder 7 ist Sonntag)
Bereiche:
Bereiche werden mit einem Minus beschrieben. Von 1 Uhr bis 13 Uhr sieht also an der entsprechenden Stelle so aus: 1-13
Wenn man den gesamten Bereich definieren möchte, kann man dies auch mit einem Sternchen tun.
Listen:
Mehrere Werte können in einer Liste aneinandergereiht werden. Die Werte werden druch Kommas getrennt. Beispiel: 1,2,4,12
Schritte:
Schritte werden durch ein Schrägstrich definiert. Möchte man also nur jeden zweiten Wert aus einem Bereich haben, sieht das so aus: */2
Kombinationen:
Kombinationen sind erlaubt. Beispiel: 0-4,8-12
Namen statt Zahlen:
Es ist auch möglich Wochentage und Monate mit Namen statt mit Zahlen zu definieren. Dies ist jedoch nicht unbedingt zu empfehlen, da man bei Namen nicht mit Bereichen oder Listen gearbeitet werden kann. Namen sind jeweils die ersten 3 Buchstaben der englischen Bezeichnung. Also Jan, Feb, Mar, ... sowie Mon, Thu, Wed, usw.
Besonderheiten:
Bei einer Aufzählung in einer Liste und bei der definition von Bereichen muss unbedingt darauf geachtet werden keine Leerzeichen zu benutzen, da Cron sonst davon ausgehen würde, das es sich bereits um den Wert handelt.
Ausserdem muss beachtet werden das TagDesMonats und Wochentag unabhängig voneinander funktionieren. Legt man beispielsweise in einem Cronjob den ersten Tag des Monats fest und den Dienstag, wird der Cronjob sowohl am ersten Tag des Monats als auch an jedem Dienstag ausgeführt.
Add cron Job to VMware ESX/ESXi
Having Logbook:Enable SSH access in VMware">enabled ssh access to your ESX/ESXi server, ssh in as root.
Firstly, add the cron job to the root crontab:
- Edit /var/spool/cron/crontabs/root
- Add the line (all on one line)
5 0 * * * /full/path/to/script arguments/with/full/path > /full/path/to/logfile 2>&1 - Run the command "cat /var/run/crond.pid"
That will print the process number of the running crond, such as 12345 - Run the command "kill 12345"
where "12345" should be replaced with the number output by the previous command
For details of the meaning of "5 0 * * *" (5 minutes past midnight every day) read the man page for crontab(5) on any Unix/Linux server, or else on the web.
Now, add a command to /etc/rc.local to re-generate the cron job when ESX/ESXi reboots
- Edit /etc/rc.local, using a command such as "vi /etc/rc.local".
- At the end of the file, add 3 lines (using "G" then "O" in vi). The first kills crond, the second adds the new cron job to the root crontab file, ad the third restarts crond:
/bin/kill $(cat /var/run/crond.pid)
/bin/echo '5 0 * * * /full/path/to/script arguments/with/full/path > /full/path/to/logfile 2>&1' >> /var/spool/cron/crontabs/root
/bin/busybox crond - Save and exit the editor (Press the "Esc" key then ":wq" then press "Return" in vi)
- Run the command "auto-backup.sh" so that the change to /etc/rc.local survives a reboot.
Every time you change the cron job, remember to update /etc/rc.local as well and run the "auto-backup.sh" command to backup the new /etc/rc.local file.
Mittwoch, 24. November 2010
Robocopy
Dienstag, 26. Oktober 2010
Install Oracle 11g on Ubuntu
I recommend that you install Oracle 11g on Oracle Enterprise Linux in Virtualbox on Ubuntu.
See this post http://oracleabc.com/b/?p=739 for more details.
The following or later versions of the operating system are required for Oracle Database 11g Release 2 (11.2):
Asianux 2 Update 7
Asianux 3
Oracle Enterprise Linux 4 Update 7
Oracle Enterprise Linux 5 Update 2
Red Hat Enterprise Linux 4 Update 7
Red Hat Enterprise Linux 5 Update 2
SUSE Linux Enterprise Server 10 SP2
SUSE Linux Enterprise Server 11
1. Install JRE or JDK 1.6
2. Install the required packages (please follow the Oracle installation guide)
# apt-get install gcc
Do the same for other packages
make binutils lesstif2 rpm libmotif3 libaio gawk alien ksh
3.create the directories
# mkdir -p /u01/app/oracle
4. Create user and groups
Add the user and change groups to make the installer more comfortable.
# groupadd oinstall
# groupadd dba
# groupadd nobody
# useradd -g oinstall -G dba -p password -d /home/oracle -s /bin/bash oracle
# usermod -g nobody nobody
The usermod command is needed since because when running, the installer looks for a user called nobody which is part of a group named nobody (in Ubuntu, the user nobody it’s assigned to nogroup by default).
5. Make some symlinks.
Apparently, the installer uses absolute paths, so it must find the binaries in the right places.
# ln -s /usr/bin/awk /bin/awk
# ln -s /usr/bin/rpm /bin/rpm
# ln -s /usr/bin/basename /bin/basename
6. Set shared memory parameters
There is a file called /etc/sysctl.conf and it should have these lines on it:
fs.file-max = 65535
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 1048576
net.core.rmem_max = 1048576
net.core.wmem_default = 262144
net.core.wmem_max = 262144
7. Reload the config file:
# sysctl -p
8.Modify limits.conf
Add these lines to /etc/security/limits.conf, letting the oracle user use more resources than the defaults allowed.
oracle soft nproc 2047
oracle hard nproc 16383
oracle soft nofile 1023
oracle hard nofile 65535
Make sure the limits.conf is being interpreted as the oracle user logs in by adding these lines to /etc/pam.d/login. You will want to make sure that is actually happening, since the defaults are way lower and you may get all sorts of problems.
session required /lib/security/pam_limits.so
session required pam_limits.so
9. Unpack and prepare the installation.
# cd /path/to/zipfile
# unzip linux_11gR1b5_database.zip
# chown -R oracle:oinstall database
# chown -R oracle:oinstall /u01/app/oracle
10.Turn on the display
# sudo -i
xhost +
# su – oracle
# DISPLAY=:0.0; export DISPLAY
11. Start the installer as the oracle user
# su – oracle
$ cd /path_to_extracted_files
$ ./runInstaller
12. run scripts as root
When the installation is complete, it will ask you to run some commands as root.
$ sudo -s
Password:
# /u01/app/oracle/oraInventory/orainstRoot.sh
Changing permissions of /u01/app/oracle/oraInventory to 770.
Changing groupname of /u01/app/oracle/oraInventory to oinstall.
The execution of the script is complete
# /u01/app/oracle/product/11.1.0/db_1/root.sh
Running Oracle 11g root.sh script…
The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /u01/app/oracle/product/11.1.0/db_1
After these scripts finish their execution (the errors seem to be ignorable), hit the OK button and you’ll have a window that (probably) will look like this one:
By default, the SGA is about 750MB. You can follow this page to reduce the memory target if you are installing Oracle 11g on your laptop or a VM.
Montag, 4. Oktober 2010
SQL Script um die Log-Datei auf dem SQL-Server zu verkleinern
1. BACKUP LOG TestDB TO DISK='C:\TestDB1.bak'
2. USE [Database]
GO
DBCC SHRINKDATABASE('Database', 10, TRUNCATEONLY)
3. Nachdem sollte die Logdatei kleiner sein.
Windows Server 2008 / R2 Zeitsynchronisierung
Auf dem PDC-Emulator muss folgender befehl abgesetzt werden, damit von Extern die Zeit abgefragt werden kann.
Dazu natürlich an der Firewall UDP-Port 123 freischalten.
w32tm /config /manualpeerlist:"ptbtime1.ptb.de ptbtime2.ptb.de ptbtime3.ptb.de" /syncfromflags:manual /reliable:yes /update
Donnerstag, 30. September 2010
Mittwoch, 15. September 2010
Esxcfg-vswif
Syntax: esxcfg-vswif
Options:
-a | Add vswif, requires IP parameters. Automatically enables interface. | ||
-d | Delete vswif. | ||
-l | List configured vswifs. | ||
-e | Enable this vswif interface. | ||
-s | Disable this vswif interface. | ||
-p | Set the portgroup name of the vswif. | ||
-i | The IP address for this vswif or specify DHCP to use DHCP for this address. | ||
-n | The IP netmask for this vswif. | ||
-b | The IP broadcast address for this vswif. (not required if netmask and ip are set) | ||
-c | Check to see if a virtual NIC exists. Program outputs a 1 if the given vswif exists, 0 otherwise. | ||
-D | Disable all vswif interfaces. (WARNING: This may result in a loss of network connectivity to the Service Console) | ||
-E | Enable all vswif interfaces and bring them up. | ||
-r | Restore all vswifs from the configuration file. (Internal use only) | ||
-h | Displays command help. |
Note: You can set the Service Console default gateway by editing the /etc/sysconfig/network file or through the VI Client under Configuration, DNS & Routing.
esxcfg-vswif examples:
Change your Service Console (vswif0) IP and Subnet Mask:
esxcfg-vswif -i 172.20.20.5 -n 255.255.255.0 vswif0
Add a Service Console (vswif0):
esxcfg-vswif -a vswif0 -p "Service Console" -i 172.20.20.40 -n 255.255.255.0
ESX Commands
ESX: esxcfg-vswitch and special vlan switch
If you need to create 5 or more of Virtual Port groups on a vSwtich and you don’t want to use the VI client than logon on the service console and run the commands below.
For creating a new Virtual Port Group use:
Assigning a special VLAN to this a Virtual Port Group:
With these two simple commands I was able to push my sh script and create same “Networking” configuration on dozen of my ESX servers.
[root@ESX-02 root]# esxcfg-vswitch -A VLAN283 vSwitch0
[root@ESX-02 root]# esxcfg-vswitch -A VLAN284 vSwitch0
[root@ESX-02 root]# esxcfg-vswitch -A VLAN285 vSwitch0
[root@ESX-02 root]# esxcfg-vswitch -A VLAN299 vSwitch0
[root@ESX-02 root]# esxcfg-vswitch -A VLAN220 vSwitch0
[root@ESX-02 root]# esxcfg-vswitch -v 282 -p VLAN282 vSwitch0
[root@ESX-02 root]# esxcfg-vswitch -v 283 -p VLAN283 vSwitch0
[root@ESX-02 root]# esxcfg-vswitch -v 284 -p VLAN284 vSwitch0
[root@ESX-02 root]# esxcfg-vswitch -v 285 -p VLAN285 vSwitch0
[root@ESX-02 root]# esxcfg-vswitch -v 299 -p VLAN299 vSwitch0
[root@ESX-02 root]# esxcfg-vswitch -v 220 -p VLAN220 vSwitch0
esxcfg-vswitch [options] [vswitch[:ports]]
-a|–add Add a new virtual switch.
-d|–delete Delete the virtual switch.
-l|–list List all the virtual switches.
-L|–link=pnic Set pnic as an uplink for the vswitch.
-U|–unlink=pnic Remove pnic from the uplinks for the vswitch.
-M|–add-pg-uplink Add an uplink to the list of uplinks for a portgroup
-N|–del-pg-uplink Delete an uplink from the list of uplinks for a portgroup
-p|–pg=portgroup Specify a portgroup for operation
Use ALL to set VLAN IDs on all portgroups
-v|–vlan=id Set vlan id for portgroup specified by -p
0 would disable the vlan
-c|–check Check to see if a virtual switch exists.
Program outputs a 1 if it exists, 0 otherwise.
-A|–add-pg=name Add a new portgroup to the virtual switch.
-D|–del-pg=name Delete the portgroup from the virtual switch.
-C|–check-pg=name Check to see if a portgroup exists. Program
outputs a 1 if it exists, 0 otherwise.
-B|–set-cdp Set the CDP status for a given virtual switch.
To set pass one of “down”, “listen”, “advertise”, “both”.
-b|–get-cdp Print the current CDP setting for this switch.
-m|–mtu=MTU Set MTU for the vswitch.
-r|–restore Restore all virtual switches from the configuration file
(FOR INTERNAL USE ONLY).
-h|–help Show this message.
Dienstag, 14. September 2010
Super Antwort (Helpdesk)
Anfrage einer Anwenderin:
Wenn ich einen Film auf meine Diskette speichern möchte, kommt die Meldung, dass auf der Diskette nicht genügend Speicherplatz vorhanden ist. Dann versuche ich es mit Verknüpfung speichern und dann ist Platz genug und der Film ist auf der Diskette. Das Problem ist aber, wenn ich diesen Film auf der Diskette auf einem anderen PC anschauen möchte. Da kommt die Meldung: nicht gefunden. Aber auf meinem PC funktioniert es.
Was kann es sein?
Antwort IT-Hotline:
Sehr geehrte Anwenderin, in Ihre Handtasche passt Ihr Pelzmantel einfach nicht rein. Ein Zettel mit dem Vermerk, dass Ihr Pelzmantel im Schrank hängt, passt in Ihre Handtasche rein. Also solange Sie diesen Zettel daheim lesen, finden Sie Ihren Pelzmantel im Schrank. Schwieriger wird es, wenn Sie Ihre Freundin besuchen und dort Ihren Zettel lesen und erfahren, dass Ihr Pelzmantel im Schrank hängt. In dem Schrank von Ihrer Freundin können Sie suchen, so lange Sie wollen, Ihren Pelzmantel finden Sie dort bestimmt nicht.
Noch eine Hilfe:
Handtasche = Diskette
Pelzmantel = Film
Zettel = Verknüpfung
Schrank = PC
Und:
Motten im Schrank = PC Virus
Nachbar im Schrank = Hacker
Montag, 13. September 2010
VSS etc. Vmware Cloning hatte nicht geklappt!
VSS für Dateien auf dem Server aktivieren
Die Aktivierung der Schattenkopien für Dateien erfolgt je Volume auf dem Windows 2003 Server. Unter den Eigenschaften der logischen Festplatte müssen Sie die Schattenkopien erst aktivieren.
In den Eigenschaften können Sie auch festlegen, wie viel Platz auf der Festplatte für die alten Instanzen vorgehalten werden soll und ob Windows auch automatisch zu bestimmten Zeiten und Intervallen eine Schattenkopie anlegen soll.
VSS für Dateien auf dem Client nutzen
Der Zugriff auf die "vorherigen Versionen" erfolgt sichtbar über ein verbundenes Netzwerklaufwerk. Hierbei können Sie die "vorherigen Versionen" sich anzeigen lassen und die älteren Dateien bei Bedarf auf einen neuen Ort speichern. Dieser Vorgang Entspricht einfach dem Kopieren von einem Laufwerk auf das andere, wobei die Quelle einfach der nur lesende Zugriff auf die Schattenkopie darstellt.
Alternativ kann auch eine Schattenkopie "Wiederhergestellt" werden. Dies ersetzt das bestehende "Live-System" durch die Schattenkopie. Dabei werden alle Änderungen seit dieser Schattenkopie vernichtet! Dies ist für den normalen Dateiserver nicht sinnvoll, aber es gibt auch hierfür Einsatzbereiche.
Damit diese Optionen verfügbar sind, müssen Sie auf Windows 98, SE, 2000 erst den Shadow Copy Client installieren, welchen Sie downloaden können. Windows NT4 oder Windows ME ist nicht unterstützt.
- WebClient Download
http://www.Microsoft.com/windowsserver2003/downloads/shadowcopyclient.mspx - Windows 2003 Server CD
%windir%\system32\clients\twclient\x86\twcli32.msi
VSS für Dateien mit Shadow Explorer
Die Schattenkopien können natürlich über offizielle APIs angesprochen werden. So gibt es einige Tools, die Schattenkopien nutzen. Eines davon ist der "Shadow Explorer" (http://www.shadowexplorer.com) , welcher auf der lokalen Maschine auch mit Vista Starter und Home einen Zugriff auf die Schattenkopien erlaubt, die das Betriebssystem, immer mal wieder anlegt.
So können Sie einfach mal in die "vorherigen Versionen" schauen und einzelne Dateien wieder zurückholen.
VSS und Versionen
Die Schattenkopien erlauben Ihnen daher einfach ohne zusätzliche Kosten auf frühere Versionen einer Datei zugreifen. Allerdings sollte Sie genau den Begriff "Version" verstehen. Die Versionen der Schattenkopien sind nach der Zeit und nicht nach Änderungen erfolgt. Dies bedeutet, dass mehrere Änderungen einer Datei nicht unbedingt auch wieder über die Schattenkopien wieder herstellbar sind. Dies ist nur der Fall, wenn nach jeder Änderung zufällig auch eine Schattenkopie erfolgt ist. Eine "Versionierung" von Dateien ist mit Schattenkopien daher nicht möglich. Hierzu sind andere Methoden (z.B. Sharepoint Team Services) besser geeignet.
VSS und Backup und Undelete
Die Schattenkopie ist aber nicht nur eine Möglichkeit eine ältere Version schnell wieder zu erhalten, sondern sie ersparen sich dadurch auch sicher den ein oder anderen Einsatz einer Wiederherstellung vom Bandlaufwerk. Allerdings nur, wenn Sie ihre Schattenkopien "sinnvoll" planen. Hierbei sind zwei Zeitpläne interessant:
- Mehrfach am Tag
Normalerweise sichern Sie in der Nacht ihre Server. Dies bedeutet, dass eine Datei, die unter Tage verändert oder gelöscht wird, nur mit einem Stand des letzten Backups wieder hergestellt werden kann. Hier können Schattenkopien einfache Zwischenversionen sicherstellen. - Mehrere Tage
Interessant kann es aber auch sein, über mehrere Tage Schattenkopien aufzubewahren. Festplattenplatz ist relativ "günstig" im Vergleich zu Bandlaufzeit und der Arbeitszeit, ältere Dateien wieder zurück zu holen.
Insgesamt kann Windows bis zu 512 Snapshots pro Volume vorhalten. Allerdings können für die Funktion "Vorherige Version wiederherstellen" nur 64 Snapshots verwendet werden.
Aber verwechseln Sie eine Schattenkopie nicht mit einem Backup. Sie müssen trotzdem ihren Server regelmäßig sichern, denn Schattenkopien erlauben nur den Zugriff auf ältere Versionen der Informationen, die aber auf der gleichen Festplatten abgelegt werden. Bei einem Ausfall der Festplatte sind auch alle Schattenkopien verloren
Platzbedarf
Bleibt noch die Frage, wie viel Platz diese Schattenkopien benötigen. Anhand der Funktionsweise ist relativ einfach zu erkennen, dass die erste Schattenkopie erst einmal 100 Megabyte belegt. Und für die drei Aktionen auf einem Dateisystem gilt:
- Datei gelöscht
Der betreffende Block mit den Informationen wird erst mal nicht verändert und daher auch nicht kopiert. Allerdings wird der Block in dem der Verzeichniseintrag geändert wird, eventuell als Kopie in den reservierten Platz gesichert. - Datei geändert.
Alle Informationen, die überschrieben würden, müssen auf einem neuen Platz gespeichert werden. Diese "COPY"-Aktion benötigt natürlich etwas Zeit. - Datei wird neu angelegt
Ein neuer Eintrag im Inhaltsverzeichnis verweist auf die früher freien Blöcke mit dem Inhalt. Eine eventuelle Änderung im Inhaltsverzeichnis kann eine COPY-Aktion des Blocks mit dieser Information verursachen.
Die Fragen nach dem Platzbedarf einer Schattenkopie ist daher nicht richtig gestellt. Genauer müssten Sie den Platzbedarf der Änderungen nach der Schattenkopie ermitteln. Alle Änderungen von Blöcken am Live-System müssen als Kopie im reservierten Platz gesichert werden.
Gefährlich ist daher nicht die Schattenkopie selbst, sondern die verzögerte Freigabe der Datenbereiche. Aus diesem Grund können Sie bei der Schattenkopie auch eine Obergrenze einstellen, wie viel Platz durch alte Daten maximal belegt werden dürfen. Wird diese Grenze erreicht, wird die älteste Schattenkopie entfernt. Windows 2003 löscht quasi die Kopie des früheren Inhaltsverzeichnisses und gibt die Blöcke frei, die von keiner anderen Schattenkopie oder dem Live-System referenziert werden.
VSS, NTBACKUP und offene Dateien.
Ein großes Problem bei Sicherungen sind offene Dateien. Durch die Schattenkopien wird diese Problem umgangen, wenn die Sicherungssoftware nicht das produktive Dateisystem, sondern die Schattenkopie sichert. Genau das macht NTBACKUP von Windows 2003. Sobald Sie eine Sicherung mit NTBACKUP starten, wird eine Schattenkopie angelegt und diese gesichert. Allerdings bedeutet diese Sicherung nur bedingt einen Erfolg für bestimmte Daten. Die Schattenkopien versuchen einen Zeitpunkt zu finden, an dem keine offenen Transaktionen ausstehen. Dies erspart aber nicht die korrekte Sicherung von Datenbank wie Exchange und SQL-Server.
Einen weiteren Nebeneffekt der Schattenkopien ist eine "zeitgenaue" Sicherung. Bislang dauert eine Bandsicherung in der Regel mehrere Stunden. Unschön hierbei ist, dass einige Dateien eben früher gesichert werden und andere später. Nicht alle Dateien sind damit vom "gleichen Zeitpunkt". Wenn Sie z.B. um 22:00 Uhr eine Sicherung starten und diese um 02:00 Uhr abgeschlossen ist, dann können auch Daten während der Laufzeit geändert werden. Insofern können Sie auch nie sagen, Sie holen eine Datei von der 22:00Uhr-Sicherung zurück, sondern eine Ungenauigkeit bleibt.
VSS und SAN
Nun stellt sich die Frage, ob das alle Einsatzbereiche der Schattenkopien sind. Und gerade im Enterprise Umfeld kommt den Schattenkopien eine weitere Funktion hinzu. Hierbei werden häufig die Daten auf einem zentralen Festplattenspeicher (Storage Array Network, SAN) abgelegt von von den Servern über Fiberchannel angesprochen. Diese Massenspeicher erlauben auch im laufenden Betrieb die Kopie einer logischen Festplatte. (EMC nennt dies Business Continuous Volumes, BCV. IBM bezeichnet dies als FlashCopy etc.) Das Problem dieser Kopien ist, dass die Speichereinheit oft nicht genau ermitteln kann, ob alle Schreibbefehle schon erfolgt sind oder noch "unterwegs" in einem Cache stecken.
Durch die Schattenkopien kann das Betriebssystem quasi eine Kopie des Dateisystems zu einem bestimmten Zeitpunkt einfrieren. Die Inhalte dieser Daten werden danach nicht mehr geändert. Bei einer "Kopie" der Festplatte ist es nicht mehr so wichtig, ob das Livesystem wirklich konsistent ist, denn auf der Kopie wird einfach die letzte Schattenkopie "wiederhergestellt", die kurz vor dem Spiegeln ausgeführt wurde.
Hinzu kommt eine Funktionalität "Shadow Copy Transport" mit der eine Schattenkopie auch komplett auf ein anderes Volume kopiert werden kann. Bei geeigneter Unterstützung durch die SAN-Herstellern (EMC, HP, etc.) kann auch diese Arbeit vom Server auf das Speichersubsystem verlagert werden.
VSS und CHKDSK
Da eine Schattenkopie quasi eine "eigene logische Datenstruktur" darstellt, können Sie unter Windows 2003 auch mit VRFYDSK.EXE eine Schattenkopie mit "Checkdisk" bearbeiten. Dabei wird eine Schattenkopie angelegt und diese mit CHKDISK überprüft. Zwar können Fehler nicht repariert werden, aber schon die echte Kontrolle der Struktur im laufenden Betrieb kann als Regeltätigkeit die Verfügbarkeit verbessern, da Sie Fehler feststellen können ohne das Volume "offline" nehmen zu müssen.
VSS und Exchange
Exchange 2003 bringt ebenfalls eine Unterstützung für die Schattenkopien mit. Dazu bindet sich Exchange 2003 in das VSS System ein, und kann über diesen Weg angewiesen werden, die Schreibzugriffe während der Anfertigung einer Schattenkopie einzustellen und über den Weg eine konsistente Kopie der Datenbank zu ermöglichen. Denken Sie aber immer daran, dass dabei keine "echte" Kopie angelegt wird, sondern nur der aktuelle Stand des Dateisystems eingefroren wird und neue Änderungen nicht die bestehenden Blöcke verändern. Die Datenbank ist aber in diesem Fall "trotzdem" inkonsistent. Sie entspricht quasi einem System, welches im Betrieb "kopiert" wurde. Die Datenbank ist inkonsistent (Dirty Shutdown) und kann auch nur mit den Protokolldateien wieder konsistent gebracht werden.
An Exchange-aware Volume Shadow Copy service backup must complete in less than 20 seconds. This is because Exchange suspends changes to the database files during the backup. If the snapshot or clone does not complete within 20 seconds, the backup fails. Thus, a hardware provider is required because the backup must complete so quickly.
Quelle:TechNet: 822896 Exchange Server 2003 data backup and Volume Shadow Copy services
Die Software, welche die Schattenkopie anfordert, muss zuerst die Liste der "Provider" erfragen und dann nicht nur das Dateisystem, sondern auch Exchange über den Start eine Schattenkopie informieren. Exchange friert dann den Store ein und wartet bis die Sicherung wieder eine Freigabe erteilt. Nach der Freigabe sollte die Sicherungsanwendung auch ein "Backup erfolgreich" melden. Erst dann erlaubt Exchange, dass der Store beendet werden kann und schneidet zusätzlich die Protokolldateien ab.
Insofern ist die Anfertigung einer Schattenkopie vergleichbar zu einem Online Backup mit Sicherung der Datenbank und Transaktionsprotokollen. Allerdings muss nach der Schattenkopie der "Schatten" natürlich noch wirklich auf ein Band oder anderweitig gesichert werden.
Bei einer Wiederherstellung werden übrigens die Informationsspeicher beendet und nach der Einspielung der alten Daten wieder gestartet. Eine Mischung von VSS-Sicherungen mit bisherigen Online-Sicherungen ist nicht möglich.
Die Funktion von Exchange finden Sie auch im Eventlog wieder
Mittwoch, 8. September 2010
Server 2003 R2 als NFS Server
Installation
Für die Installation gehen wir wie folgt vor:
Systemsteuerung > Software > Windows Komponenten hinzufüge, entfernen > Other Network File and Printe Service > Microsoft Service for NFS > Server for NFS << style="background-color: rgb(255, 255, 0);">NFS Authentication auswähle, also alles.
Konfiguration
- man besorgt sich 2 Dateien passwd und group von dem ESX Server
jetz muss man die User synchronisieren
Dienstag, 7. September 2010
Was ist Robocopy?
Robocopy ist ein mächtiges Kommandozeilen-Kopier-Programm. Es dient dazu, inkrementelle Backups von einem Ort an einem anderen zu erstellen. Die Handhabung mag anhand der unzähligen, teils kryptisch anmutenden Parameter etwas umständlich erscheinen. Ein einfaches Backup Ihrer wichtigsten Daten lässt sich trotzdem in sehr kurzer Zeit bewerkstelligen, da es reicht, einen Bruchteil dieser Parameter zu kennen. Über den Taskplaner bzw. die Aufgabenplanung können die Synchronisationsvorgänge sogar automatisiert werden.
Wie bereits gesagt, arbeitet Robocopy inkrementell. Es werden also nur neue oder geänderte Dateien berücksichtigt, was den Kopiervorgang um ein Vielfaches beschleunigen kann. Als Grundlage für diese Entscheidung dienen Robocopy zum einen der Zeitpunkt der letzten Änderung der Datei und zum anderen die Größe der Datei.
Wo bekomme ich Robocopy?
Robocopy ist in den Windows Server 2003 Resource Kit Tools enthalten. Unter Windows Vista müssen Sie dieses Paket nicht installieren, da Robocopy bereits zum Lieferumfang des Betriebssystems gehört.
Vorteile von Robocopy gegenüber copy und xcopy
Viele Anwender werden sich nun fragen: Wozu brauche ich Robocopy? Ich habe doch copy und xcopy. Diese zwei Tools sind zwar für viele alltägliche Kopiervorgänge die richtigen, wenn es jedoch darum geht, ein inkrementelles Backup anzulegen, versagen beide. Copy kann nur Inhalte der obersten Ebene kopieren und berücksichtigt Unterordner überhaupt nicht. Xcopy kann mit dem Parameter /s zwar auch Unterordner und deren Dateien berücksichtigen, jedoch keine inkrementelle Kopie anfertigen. So dauert ein Kopiervorgang, der mehrere GB an Daten beinhaltet, immer sehr lange, da grundsätzlich alle Dateien erneut kopiert werden. Außerdem werden keinerlei Dateien im Archivordner gelöscht, auch wenn sie im Quellordner nicht mehr vorhanden sind. Hier kommt Robocopy ins Spiel. Robocopy berücksichtigt neue, geänderte und auch gelöschte Dateien. Dabei ist jedoch Vorsicht geboten. Wenn Sie im Quellordner versehentlich eine Datei gelöscht haben und danach Ihr Backup aktualisieren, wird diese Datei auch in Ihrem Backup nicht mehr vorhanden sein, da Robocopy nicht mehr vorhandene Dateien der Quelle ohne Nachfrage auch im Ziel löscht.
Wie lege ich ein Backup an?
Prinzipiell benötigen Sie zum Anlegen eines Backups nur einen einzigen Parameter von Robocopy. Dieser Parameter lautet /MIR (Mirror). /MIR legt eine Spiegelung der Struktur der Quelle in einem von Ihnen vorgegebenen Archiv-Ordner an. /MIR besteht eigentlich aus zwei Parametern von Robocopy. /E und /PURGE. /E kopiert alle vollen und auch leeren Unterverzeichnisse, /PURGE löscht alle Dateien im Zielordner, die in der Quelle nicht mehr vorhanden sind. Die Struktur des Befehls muss aussehen wie folgt:
robocopy
Falls Ihre Pfade Leerzeichen enthalten, muss der Pfad in Anführungszeichen gesetzt werden. Konkretes Beispiel. Sie wollen den Inhalt des Ordners C:\Meine Musik in den Ordner D:\Backup\Meine Musik spiegeln. Dazu muss der Befehl lauten:
robocopy „C:\Meine Musik“ „D:\Backup\Meine Musik“ /MIR
Dieser Befehl kann sowohl zum erstmaligen Anlegen eines Backups verwendet werden als auch für die nachfolgenden Aktualisierungen. Standardmäßig ergänzt Robocopy diese Eingabe um weitere Parameter. So wird aus unserer Befehlszeile von Robocopy folgender Befehl generiert:
robocopy „C:\Meine Musik“ „D:\Backup\Meine Musik“ /S /E /COPY:DAT /PURGE /MIR /R:1000000 /W:30
Eine Erklärung der einzelnen Parameter erhalten Sie im Verlauf des Artikels.
Einige Parameter
Generell können Sie die Parameter von Robocopy abfragen, indem Sie ein Kommandozeilenfenster öffnen (Start -> Ausführen -> cmd) und dort folgende Zeile tippen: robocopy /?
Der Befehl /COPY:copyflag[s]
Wie in unserer Beispielzeile zu sehen, verwendet Robocopy standardmäßig den Befehl /COPY:DAT. Die Parameter von /COPY im Einzelnen lauten:
- D=Data (Datei-Inhalt)
- A=Attributes (Attribute wie etwa versteckt, schreibgeschützt etc.)
- T=Timestamps (Zeitstempel, also Erstellungsdatum, Änderungsdatum und Datum des letzten Zugriffs)
Weitere Parameter von Copy:
- S=Security=NTFS ACLs. Hier werden die in den NTFS ACLs untergebrachten Zugriffsrechte mit kopiert. Da den heutigen Dateisystemen meist NTFS zugrunde liegt, kann das durchaus sinnvoll sein. Der Parameter /SEC hat die gleiche Funktion.
- O=Owner info. Zusätzlich zu den Benutzerrechten kann Robocopy auch den Besitzer kopieren. Der Parameter /O erledigt das.
- U=aUditing info. Dieser Parameter bewirkt, dass auch die Überwachungsoptionen mit kopiert werden.
Statt der Eingabe von COPY:DATSOU kann auch /COPYALL verwendet werden.
Es ist auch möglich, keinerlei Dateiinformationen zu kopieren. Gerade bei der ausschließlichen Verwendung von /PURGE ist das sinnvoll. Der dafür zuständige Parameter lautet /NOCOPY.
Für den Heimanwender wird die von Robocopy ergänzte Default-Einstellung COPY:DAT wohl ausreichen, für Systemadministratoren können sich die weiteren Parameter jedoch als durchaus sinnvoll erweisen.
Die Parameter /R:n und /W:n
Wie an der obigen Beispielzeile zu sehen ist, hat Robocopy auch hier bereits Default-Werte eingetragen. /R:n gibt die Anzahl der Wiederholungen an, die Robocopy unternimmt, falls ein Kopiervorgang nicht erfolgreich war. /W:n gibt die Wartezeit in Sekunden an, die pausiert wird, wenn ein Kopiervorgang nicht erfolgreich war. Mit der Default-Einstellung (/R:1000000 /W:30) wird Robocopy also bis zu 347 Tage lang einen erfolglosen Kopiervorgang fortsetzen.
Die Filterfunktionen /XF /XD
Bisher werden in unserem Beispiel-Backup alle Dateien und Unterordner kopiert. Jedoch kann es auch schon mal nötig sein, Verzeichnisse oder Dateien vom Backup auszuschließen. Auch hier gibt es entsprechende Parameter. /XF exkludiert Dateien oder Dateitypen, die von Ihnen angegeben werden können. Auch Wildcards werden hier unterstützt. Nehmen wir für unser Beispiel an, Sie möchten keine Playlists in Ihr Backup aufnehmen. Die Playlisten haben das Format m3u. Unsere Befehlszeile müsste also lauten wie folgt:
robocopy „C:\Meine Musik“ „D:\Backup\Meine Musik“ /MIR /XF *.m3u
Um komplette Ordner aus dem Backup auszuschließen, wird der Parameter /XD benötigt. Für unser Beispiel existiert im Ordner C:\Meine Musik der Unterordner mit dem Namen Dokumente. Die Befehlszeile, um den Ordner Dokumente nicht mit einzuschließen, müsste lauten:
robocopy „C:\Meine Musik“ „D:\Backup\Meine Musik“ /MIR /XD „C:\Meine Musik\Dokumente“
Eine Kombination der beiden Parameter ist natürlich auch möglich, damit weder die Playlisten noch der Ordner Dokumente kopiert werden.
robocopy „C:\Meine Musik“ „D:\Backup\Meine Musik“ /MIR /XF *.m3u /XD „C:\Meine Musik\Dokumente“
Bei den Dateifiltern gibt es noch eine Vielzahl anderer Parameter, um die Menge der zu kopierenden Dateien zu minimieren. Diese Parameter sind jedoch meist nicht nötig und werden daher an dieser Stelle vernachlässigt.
Die Logfunktion /LOG
Gerade für automatisierte Backups kann sich eine Logfunktion als nützlich erweisen, da dort nachgesehen werden kann, ob es zu Fehlern kam während des Backups oder was überhaupt gemacht wurde. Natürlich unterstützt Robocopy auch das Anlegen von Logdateien. Mit dem Parameter /LOG:
robocopy „C:\Meine Musik“ „D:\Backup\Meine Musik“ /MIR /XF *.m3u /XD „C:\Meine Musik\Dokumente“ /LOG+:C:\Logs\musik.log
Die normale Logfunktion von Robocopy schreibt allerdings jegliche Rückmeldung in die Logdatei, was diese sehr unübersichtlich gestaltet. Natürlich gibt es auch hier Parameter, die Abhilfe schaffen. Wenn noch ein /NP ergänzt wird, werden keine Fortschrittsinformationen in der Logdatei protokolliert. Mit /NFL werden Dateinamen nicht protokolliert, mit /NDL werden auch keine Verzeichnisse in die Logdatei eingetragen. Mit dem Parameter /NJH wird kein Auftragsheader in der Protokolldatei erzeugt, mit /NJS auch keine Zusammenfassung. Probieren Sie mit diesen Parametern am besten ein wenig aus.
Mit dem Parameter /TEE werden die Informationen sowohl in die Kommandozeile als auch in die Logdatei geschrieben. Mit /V können auch die Dateien protokolliert werden, die auf beiden Seiten identisch waren und daher übersprungen wurden.
Die Probierfunktion /L
Für alle, die erst einmal sehen möchten, was genau passieren würde, wenn Sie Robocopy mit den von Ihnen angegebenen Befehlen laufen lassen würden, bietet Robocopy eine Probierfunktion. Mit dem Parameter /L wird nur angezeigt, was Robocopy im Fall der Fälle tun würde. Ausgehend von unserem Beispiel müsste die Befehlszeile nun so aussehen:
robocopy „C:\Meine Musik“ „D:\Backup\Meine Musik“ /MIR /XF *.m3u /XD „C:\Meine Musik\Dokumente“ /LOG+:C:\Logs\musik.log /L
Natürlich können alle zuvor genannten Parameter auch kombiniert werden. Eine mögliche Befehlszeile könnte also auch so aussehen:
robocopy „C:\Meine Musik“ „D:\Backup\Meine Musik“ /MIR /XF *.m3u /XD „C:\Meine Musik\Dokumente“ /LOG+: C:\Logs\musik.log /NP /TEE /V /L
Die Monitor-Funktion /MON:n /MOT:n
Robocopy kann auch dauerhaft im Hintergrund werkeln. Dazu besitzt das Tool eine Monitor-Funktion, die mit zwei verschiedenen Parametern angesprochen werden kann. /MON:n bewirkt, dass Robocopy das Backup nach n Änderungen aktualisiert. Wenn Sie dort also eine 5 eintragen, wird Robocopy nach 5 Änderungen im Quellverzeichnis aktiv und aktualisiert Ihr Backup. /MOT:n lässt Robocopy nach n Minuten wieder aktiv werden. Wenn Sie /MON:n ohne Angabe von /MOT:n verwenden, setzt Robocopy als Zeitspanne eine Minute.
Sie können die Monitor-Funktion auch nur zu einer bestimmten Uhrzeit laufen lassen, dafür ist der Parameter /RH zuständig. Die Eingabe erfolgt im Format /RH:hhmm-hhmm. Um die Monitor-Funktion bspw. nur zwischen 18 und 20 Uhr laufen zu lassen, könnte eine Befehlszeile aussehen wie folgt:
robocopy „C:\Meine Musik“ „D:\Backup\Meine Musik“ /MIR /XF *.m3u /XD „C:\Meine Musik\Dokumente“ /LOG+: C:\Logs\musik.log /NP /TEE /V /MON:2 /RH:1800-2000
Ausgewählte Parameter im Überblick
/COPY:copyflag[s] | Standard-Einstellung: /COPY:DAT D: Datei-Inhalte S:NTFS ACLs A: Attribute O: Besitzer T: Zeitstempel U: Überwachungsinfo |
/SEC | äquivalent zu /COPY:DATS |
/COPYALL | kopiert alle Datei-Informationen – äquivalent zu COPY:DATSOU |
/NOCOPY | keinerlei Datei-Informationen werden kopiert |
/E | kopiert Unterverzeichnisse, auch die leeren |
/PURGE | löscht Dateien und Verzeichnisse im Ziel, die in der Quelle nicht mehr existieren |
/MIR | Spiegelung anlegen - Zusammenfassung von /E und /PURGE |
/MON:n | nach n Änderungen wird Robocopy automatisch wieder aktiv |
/MOT:n | nach n Minuten wird Robocopy automatisch wieder aktiv. |
/RH:hhmm-hhmm | Zeitraum, in dem Robocopy aktiv wird |
/XF | bestimmte Dateitypen von der Spiegelung ausschließen |
/XD | bestimmte Verzeichnisse von der Spiegelung ausschließen |
/R:n | Es werden n Versuche unternommen, den Vorgang erfolgreich abzuschließen (Standard: 1000000). |
/W:n | die Wartezeit nach einem erfolglosen Kopiervorgang (Standard 30) |
/L | den Probiermodus von Robocopy aktivieren |
/LOG: | bei jedem Syncvorgang eine neue Logdatei anlegen lassen |
/LOG+: | eine bestehende Logdatei fortführen |
/NP | keine Fortschrittsinformationen anzeigen |
/TEE | Informationen sowohl auf dem Bildschirm als auch in der Logdatei ausgeben |
Robocopy im Netzwerk
Robocopy kann natürlich auch im Netzwerk verwendet werden. Es unterstützt dabei auch UNC-Pfade. Ein großer Vorteil, da man einem Netzlaufwerk nicht erst einen Laufwerksbuchstaben zuweisen muss, damit Robocopy eingesetzt werden kann. Um jedoch im Netzwerk ein Backup anlegen zu können, muss sichergestellt sein, dass das Benutzerkonto, welches Robocopy ausführt, Zugriff auf die Freigabe hat, ohne sich anmelden zu müssen. Robocopy selbst bietet keine Option, Benutzerdaten mit zu übertragen. Es gibt verschiedene Möglichkeiten, dies zu gewährleisten:
- Auf dem freigebenden PC existiert ein identisches Benutzerkonto. Hier ist keine Eingabe von Benutzerdaten notwendig. Wenn die Rechner in derselben Domain stehen, gilt dies auch.
- Wenn kein identisches Konto existiert, ist es ab XP aufwärts die einfachste Lösung, sich einmalig manuell am freigebenden PC anzumelden und die Anmeldedaten speichern zu lassen. Im Grundsatz muss eine Befehlszeile zum Anlegen eines Backups auf einer Freigabe aussehen wie folgt:
robocopy
Das /Z, welches nur im Netzwerk funktioniert, kopiert die Dateien im „restartable mode“. Sollte eine Übertragung scheitern, aus welchem Grund auch immer, kann Robocopy die Datei bei der nächsten Ausführung fortsetzen, ohne nochmals die komplette Datei kopieren zu müssen./MIR /Z
Robocopy hat natürlich auch einen Parameter, um Bandbreite im Netzwerk zu sparen. Dieser lautet: /IPG:n. Nach jedem erfolgreich übertragenen Paket pausiert Robocopy hier für die in Millisekunden angegebene Zeit. - Eine Ausnahme bildet Windows 2000, da hier die Anmeldedaten nicht dauerhaft gespeichert werden können. Es gibt eine alternative Lösung über eine Batchdatei und die Verwendung von net use. Mittels net use müssen Sie sich zunächst am freigebenden PC anmelden, dann Robocopy ausführen und hinterher mit net use die Verbindung wieder trennen. Der Quelltext der Batchdatei müsste dabei aussehen wie folgt:
net use \\Servername\Freigabe
robocopy
net use \\Servername\Freigabe /del
Voraussetzung: Man darf auf die Freigabe zugreifen, ansonsten kann man den Schalter /USER benutzen.net use \\Servername\Freigabe /USER:
robocopy
net use \\Servername\Freigabe /del
Wer auch noch das Passwort übergeben möchte, kann das auch tun, muss dabei aber in Kauf nehmen, dass das Passwort im Klartext in der Batchdatei steht.net use \\Servername\Freigabe /USER:
robocopy
net use \\Servername\Freigabe /del
Praktische Beispiele
Nachfolgend möchte ich Ihnen ein paar konkrete Anwendungsbeispiele zeigen, wie ich sie selber benutze. Ich erstelle regelmäßig Kopien meiner wichtigsten Daten, unter anderem auch vom Thunderbird-, Firefox- und Opera-Profil. Zwar habe ich meine Profile schon auf andere Partitionen verschoben, dennoch habe ich gerne ein Backup, falls man durch Änderungen am Profil selbiges mal zerstört.
Backup des Thunderbird-Profils
Um das Profil von Thunderbird zu sichern, welches unter L:\Profiles\Thunderbird liegt, verwende ich folgende Befehlszeile:
robocopy "L:\Profiles\Thunderbird" %bckdrv%%bckdir%\Thunderbird_Profil /MIR /LOG+:backup.log /NP
Diese Befehlszeile bewirkt, dass das komplette Thunderbird-Profil nach J:\Backup\Thunderbird_Profil gespiegelt wird. Da diese Befehlszeile innerhalb einer Batchdatei steht und ich gerne mit variablen Pfadangaben arbeite, habe ich zu Beginn der Batch die Variablen %bckdrv% und %bckdir% deklariert.
set bckdrv=J:
set bckdir=Backup
Backup des Firefox-Profils
Mein Firefox-Profil liegt unter L:\Profiles\Firefox. Um dieses Profil zu sichern, verwende ich folgende Befehlszeile:
robocopy "L:\Profiles\Firefox\profile" %bckdrv%%bckdir%\Firefox\profile /MIR /LOG+:backup.log /NP /XD "L:\Profiles\Firefox\profile\cache" "L:\Profiles\Firefox\profile\Cache.Trash"
Im Einzelnen bedeutet obige Befehlszeile: Spiegele das Verzeichnis L:\Profiles\Firefox\profile nach J:\Backup\Firefox\profile. Überspringe dabei die Ordner "L:\Profiles\Firefox\profile\cache" und "L:\Profiles\Firefox\profile\Cache.Trash". Außerdem führe die Datei backup.log fort.
Backup des Opera-Profils
Das Opera-Profil befindet sich unter L:\Profiles\Opera. Die dazugehörige Befehlszeile muss also lauten:robocopy "L:\Profiles\Opera\profile" %bckdrv%%bckdir%\Opera\profile /MIR /LOG+:backup.log /XD "L:\Profiles\Opera\profile\cache4"
Wiederum lasse ich den Cache nicht kopieren, da dieser nicht wirklich für ein funktionierendes Profil vonnöten ist.
Eine kleine Beispieldatei
Hier können Sie eine kleine Batchdatei sehen, die die eben erwähnten Profile per Knopfdruck sichern kann. Diese Batchdatei habe ich in den Taskplaner eingebunden und eben aufgrund dieser Tatsache muss ich zunächst auf das Laufwerk und den Pfad wechseln, in dem dieses Script steht. In diesem Ordner wird auch die entsprechende Logdatei angelegt.
@echo off
set bckdrv=J:
set bckdir=Backup
set scriptdrv=L:
set scriptdir=Backupscripts
%scriptdrv%
cd %scriptdir%
REM Thunderbird
robocopy "L:\Profiles\Thunderbird" %bckdrv%%bckdir%\Thunderbird_Profil /MIR /LOG+:backup.log /NP
REM Firefox
robocopy "L:\Profiles\Firefox\profile" %bckdrv%%bckdir%\Firefox\profile /MIR /LOG+:backup.log /XD "L:\Profiles\Firefox\profile\cache" "L:\Profiles\Firefox\profile\Cache.Trash"
REM Opera
robocopy "L:\Profiles\Opera\profile" %bckdrv%%bckdir%\Opera\profile /MIR /LOG+:backup.log /XD "L:\Profiles\Opera\profile\cache4"
Automatisierung über den Taskplaner
Wenn Sie die Batchdatei in den Taskplaner einbinden, kann das Backup regelmäßig automatisiert aktualisiert werden. Beachten Sie bitte, dass Ihr Benutzerkonto unter Windows über ein Passwort verfügen muss, damit der Taskplaner verwendet werden kann.
Freigaben mitnehmen
So ist es notwendig die bestehenden Netbios Shares zu sichern, um diese auch in das neue System importieren zu können. Denn bei einer Neuinstallation gehen die Einstellungen der Shares, sowie die Berechtigungen der Freigaben, die standardmäßig in der Registry hinterlegt sind, verloren. Wichtig ist es daher die benötigten Registry-Strukturen vor der Neuinstallation zu sichern.
Wichtig:
Die Informationen die in der Registry hinterlget sind, beziehen sich lediglich auf die Freigabe und die Berechtigungen. Dort werden keine Dateien, Homes oder Profile abgelegt!
So geht’s (Export):
- Registry Editor öffnen (Regedit32.exe)
- Zum Subtree “HKEY_LOCAL_MACHINE” wechseln
- Dort mit der rechten Maustatse den Subtree “SYSTEM\CurrentControlSet\Services\LanmanServer\Shares” exportieren
- die Registry-File auf einem separaten Laufwerk sichern
Export der Shares:
Import der Shares:
Wenn die Dateien und Ordner verschoben sind bzw. das neue Betriebssystem läuft, können die Shares importiert werden. Einfach innerhalb vom Registry Editor unter Import die Registry-Datei auswählen. Fertig! Nun ist noch ein Neustart notwendig um die Registry zu aktualisieren.
Der beschriebene Weg funktioniert sowohl unter Windows Server 2003, als auch unter Windows Server 2008 und 2008 R2.
Dienstag, 17. August 2010
zwei ssh Jobs auf ESX definieren
# esxcfg-firewall -e sshClient
Sonntag, 15. August 2010
netcat, dd und ganz viel Spaß
Die Problemstellung
Da ist ein Server, der einen kritischen Dienst bedient; leider ist dieser Server restlos veraltet (sowohl aus Hard- als auch aus Software-Sicht), und ein Update des kritischen Dienstes nicht so ohne weiteres möglich. Sie möchten den Datenbestand am liebsten 1:1 auf eine andere Maschine ziehen und auf dieser, ganz in Ruhe, einige Testläufe starten, Dinge probieren und einen Workflow zur Lösung dieses Problems entwickeln. Allerdings ist auf dem laufenden Server viel zu wenig Platz, als daß Sie ein Image des Systems machen und anschließend auf die neue Maschine übertragen könnten.
Ein möglicher Lösungsansatz
Ein guter Einsatzzweck für virtuelle Maschinen. Das zugrundeliegende System ist hier ein MacOS 10.6.3 mit Parallels 5; natürlich läßt sich das jedoch auf nahezu jedes beliebige Hostsystem und nahezu jede beliebige Virtualisierungssoftware übertragen. Der erste Schritt besteht darin, eine Standardinstallation eines Betriebssystems Ihrer Wahl durchzuführen – im folgenden Ubuntu genannt. Diese Prozedur ist in keiner Form außergewöhnlich und wird deshalb an dieser Stelle auch nicht weiter erläutert. Dieser virtuellen Maschine wird eine zweite virtuelle Festplatte untergeschoben — deren Größe orientiert sich an der Größe Quellsystems, in meinem Fall 10GB. Übers Netz wird aus dem virtuellen Ubuntu heraus ein vollständiger Dump des laufenden Quellsystems auf die zweite virtuelle Platte heraus vorgenommen. Schlußendlich wird über einen grub-Eintrag sichergestellt, daß das virtuelle System Dual-Boot-fähig ist und wahlweise nun entweder das ursprünglich installierte (Ziel-)Ubuntu oder aber der virtuelle (Quell-)Server gestartet werden kann. In diesem virtuellen Server können nun die benötigten Testläufe initiiert werden, und wenn man etwas schrottet, ist das gar nicht schlimm – die virtuelle Maschine läßt sich leicht wiederherstellen.
1. Die zweite virtuelle Platte einrichten
Nachdem dem Sytsem in der Parallels-Konfiguration eine zweite virtuelle Platte definiert wurde (vgl. Screenshot) und das virtualisierte Ubuntu gestartet ist, muß diese zweite Platte eingerichtet werden; wurde sie nachträglich definiert, wird sie naturgemäß beim Booten des Systems natürlich nicht erkannt. Also ersteinmal schauen, ob er sie überhaupt hat:
$ dmesg | grep sd
[ 0.936360] sd 0:0:0:0: Attached scsi generic sg0 type 0
[ 0.936780] sd 1:0:1:0: Attached scsi generic sg1 type 0
[ 0.936837] sd 0:0:0:0: [sda] 20972448 512-byte logical blocks: (10.7 GB/10.0 GiB)
...
[ 0.936946] sd 1:0:1:0: [sdb] 20972448 512-byte logical blocks: (10.7 GB/10.0 GiB)
...
Sieht schwer danach aus; sda ist ja unsere erste Festplatte, also die, auf der das Ubuntu liegt; sdb ist noch jungfräulich und leer, da wird nun das Serversystem draufgezogen…
2. Das System portieren
a) Auf dem Zielsystem
Auf dem Zielrechner, also in der Ubuntu-VM, wird ein Port geöffnet, über den die Daten hereinmarschieren und direkt auf die Platte /dev/sdb geschrieben werden:
root@ziel$ netcat -l 443 | dd of=/dev/sdb
In diesem Fall läuft der Transfer über Port 443, da die restriktiven Firewall-Regeln einen Extra-Eintrag für einen anderen Port erfordern würden. Nun kann der Transfer gestartet werden.
b) Auf dem Quellsystem
Vom Quellsystem aus wollen wir den gesamten Inhalt der Platte (in diesem Falle heißt sie /dev/sda1) übertragen; dies initiieren wir mit folgendem Befehl:
root@quelle$ dd if=/dev/sda1 | netcat ziel 443
Nun werden die Daten übertragen.
c) Den Fortschritt beobachten
Während der Übertragung, die — je nach Netzaustattung und Datenmenge — durchaus eine ganze Weile dauern kann, lungern nun zwei offene Shells auf dem Desktop herum, doch eine Statusanzeige gibt keine von beiden. Es gibt jedoch eine Möglichkeit, nämlich dem dd-Prozeß auf dem Zielhost ein USR1 zu schicken:
root@ziel$ ps aux | grep dd
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
...
root 1563 0.0 0.0 3396 772 pts/0 S+ 15:38 0:00 dd of=/dev/sdb
...
root@ziel$ kill -USR1 1563
Das ergibt in der Shell des Zielsystems (in der der dd-Aufruf aktiv ist) eine Ausgabe in der Form:
2+1 records in
2+0 records out
1024 bytes (1.0kB) copied, 54.0942s, 24.2 kB/s
Entweder man entwirft sich einen Aufruf, der das automatisch alle paar Sekunden ausführt, oder man führt es manuell von Zeit zu Zeit aus — so sieht man jedenfalls, wieviele Daten bereits übertragen wurden. Die Übertragung ist beendet, wenn auch auf dem Quellrechner eine Ausgabe der Form »1196 bytes transferred in 0.000089 seconds (13431951 bytes/sec)« erscheint.
3. grub installieren
In meinem Fall war das mit einem simplen Aufruf erledigt:
root@zielrechner$ grub-install --force /dev/sdb
Hierdurch wurde meine grub-Konfig um folgende Zeilen erweitert:
## /boot/grub/grub.cfg
menuentry "Debian GNU/Linux, kernel 2.6.x (on /dev/sdb)" {
recordfail
insmod xfs
set root='(hd1,1)'
search --no-floppy --fs-uuid --set fb0a4e3a-0457-454d-8650-0bf853d17530
linux /boot/vmlinuz-2.6.x root=/dev/sdb root=/dev/hdd ro
Damit funktioniert das Booten noch nicht wirklich: schauen Sie nochmal auf den Parallels-Screenshot. Die zweite Platte wurde als »Location IDE 1:1« definiert, sprich: als zweites Gerät am zweiten Controller, also hdd (die erste Platte ist auf »Location IDE 0:0« definiert und somit das erste Gerät am ersten Controller, also hda). Es muß also das oben stehende root=/dev/sdb durch root=/dev/hdd ersetzt werden.
Und das ist auch schon alles — nun kann das portierte System virtuell gestartet werden
4. Vorsicht!
Vor dem ersten Start des portierten Systems sollten sie sicherstellen, daß beim Booten nichts getötet werden kann; prüfen Sie beispielsweise sorgfältig, daß es nicht zu IP- oder DNS-Konflikten kommen kann, wenn Sie den ursprünglichen Server und Ihre virtualisierte Version parallel ins Netz hängen! Sorgen Sie weiterhin dafür, daß Dienste, die alle User im Netz betreffen können — DHCP beispielsweise — nicht das gesamte Netzwerk verwirren oder gar lahmlegen! Überlegen Sie sorgfältig, um welche Dienste es sich in Ihrem Falle konkret handeln könnte, und handeln Sie mit Bedacht.
Im laufenden Ubuntu-System können Sie die zweite Platte leicht mounten:
root@ziel$ mount /dev/sdb /mnt
Wenn nötig, führen Sie noch ein chroot /mnt aus; durchforsten Sie nun das System vor dem ersten Booten auf Dinge, die den laufenden Betrieb stören könnten. Starten Sie das System nur dann, wenn Sie sich sicher sind, daß es funktionieren wird. Starten Sie es sonst ausschließlich ohne Netzwerkinterface.
Dienstag, 29. Juni 2010
Zeitzone neu setzen
Verändern der Zeitzone in Linux
Wenn die Zeitzone nicht stimmt, wird ntp zwar ordnungsgemäß arbeiten,
aber man wundert sich dass
die Uhrzeit nicht stimmt.
Mit diesem Befehl kann man die Zeitzone neu setzen
$ sudo dpkg-reconfigure tzdata
Mit diesem Befehl bekommt man die Zeitzone herau
$ cat /etc/timezone
Europe/Berlin
Mittwoch, 21. April 2010
Freitag, 12. März 2010
vmware: automatisches Backup
link
@echo off
set rechner1=test1
set ziel=D:\VMWare\Production
set quelle=D:\VMWare\_Template
cd "C:\Programme\VMware\VMware VmPerl Scripting API"
:check
if exist "%ziel%\%Rechner1%\Windows XP Professional.vmdk.lck" goto shutdownvm1
:shutdownvm1
call vmware-cmd "%ziel%\%Rechner1%\Windows XP Professional.vmx" stop trysoft
call vmware-cmd -s unregister "%ziel%\%rechner1%\Windows XP Professional.vmx"
goto check
:wait
:xcopy
:check2
if exist "%ziel%\%Rechner1%\Windows XP Professional.vmx" goto register1
:check3
:register1
call vmware-cmd -s register "%ziel%\%rechner1%\Windows XP Professional.vmx"
call vmware-cmd "%ziel%\%rechner1%\Windows XP Professional.vmx" start
goto check3
echo Alle VM`s laufen wieder!!
pause
Mittwoch, 10. März 2010
vmware: console per Link starten
Da das Plugin für Console des vmware Servers 2.0.* seit dem Firefox Update auf 3.6 nicht mehr funktionierte musste ich mir was anderes einfallen lassen.
Eine Verknüpfung auf dem Desktop für jede virtuelle Maschine, am Anfang sehr gewöhnungsbedürftig - aber man gewöhnt sich sehr schnell daran.
Eigenschaften der Verknüpfung
Ziel : "[Path zur
[Path zur vmware-vmrc.exe] : ..\Anwendungsdaten\Mozilla\Firefox\Profiles\lbnhiea7.default\extensions\VMwareVMRC@vmware.com\plugins\vmware-vmrc.exe