Backup Simple

Aus LOMSO
Wechseln zu: Navigation, Suche
Du bist hier : Wiki home -> Events -> Linuxeinsteiger -> Backup Simple



Einfache Backup-Lösung für den Desktop-Betrieb

Hintergrund

rsync - Werkzeug zur Synchronisation von Filesystemen

Festplatten sind normalerweise sehr zuverlässige PC-Komponenten. Ein Ausfall ist relativ selten, aber wenn er doch mal vorkommt, ist der Schaden groß und u.U. sind viele Jahre Arbeit verloren. Eine Wiederherstellung der Daten von einer defekten Festplatte ist aufwändig und sehr teuer.

Weiterhin kommt es vor, dass man versehentlich Daten löscht. Der 'Papierkorb' steht nur für die Löschfunktionen mit Hilfe des Desktops und der GUI-Programme zur Verfügung. Werden Dateien über das Terminal gelöscht, sind die Inhalte sofort zum Überschreiben frei gegeben und praktisch für eine Wiederherstellung verloren.

Besser und preiswerter ist es, ein Backup wichtiger Daten zu haben, das ausreichend schnell angefertigt werden kann und den PC nicht unnötig belastet.

Für Backups gibt es unzählige Tools und Methoden. Hier wird eine einfache Methode gezeigt, die man täglich ausführen kann und die wichtigsten Daten sichert.

Unter Linux ist es im privaten Desktop-Betrieb selten nötig, ein Komplettbackup zu machen. Es reicht oft aus, nur wichtige Daten zu sichern. Wichtige Daten sind z.B.

* Liste der installierten Programme
* Benutzerdaten unter /home/
* Konfigurationen unter /etc
* was man sonst noch für wichtig hält

Eine Liste der installierten Programmen bekommt man mit dpkg (siehe auch unseren Spickzettel für apt-get).

Wenn der Im Notfall eintritt, installiert man eine neues System, installiert mit Hilfe der Paketliste die Programme nach, passt die Konfigurationen an und kopiert die Homefolder zurück.

Der Arbeitsaufwand für die Wiederherstellung ist im Vergleich zum Wert der Daten gering. Eine vollautomatische Wiederherstellung ist mit diesem Skript nicht vorgesehen.

Skript: syncAll.sh

syncAll.sh


Dieses Skript verwendet rsync. Es kopiert nur die Änderungen und ist daher auch bei sehr großen Datenmengen schnell.


Neues Script am 13.09.2011 eingestellt.

Änderungen:
- Zielfolderstruktur ist jetzt identisch mit der Quellfolderstruktur
- Logging wurde verbessert
- besser kommentiert


Das Skript sichert eine Liste aller installierten Pakete nach /etc/apt/packageslist/packages.list und eine Liste von Ordnern, die in unterschiedlichen Basisordnern liegen können.

Das Skript sichert nicht ein komplettes System. Für eine Komplettsicherung sollte man mit einer Live-CD booten, die Partitionen mounten und sichern. Natürlich kann dieses Skript auch dafür, nach Anpassungen, verwendet werden.

EinE automatische 'Rücksicherung' ist nicht vorgesehen. Im Fall des seltenen Totalausfalls installiert man Ubuntu neu, installiert alle Programme mit Hilfe von 'packages.list' und kopiert '/home' zurück.

Systemweite Konfigurationen stehen in '/etc' und können mit Hilfe des Backups angepasst werden. Hat man ein mit der Live-CD erstelltes Backup legt man einfach die Partitionen neu an, kopiert alles zurück, richtet GRUB neu ein und hat das komplette System wieder restauriert.

Beschreibung der Variablen und Ordner im Skript

Sicherung der Paketliste

/etc/apt/packageslist/packages.list

Der Ordner '/etc/apt/packageslist' muss vorher mit Rootrechten angelegt werden.


Backup-Folder

Zielfolder auf der externen HD:

BACKUPHD=/media/hd500
BACKUPDIR=$BACKUPHD/backup
BACKUPBACKUPDIR=$BACKUPHD/backupbackup

Eine Beschreibung ist im Skript zu finden.

Log-File

LOGFILE=/var/log/backup/bb_$TODAY.log

Der Folder '/var/log/backup' muss mit Rootrechten angelegt werden.

Liste der zu sichernden Folder

Folgende zwei Zeilen sichern alle Files im Ordner '/home' unter den Unterordnern user1 und user2

SOURCEDIR=/home
do_dirs $SOURCEDIR $BACKUPDIR "user1 user2"

Beide Zeilen zusammen können beliebig oft mit anderen Werten für SOURCEDIR und 'user1', 'user2' wiederholt werden.

Wichtig

Das Skript benötigt Rootrechte und sollte unbedingt vor dem ersten Lauf getestet werden.


Testen

- an der Zeile

#DRY_RUN=--dry-run

das Kommentarzeichen (#) entfernen - entsprechend diese Zeile

DRY_RUN=

auskommentieren (# an den Anfang der Zeile setzen).


Anmerkung

Die Ordnernamen in der Liste (hier "user1 user2") müssen für alle Ordner im Backup unterschiedlich sein. Das Script speichert nicht den Namen des SOURCEDIR. Im Backupordner werden Unterordner mit den Namen aus der Liste user1 user2 angelegt.


Gelöschte Dateien werden im BACKUPDIR in Ordnern mit dem Prefix backupdir_ usw. abgelegt, d.h. das gesamte Backup erhält alle Dateien und es wird nichts gelöscht.


Gelegentlich kann man diese backupdir_*-Ordner löschen. Datenschutz beachten: Gelöschte Dateien bleiben im Backup bis dahin erhalten!

Linux sichert alle Dateien, auch geöffnete. Da geöffnete Dateien nicht immer die Daten enthalten, die man haben möchte, sollte man Programme, die wichtige Dateien verarbeiten, schliessen. (Open-Office, Mail-Programme, u.ä.)


Tipp

Da oft nur wenige Daten im Persönlichen Ordner (Home) geändert werden, kann man das Skript auch in

/etc/rc.local

aufrufen. Damit erfolgt ein automatisches Backup beim Start des PC. Bei normaler PC-Nutzung dauert das nur wenige Minuten und kann nicht mehr 'vergessen' werden. Die Backupfestplatte muss dann über die fstab beim Start eingebunden werden. U.U. kann man die Backupfestplatte wieder per Skript unmounten. Dann ist das Backup erledigt, wenn beim PC-Start die externe Festplatte angeschlossen ist.

http://wiki.ubuntuusers.de/rc.local 

NTFS Backup

mit dd

Man kann unter Linux einfach ein ganze Festplatte mit dd kopieren.

Das Kopieren erfolgt unabhängig vom Inhalt, d.h. mit 'dd' können auch NTFS-Partitionen gesichert werden. Eine Rücksicherung ist nur auf eine Partition gleicher Größe möglich. 'dd' kopiert wirklich alles, auch die interne Defektliste der Festplatte. Eine Rücksicherung kann daher bei Verwendung von 'dd' problematisch werden.


mit ntfsclone

Mit 'ntfsclone' ist eine sichere Kopie einer NTFS-Partition inklusive diverser Prüfungen möglich.

http://man.linux-ntfs.org/ntfsclone.8.html 

Es werden nur die Daten im NTFS-Filesystem blockweise kopiert. Im Backup sind keine einzelnen Dateien sichtbar. Eine vollständige Restaurierung der NTFS-Daten ist unproblematisch.

Skript: ntfsbackup.sh

#! /bin/sh
# 
cd /mnt/dat/ntfs/
pwd
umount /dev/hda1
umount /dev/hda8
rm c_ntfs.img.old
mv c_ntfs.img c_ntfs.img.old
ntfsclone --save-image --output - /dev/hda1 | gzip -c  > c_ntfs.img.gz
rm p_ntfs.img.old
mv p_ntfs.img p_ntfs.img.old
ntfsclone --save-image --output - /dev/hda8 | gzip -c  > p_ntfs.img.gz
echo "ready"

Die Werte für die Devices im Skript und die Filenamen müssen angepasst werden.

Das Skript kopiert blockweise alle Daten von

/dev/hda1/dev/hda8

nach

c_ntfs.img.gz und p_ntfs.img.gzq 

im lokalen Folder.

Die Daten werden mit 'gzip komprimiert. Gleichzeitig wird das vorletzte Backup gelöscht und das letzte Backup nach *.old umbenannt. Dadurch bleibt das letzte Backup erhalten.

Rücksichern, ebenfalls anpassen

gunzip -c backup.img.gz | ntfsclone --restore-image --overwrite /dev/hda1 -

(Das '-' am Ende der Zeile ist wichtig!)

Anmerkung 1

Will man nur persönliche Daten aus NTFS-Festplatten sichern, reicht es aus, die betreffenden NTFS-Partion unter Ubuntu einzubinden und die eingebundene Partition mit in das Backup aufzunehmen (s.o.). Windows-Partitionen_einbinden

Anmerkung 2

Mit ntfsclone kann man keine NTFS-Systempartition sichern, da die relative Lage der Sektoren, die für den Start von Windows wichtig ist, nicht erhalten bleibt.

In diesem Fall muss man doch 'dd' verwenden.

D.h. es ist immer hilfreich, unter einem Windowssystem Programme und Daten auf verschiedenen Partitionen zu halten.