Backup
Backup
Ein Backup dient ganz allgemein dazu, Daten in einer geeigneten Weise zu sichern. Dabei gibt es meiner Ansicht nach im Wesentlichen vier Herangehensweisen.
- Gar kein Backup: Meiner Ansicht nach die schlechteste Idee.
- Sporadisches Kopieren wichtiger Daten auf einen anderen Datenträger: Kann bei entsprechender (Un-)Wichtigkeit der Daten und sehr guter Disziplin, dass man es auch wirklich macht, wenn sich die entsprechenden Daten ändern, ausreichend sein.
- Regelmäßige Voll- und Delta-Backups mit einem entsprechenden Programm (üblich ist eine Wochen-Voll-Sicherung und eine Tages-"Delta"-Sicherung): Ist schon sehr gut und bietet über die Delta-Sicherungen bis zum letzten aufbewahrten (Voll-)Backup auch eine eingeschränkte Archivfunktion.
- Backup mit Archivfunktion: Hier können auch Änderungen, welche aus Versehen gemacht werden, im Rahmen der bis dahin archivierten Backups rückgängig gemacht werden.
Weitere Links zum Thema Backup:
- rsync Homepage
- storebackup Homepage (Dokumentation)
- robocopy - Artikel bei downloads.heise.de
- Linux-Magazin Ein Tag um Backups machen
- nixCraft
- Techradar
Wohin mit der Sicherung
Es bietet sich an die regelmäßig Daten auf einen externen Datenträger wie z.B. einen USB-Stick oder eine externe Festplatte zu sichern. Falls man den Einhängepunkt des Datenträgers nicht findet, kann man dass im Artikel auf UbuntuUsers.de Datenträger nachschauen.
Alternativ kann man die Sicherung auch auf einen entfernten Rechner bzw. NAS sichern. Dabei gibt es zunächst im wesentlichen zwei unterschiedliche Ansätze:
- Der entfernte Rechner/NAS wurden via mount in das eigene Dateisystem eingebunden (z.B. als
/mnt/nas1
)
Anmerkung: vorteilhaft ist bei diesen Verfahren, dass man die Daten z.B. via loop-Device oder encfs auch mit Linux Bordmitteln vorher verschlüsseln kann - Man greift auf den entfernten Rechner (kann auch im Internet stehen) via Internetprotokolle wie (S)FTP, HTTP(S) oder WEBDAV(S) zu
Sporadisches Kopieren
Sporadisches Kopieren von wichtigen oder gar einmalig vorhandenen Daten auf einen anderen Datenträger oder in die Cloud ist die einfachste Variante. Das kann man einfach auf dem grafischen Desktop (also dem PC-Arbeitsplatz) und dem dort vorinstallierten Dateimanager (bei KDE z.B. Dolphin) per Drag'n'Drop (also Markieren und Kopieren) machen.
Die zweite, meist elegantere Möglichkeit (da man auch Fehler besser gemeldet bekommt - die Daten sollten ja schon fehlerfrei auf dem Ziel ankommen), ist meist ein einfacher Befehl auf der Text-Konsole (meist nur Konsole, Terminal, Shell oder auch CLI, vom englischen Command Line Interface - im Gegensatz zum GDI vom englischen Graphic Desktop Interface - genannt). Dazu öffnet man ein solches über das Eintippen von konsole oder terminal im Startmenü oder via gleichzeitigen Drücken von zuerst der <alt>-Taste auf der Tastatur und dann der <F2> Funktionstaste oben auf der Tastatur (wird normalerweise mit <alt>+<F2> abgekürzt). Wird das Programm aufgelistet, wählt man es aus. Wichtig: Bei Systemen mit einer richtigen Benutzerverwaltung (fast alle nicht auf Ubuntu basierten Systeme) gibt es auch eine Variante, welche sich root, Admin oder Superuser nennt. Diese ist dann zu bevorzugen, da sie immer alle benötigten Rechte mitbringt. Allerdings muss man dann einmalig das so genannte root- (also Administrator- oder Superuser-) Passwort eingeben. Bei einigen Systemen ist dieses mit dem des zuerst angelegten Benutzers identisch. Gibt es diesen root- Benutzer nicht, muss man entweder einmalig
sudo su
eingeben und wird dann erst zur Eingabe des root Benutzer Passwortes aufgefordert, oder vor jeden Befehl, der Dateien verändert, kopiert oder verschiebt das Wort sudo gefolgt von einer Leerstelle eingeben. Dabei bewirkt der Befehl sudo die Erweiterung der Rechte auf Administrator oder root des angemeldeten Benutzers.
Die einfachste Möglichkeit ist auch hier das Kopieren einzelnen Dateien oder kompletter Verzeichnisse. Eine einfache Einführung zur Kommandozeile findet sich z.B. im UbuntuUsers Wiki:
cp -auv /home/benutzer /mnt/usbstick
bzw. wenn man nicht als root angemeldet ist, mit vorangestellten sudo:
sudo cp -auv /home/benutzer /mnt/usbstick
Dabei wird mit cp ein Kopiervorgang gestartet und mit den so genannten Optionen -auv alle Dateien und Unterverzeichnisse unter Beibehaltung aller Verzeichnis-Attribute (also Benutzer und Rechte) kopiert (wobei u nur die Daten kopiert wenn sie noch nicht vorhanden sind oder die Quelldaten neuer sind und v jede einzelne Datei bzw. Verzeichnis anzeigen lässt - sonst sieht man nichts - womit man nicht weiß ob und wie lange der Vorgang noch läuft). Anschließend wird am besten der komplette Dateiname bzw. Verzeichnisname der Quelle und anschließend die des Zieles angegeben. In diesem Fall werden also alle Dateien und Verzeichnisse, welche im so genannten Homeverzeichnis des Benutzers mit dem Namen benutzer (Groß- und Kleinschreibung ist hier wie immer bei Unix basierten Systemen wie Linux, relevant) in das Ziel-Verzeichnis /mnt/usbstick kopiert. Dabei wird in diesem Fall dort als erstes das Unterverzeichnis benutzer angelegt in den hinein dann alle anderen Dateien und Verzeichnisse kopiert werden.
Datensicherungswerkzeug (mintBackup)
Ein mit GUI ausgestattetes Backup-Tool ist in Linux Mint vorhanden und nennt sich einfach "Datensicherungswerkzeug". Es bietet eine sehr einfache Möglichkeit die persönlichen Daten (/home) oder Programme manuell auszuwählen, zu sichern und wiederherzustellen.
Sporadisches "Packen"/"ZIP-pen"
Manko des Kopierens ist, dass die Quelldateien im Zielverzeichnis den gleichen Speicherplatz verbrauchen. Dazu kommt noch je nach Zielverzeichnis, dass nicht immer alle Benutzerrechte und andere Attribute erhalten bleiben. Dieses kann man durch Zusammenbinden (Zusammenkleben) mit dem Kommandozeilenprogramm tar vermeiden. Da tar
standard mäßig die Daten nicht packt, muss man es via Parameter (-z
für gzip, -j
für bzip2, -J
für xz und mit -a
wird die Kompressionsmethode anhand der Dateiendung ermittelt) gesteuert.
Um die Dateien im Verzeichnis /home/benutzer
(= Daten des Benutzers benutzer
) in eine Datei zu sichern, sollte man vorher wieder sicherstellen dass genügend platz auf dem Zielverzeichnis ist! Da man evtl. mehrere Sicherungen im gleichen Verzeichnis unterbringen möchte, empfiehlt es sich, die Zieldatei mit dem Datum zu ergänzen. Dieses geht unter der Linux Kommandozeile recht einfach, durch den date
Befehl. Die Ausgabe des Befehls kann man einfach einbinden indem man diesen in der Komandozeile ausführen lässt, was man mit $(Befehl)
erreichen kann. Somit kann man z.B. Zieldatei /mnt/usbstick/benutzer_backup_$(date +%F_%H-%M-%S).txz
erzeugen. Wobei $(date +%F_%H-%M-%S)
den Zeitstempel zum Zeitpunkt des Aufrufs des Kommandos generiert z.B. am 02.09.2018 um 17:07 Uhr und 7 Sekunden wird das Backup /mnt/usbstick/user_backup_2018-09-02_17-07-08.txz
heißen.
tar cJvf /mnt/usbstick/benutzer_backup_$(date +%F_%H-%M-%S).txz -C ~benutzer .
Regelmäßiges (delta) update mit "rsync"
Eleganter ist aber, insbesondere wenn man es regelmäßig macht, die Verwendung von rsync. Der Befehl dazu lautet:
rsync --delete -ra /home/benutzer /mnt/usbstick
Vorschlag von Gerhard: In diesem Beispiel werden die Daten von /mnt/daten/
in /mnt/storage/backup
gesichert und parallel die Änderungen in /mnt/storage/backup.2018-12-31/...
geschrieben. Das Backup läuft täglich nur wenige Sekunden, Du brauchst nur rsync und keine weitere Software.
rsync -av -b --log-file=/var/log/sichern.log --delete --backup-dir=/mnt/storage/backup.`date +%Y-%m-%d` /mnt/daten/ /mnt/storage/backup/
Wie man aufwendigere, regelmäßige Backups mit rsync machen kann, findet man ebenfalls im UbuntuUsers-Wiki im Artikel Skripte - Backup mit RSYNC.
Regelmäßige Voll- und Delta-Backups
Prinzipiell kann man mit einfachen Mitteln (tar) auf der Kommandozeile (bash-Skripte) schon sinnvolle Backups auch regelmäßig (cron) erstellen (lassen). Einfacher geht es jedoch ...
Mit Timeshift
Für Ubuntu basierte Systeme (Linux Mint) gibt es seit einiger Zeit das Programm "Timeshift", das mit Hilfe von rsync automatisch Backups auf ein zuvor festgelegtes Ziel (lokales Verzeichnis, lokale Partition, lokaler Datenträger oder entferntes Ziel) in ebenfalls definierten Zeitintervallen (täglich, wöchentlich, monatlich, stündlich oder beim Booten) die gewünschten Daten (Quelldatenträger, -partition, -dateisystem, -verzeichnis, etc.) als sogenannte "Snapshots" sichert. In den Standardeinstellungen wird ein Filter gestezt der sowohl root ( "/" ) als auch /home sichert. Timeshift ist für viele andere Distributionen verfügbar, bietet ein grafisches Frontend das die Einstellungen auch für Laien übersichtlich und einfach macht.
Seit Linux Mint 18.3 kann ein Upgrade eines laufendne Mint-Systems nur noch mit Hilfe von Timeshift zuvor erstelltem Snapshot durchgeführt werden. Ohne diesen Snapshot, lässt sich Linux Mint 18.3 nicht auf Linux Mint 19 aktualisieren! Deshalb wird Timeshift automatisch installiert und gestartet sobald, das Upgrade initiiert wird. Beim Verzicht auf die Erstellung eines Snapshots mit Timeshift bricht der Aktualisierungsprozess mit einer entsprechenden Fehlermeldung ab!
Mit Storebackup
Ein ebenfalls für viele Distributionen verfügbares Backup-Tool ist Storebackup. Storebackup hat keine GUI und kann nur von der Kommandozeile und mit Hilfe von entsprechenden Konfigurationsdateien gesteuert werden. Die zu sichernden Daten werden mit bzip2 (bz2) komprimiert und können im Bedarfsfall auch über einen Dateimanager relativ einfach wiederhergestellt werden.
Die Bedienung und Konfiguration ist mit einer steilen Lernkurve nicht gerade einsteigerfreundlich, bietet aber eine sichere und stabile Möglichkeit Datensicherungen durchzuführen. Dabei kann mit Hilfe der entsprechenden Konfigurationsdateien sehr detailliert und granular gesteuert werden, welchen Daten gesichert werden und welche nicht. Es eignet sich vor allem für Dateiserver und reine Datenverzeichnisse wie /home-Verzeichnisse und den Einsatz durch Systemadministratoren.
Links:
storebackup.org
nongnu.org
Sourceforge.net
Anmerkung
Alternativ kann man in StoreBackup auch Verzeichnisse und Dateien einfach per Kopierbefehl (cp
oder via MidnightCommander mc
) zurück kopieren und gepackte Dateien manuell entpacken (ist gzip als Packprogramm in der Configuration eingestellt geht dieses einfach per Befehl im Kopierten Verzeichnis:
find . -iname "*.gz" -exec gzip -d {} \;
Script von Marc
Voraussetzung: btrfs Dateisystem + eigenes Script + btrfs auf Backup Datenträger
Dann ./backup.sh
mountet Ich backup-Festplatte auf /backup
(muss auch btrfs sein), dann ./backup.sh
small oder oder usb-stick oder was auch immer.
Script z.B. in /root/bin/backup.sh
speichern (dabei muss /root/bin
) in der PATH
Variablen auftauchen (kann man mit echo $PATH
auf der Kommandozeile anzeigen lassen. Falls nicht kann man diesen hinzufügen oder den kompletten Pfad angeben.
Incrementelles Backup ist ein schnelles Backup. Auf dem externen Datenträger kann man dann alte Backups mit den btrfs Tools löschen.
#!/bin/sh -e set -o pipefail target=$1 set -x backup(){ local name="$1" local from="$2" # where to store subvolumes and keep last for incremental update local dir_in_from="$3" local to="$4" now=$(date '+%Y-%m-%d_%H%M%S') mkdir -p "$dir_in_from" if [ -f "$dir_in_from/last-backup-${name}" ]; then local last=$(cat "$dir_in_from/last-backup-${name}" 2>/dev/null || true) echo 'snapshotting from' btrfs subvolume snapshot -r "$from" "$dir_in_from/$name-$now" echo 'updating target' btrfs send -p "$dir_in_from/$last" "$dir_in_from/$name-$now" | btrfs receive "$to" echo 'deleting old reference' btrfs subvolume delete "$dir_in_from/$last" echo "new snapshot is is $name-$now" echo "$name-$now" > "$dir_in_from/last-backup-${name}" else echo "creating initial snapshot as reference" btrfs subvolume snapshot -r "$from" "$dir_in_from/$name-$now" echo "sending initial data .. might take long" btrfs send "$dir_in_from/$name-$now" | btrfs receive "$to" echo "$name-$now" > "$dir_in_from/last-backup-${name}" fi } if [ -f /backup/backup-dummy$target ]; then backup "backup-laptop" "/" "/root/backup.sh/references$target" "/backup" else echo "/backup not mounted!" exit 1 fi echo "AELTESTES LOESCHEN auf /backup ?"
Backup mit Archivfunktion
Archiv-Funktion - wozu und wie
Für mich handelt es sich um eine echte Archivfunktion, wenn ich über eine gewisse Zeit oder über eine gewisse Anzahl von Änderungen diese wieder rückgängig machen kann. Ein Programm mit Archivfunktion ist das von mir verwendete storeBackup welches bei vielen Distributionen über die Standard-Repositories erhältlich ist.
Einen weiteren Artikel zu storeBackup findet man auch in der iX.
Beispiel aus der Praxis
Von Uwe S.
Hier will ich mal ein Beispiel aus meiner beruflichen Praxis zum Besten geben:
Ein Kollege aus der Personalabteilung hat mit dem Ende der zeitlich ohnehin befristeten Beschäftigung von Leiharbeitskräften mit Schlag 01.08.2014 alle bis dahin vorhandnenen Datensätze von eben jenen ausgeschiedenen Mitarbeitern gelöscht. Eine Kollegin von der Zeiterfassung konnte daher die im letzten Monat aufgelaufenen Arbeitszeiten nicht mehr abrechnen. Waren ja keine Daten zu den betreffenden (Ex-) Kollegen mehr vorhanden. Aber wozu hat man eine Datensicherung. Da das Zeiterfassungsprogramm auf Basis einer ISAM-Datenbank läuft, wird eine Datensicherung mit Bordmitteln der Datenbank als Datei auf einem lokalen Dateisystem erzeugt und von dort mit TIVOLI wie eine normale Datei gesichert. Um Platz zu sparen wird die gesicherte Datei mit ZIP komprimiert. Der TIVOLI-Client ist mit Defaultwerten konfiguriert und da werden ZIP-Dateien ausgenommen. Die ZIP-Datei wird jeden Tag durch die Datenbanksicherung überschrieben. Mit anderen Worten: da gibt es kein Backup! Jedenfalls keines, das älter 24 Stunden ist.
Zuerst habe ich gedacht, auch storeBackup würde komprimierte Dateiformate nicht sichern, aber das war falsch: storeBackup komprimiert nur standardmäßig keine Dateien kleiner 1024 kB UND komprimierte Formate:
comprRule = $size > 1024 and not $file =~ /\.zip\Z|\.bz2\Z|\.gz\Z|\.tgz\Z|\.jpg\Z|\.gif\Z| \.tiff\Z|\.tif\Z|\.mpeg\Z|\.mpg\Z|\.mp3\Z|\.ogg\Z|\.gpg\Z|\.png\Z
Übrigens haben wir nun - nachdem das Kind leider schon wieder mal in den Brunnen gefallen ist - ZIP-Dateien von der Ausnahme ausgenommen; sprich: sie werden künftig gesichert. Unsere Rettung ist in diesem Fall etwas aufwändiger, aber immerhin realisierbar. Da wir die Daten auf Dateisystemebene mit TIVOLI sichern, sind auch alle zurückliegenden Datenbankdateien in den Sicherungssätzen vorhanden. Also kann man den Zustand der Datenbank von einem spezifischen Datum theoretisch wiederherstellen. Nicht aber in der Originaldatenbank, sondern auf einer Testinstanz.
Im Nachgang kann man dann die fehlenden Datensätze aus der wiederhergestellten Datenbank exportieren und sie dann in die Originaldatenbank wieder importieren.
Fazit:
(By Ulf)
- Backup aller (wichtigen) Daten ist ein Muß für den LUG-Interessierten und ein Fehlen kann beim Profi sogar zur Abmahnung führen!
- Ein Backup ist immer gewissenhaft zu konfigurieren!
- Das erste - und alle weiteren Backups - sind zyklisch mindestens einmal monatlich zu überprüfen (Stichproben verschiedener Dateien incl. ZIP und Videos wiederherstellen)!
- Die Backup-Strategie ist gewissenhaft zu wählen!
- Jedes Backup bzw. dessen Logdatei (Bericht, Report) muss zumindest auf Fehler und Warnungen fortlaufend beobachtet werden!
'Anmerkung zu storeBackup:
(by stippi)
Ich habe übrigens schon erfolgreich einen kompletten Fileserver mit Hilfe von storeBackup wiederherstellen können. :-)
Links rund um dieses Thema
Daten Synchronisieren
Alternativ kann man anstatt ein Backup zu erstellen auch die Daten auf einem weiteren Gerät (externen Festplatte, NAS, WEBDAV-Server, Server, PC, ...) synchronisieren. Dieses macht vor allen auf Notebooks sinn, wenn man noch einen zweiten (Desktop) PC besitzt. Aber auch wenn man die Daten auf eine externen Festplatte oder ein NAS übertragen möchte macht dieses Verfahren unter umständen Sinn.
FreeFileSync
FreeFileSync ist ein GUI Programm zur Synchronisierung von Ordnern. Das Programm überzeugt durch eine übersichtlich gestaltete Oberfläche und die besonders einfache, intuitive Bedienung, weshalb es sich auch für Einsteiger eignet.
Weitere Infos:
Unison File Synchronizer
Unison ist ein Synchronisationsprogramm das mit Hilfe von rsync algorithmen zwei Datenquellen bidirektional Synchronsieren kann. Dass Platformunabhängige Programm kann sowohl im Terminal/Konsole als auch mit der GUI (Graphical User Interface) bedient werden.
Weitere Infos:
- Homepage
- Wikipedia Artikel
- Beschreibung auf UbuntuUsers
- Download auf Heise
- Sync zwischen 2 Server mit Unison (auf PrtznSchutz)
Zurück zur Linux Hilfeseite