Datensicherung mit tar
Aus LUG Fulda
Artikel ist noch nicht fertiggestellt!
Einleitung
In den nächsten Tagen soll hier ein Artikel entstehen.... bitte um etwas Geduld.
- Nachtrag: Es braucht bei dem schönen Wetter noch etwas mehr Zeit als gedacht ;) --Holger Menz 14:12, 28. Jun 2006 (MEST)
Kleine Parameterkunde
Eine kurze Erklärung der verwendeten Parameter. Für eine detailierte Übersicht bitte die Man-Page hinzuziehen.
Aktionen
- -c --create
- neues Archiv erzeugen
- -d, --diff, --compare
- Dateien im Archiv und im Dateisystem vergleichen
Auswahl des Archiv-Formats
- -j, -bzip2
- Archiv mit bzip2(1) (de)komprimieren
- -z, --gzip, --ungzip
- Archiv mit gzip(1) (de)komprimieren
Datei-Eigenschaften
- -p --same-permissions
- Zugriffsrechte beim Auspacken erhalten
- --numeric-owner
- Zahlen für Benutzer bzw. Gruppen benutzen
- -X, --exclude-from=DATEI
- Dateien auslassen, auf die in DATEI angegebene Muster passen
Informationen
- -totals
- geschriebene Bytes beim Schreiben des Archivs zeigen
- -v, --verbose
- zu bearbeitende Dateien ausführlich listen
Definition von Ausnahmen (exclude)
Man kann die Ausnahmen entweder direkt einzeln als Parameter übergeben oder man schreibt sie in eine Datei mit folgendem Aufbau.
Beispielhafte exclude-Datei:
/mnt/* /proc/* /srv/* /sys/* /tmp/* [...] /var/spool/squid/* (Squid-Cache)
Auf diese Weise werden zwar die Verzeichnis mitgesichert, nicht aber deren Inhalt. Bei einer Rücksicherung würden die leeren Verzeichnisse jedoch wieder angelegt werden.
Übersicht Teststellung
Um die Beispiele noch etwas besser zu veranschaulichen können wir uns folgendes Szenario für die Beispiele in diesem Artikel vorstellen:
|
| ||||||||||||||||||||||||||||||
Festplatte umkopieren mit tar
Notiz: cd <ausgangs-dir> ; tar cf - . | (cd <ziel> ; tar xvpf -)
Sicherung über LAN auf anderen Rechner (Datei)
Um Daten von dem Client auf den Server zu sichern, schreiben wir über einen verschlüsselten Datenstrom (ssh) die zu sichernden Daten in eine Datei auf dem Server.
client:~# tar cvjf - / --exclude-from=tar-exclude.txt | ssh server.local \ 'cat > /home2/client-gesamtsicherung-`date +%d-%m-%y`.tar.bz2'
oder
client:~# tar cvjf - / --exclude-from=tar-exclude.txt | ssh server.local \ 'dd of=/home2/client-gesamtsicherung-`date +%d-%m-%y`.tar.bz2'
Überprüfung der Sicherung
Sicherung über LAN auf anderen Rechner (Streamer)
Zur Optimierung sollte möglichst das Programm buffer auf der Serverseite installiert sein (also in dem Rechner mit dem Streamer). Dem verwendeten Programm buffer kommt hier noch eine besondere Bedeutung zu.
buffer wird auf der Serverseite benötigt um die I/O-Performance zu steigern. Speziell bei Streamern ist ein kontinuierlicher Datenstrom für die Performance entscheident. Sollte Daten nicht schnell genug geliefert werden, wird der Schreibvorgang unterbrochen. Der Kopf muss dann neu positioniert werden. Das ist zwar nicht dramatisch, aber verlangsamt den Vorgang erheblich und belastet zusätzlich die Laufwerksmechanik.
Überprüfung der Sicherung
... Beitrag erweitern...
ssh-Verschlüsselungsoverhead vermeiden
Notiz: netcat anstatt ssh
In einer sicheren Umgebung kann/will man eventuell auf die Verschlüsselung per ssh verzichten. Der Datendurchsatz kann sich dadurch deutlich verbessern.
[...]
Beispiele
Notiz: Sammlung von Beispielen mit Beschreibungen
Script um Linux-System auf Windows2003-Server zu sichern
Rohform - braucht noch Erklärung
#!/bin/bash
#
# einfaches Backup-Script um einmal monatlich eine Systemsicherung durchzufuehren
#
export MOUNTPOINT=/mnt
# Besonderheiten des CIFS-Mountings umgehen
umount /home/sweep
mount /home/sweep
# Pruefen ob $MOUNTPOINT existiert
if [ ! -d $MOUNTPOINT ] # test ok = 0 / falsch = 1
then
echo "Mount-Point $MOUNTPOINT nicht vorhanden !!!"|mail root@server.local
exit 1
fi
# Share mounten
# mount.cifs //dc01/linux /mnt/ -o user=linux,password=xxxxxx
mount /mnt
grep $MOUNTPOINT /etc/mtab > /dev/null
MOUNT=$?
if [ "$MOUNT" = "0" ] # test ok = 0 / falsch = 1
then
cd /root
time tar cvz --exclude-from=exclude.tar -f /mnt/backup-pc2-`date +%d-%m-%y`.tar.gz /
cd /
echo "Datensicherung abgeschlossen. Vergleiche Daten....."
time tar dzf /mnt/backup-pc2-`date +%d-%m-%y`.tar.gz > /mnt/backup-pc2-`date +%d-%m-%y`.log
echo "+--------------------------------+" >> /mnt/backup-pc2-`date +%d-%m-%y`.log
echo " Platzbelegung " >> /mnt/backup-pc2-`date +%d-%m-%y`.log
echo "+--------------------------------+" >> /mnt/backup-pc2-`date +%d-%m-%y`.log
df -h >> /mnt/backup-pc2-`date +%d-%m-%y`.log
echo "+-------------------------------+" >> /mnt/backup-pc2-`date +%d-%m-%y`.log
echo " Verzeichnisinhalt /mnt " >> /mnt/backup-pc2-`date +%d-%m-%y`.log
echo "+-------------------------------+" >> /mnt/backup-pc2-`date +%d-%m-%y`.log
ls -lah /mnt >> /mnt/backup-pc2-`date +%d-%m-%y`.log
echo "---------------------------------" >> /mnt/backup-pc2-`date +%d-%m-%y`.log
unix2dos /mnt/backup-pc2-`date +%d-%m-%y`.log
echo|mutt -znx -i "/mnt/backup-pc2-`date +%d-%m-%y`.log" -s "Backuplog-File: Datensicherung vom `date +%d-%m-%y`" root@server.local
pwd >> /mnt/backup-pc2-`date +%d-%m-%y`.log
echo "+-------------------------------+" >> /mnt/backup-pc2-`date +%d-%m-%y`.log
echo " Badblock-Check sda & sdb " >> /mnt/backup-pc2-`date +%d-%m-%y`.log
echo "+-------------------------------+" >> /mnt/backup-pc2-`date +%d-%m-%y`.log
time badblocks /dev/sda >> /mnt/backup-pc2-`date +%d-%m-%y`.log
time badblocks /dev/sdb >> /mnt/backup-pc2-`date +%d-%m-%y`.log
echo "---------------------------------" >> /mnt/backup-pc2-`date +%d-%m-%y`.log
umount /mnt
else
echo "Datensicherung fehlgeschlagen. Ziel war nicht gemountet. Bitte manuell pruefen!"|mail root@server.local
fi
Vor- und Nachteile von tar
Notiz: Tar-Versionen und Kompatibilität; Größenbeschränkungen