Backup: Unterschied zwischen den Versionen

Aus lugvswiki
Zur Navigation springenZur Suche springen
(→‎Regelmäßige Voll- und Delta-Backups: Artikel zu Timeshift und Storbackup eingefügt)
(um Borg erweitert)
 
(19 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 6: Zeile 6:
 
# '''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.
 
# '''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.
 
# '''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'':
 
Weitere Links zum Thema ''Backup'':
 
* [https://rsync.samba.org/ rsync] Homepage
 
* [https://rsync.samba.org/ rsync] Homepage
* [http://storebackup.org/ storebackup] Homepage
+
* [https://storebackup.org/ storebackup] Homepage ([https://www.nongnu.org/storebackup/de/ Dokumentation])
* [https://technet.microsoft.com/en-us/library/cc733145.aspx robocopy] - Artikel bei [http://www.heise.de/download/special-backup-mit-robocopy-150171.html downloads.heise.de]
+
* [https://technet.microsoft.com/en-us/library/cc733145.aspx robocopy] - Artikel bei [https://www.heise.de/download/special-backup-mit-robocopy-150171.html downloads.heise.de]
* Linux-Magazin [http://www.linux-magazin.de/NEWS/Ein-Tag-um-Backups-machen Ein Tag um Backups machen]
+
* Linux-Magazin [https://www.linux-magazin.de/NEWS/Ein-Tag-um-Backups-machen Ein Tag um Backups machen]
* [http://www.cyberciti.biz/open-source/awesome-backup-software-for-linux-unix-osx-windows-systems/ nixCraft]
+
* [https://www.cyberciti.biz/open-source/awesome-backup-software-for-linux-unix-osx-windows-systems/ nixCraft]
* [http://www.techradar.com/news/software/applications/best-linux-backup-software-8-tools-on-test-909380 Techradar]
+
* [https://www.techradar.com/news/software/applications/best-linux-backup-software-8-tools-on-test-909380 Techradar]
 +
 
 +
 
 +
===Die Grundregel: 3-2-1(-0)===
 +
Es wird empfohlen Backups nach der '''3-2-1(-0)-Regel''' zu erstellen.
 +
 
 +
'''3:''' Es sollte von wichtigen Dateien stets mindestens drei Exemplare inklusive des Originals geben!<br/>
 +
'''2:''' Diese drei Exemplare, sollen auf mindestens zwei verschiedenen Medientypen gesichert sein!<br/>
 +
'''1''': Eine der Sicherungskopien sollte außer Haus gelagert werden! (z.B. um Diebstahl, Wohnungsbrand und Ähnlichem vorzubeugen)<br/>
 +
'''0''': null proprietäre oder undokumentierte Speicherformate zu verwenden!<br/>
 +
 
 +
Backup-Medien sollten nicht dauerhaft mit dem PC verbunden sein! Mein Tipp (so habe ich es realisiert) ist, die Sicherung immer von einem zweiten unabhängigen PC (z.B. RasPi) durchführen zu lassen. Der kann dann z.B. im Heimnetz via SSH (nur mit einem SSH Key) sich auf dem PC anmelden und dort die Daten runter kopieren. Ein auf dem PC aktiver Trojaner/Virus kann dann nicht einfach auf diesen Backup-PC überspringen.
 +
 
 +
Siehe auch [https://www.heise.de/ratgeber/FAQ-Die-richtige-und-komfortable-Backup-Strategie-7238206.html FAQ: Die richtige und komfortable Backup-Strategie], [https://www.heise.de/select/ct/2021/14/seite-140 Ding zum Sichern - Plattformunabhängiges Backup mit Syncthing] sowie [https://www.heise.de/select/ct/2020/10/seite-26 Alle in einem - Emotet-sicheres Familien-Backup]
  
  
 
=== Wohin mit der Sicherung ===
 
=== Wohin mit der Sicherung ===
 +
Es bietet sich an die regelmäßig Daten auf einen externen Datenträger wie z.B.eine externe Festplatte oder SSD bzw. einen USB-Stick oder  zu sichern. Bitte beachtet, dass dabei eine HDD (Magnetische Festplatte) die Daten deutlich länger zuverlässig speichern kann (einige Jahre bis Jahrzehnte) als eine SSD (einig Monate bis Jahre) oder gar ein USB Stick (einige Wochen bis Monate)! Falls man den Einhängepunkt des Datenträgers nicht findet, kann man dass im Artikel auf  [https://wiki.ubuntuusers.de/Datenträger/ UbuntuUsers.de Datenträger] nachschauen.
  
'''Baustelle''' - Redundanz mit nächsten Abschnitt muss noch besser gelöst werden !!! - Evtl. Erweiterung
+
Alternativ kann man die Sicherung auch auf einen entfernten Rechner bzw. [https://de.wikipedia.org/wiki/Network_Attached_Storage NAS] sichern. Dabei gibt es zunächst im wesentlichen zwei unterschiedliche Ansätze:
 
+
# Der entfernte Rechner/NAS wurden via ''[https://de.wikipedia.org/wiki/Mounten mount]'' in das eigene Dateisystem eingebunden (z.B. als <code>/mnt/nas1</code>)<br>'' '''Anmerkung:''' vorteilhaft ist bei diesen Verfahren, dass man die Daten z.B. via [https://de.wikipedia.org/wiki/Loop_device loop-Device] oder [https://de.wikipedia.org/wiki/EncFS encfs] auch mit Linux Bordmitteln vorher verschlüsseln kann''
Möchte man z.B. seine eigenen Daten regelmäßig z.B. auf ein externes Medium (USB-Stick, externe Festplatte oder gar auf einen anderen Rechner bzw. [https://de.wikipedia.org/wiki/Network_Attached_Storage NAS]). Wie man erfährt, in welchen Verzeichnis diese zu finden sind, kann man z.B. auf  [https://wiki.ubuntuusers.de/Datenträger/ UbuntuUsers.de Datenträger] nachschauen.
+
# Man greift auf den entfernten Rechner (kann auch im Internet stehen) via Internetprotokolle wie (S)FTP, HTTP(S) oder WEBDAV(S) zu
  
  
Zeile 32: Zeile 45:
  
 
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 [https://wiki.ubuntuusers.de/Shell/Einf%C3%BChrung/ UbuntuUsers Wiki]:
 
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 [https://wiki.ubuntuusers.de/Shell/Einf%C3%BChrung/ UbuntuUsers Wiki]:
  cp -av /home/benutzer /mnt/usbstick
+
  cp -auv /home/benutzer /mnt/usbstick
 
bzw. wenn man nicht als ''root'' angemeldet ist, mit vorangestellten ''sudo'':
 
bzw. wenn man nicht als ''root'' angemeldet ist, mit vorangestellten ''sudo'':
  sudo cp -av /home/benutzer /mnt/usbstick
+
  sudo cp -auv /home/benutzer /mnt/usbstick
Dabei wird mit ''[https://wiki.ubuntuusers.de/cp/ cp]'' ein Kopiervorgang gestartet und mit den so genannten Optionen ''-av'' alle Dateien und Unterverzeichnisse unter Beibehaltung aller Verzeichnis-Attribute (also Benutzer und Rechte) kopiert (wobei ''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 [https://wiki.ubuntuusers.de/Homeverzeichnis/ 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.
+
Dabei wird mit ''[https://wiki.ubuntuusers.de/cp/ 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 [https://wiki.ubuntuusers.de/Homeverzeichnis/ 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 [https://www.linux-community.de/ausgaben/linuxuser/2013/04/daten-sichern-mit-mintbackup/ "Datensicherungswerkzeug"]. Es bietet eine sehr einfache Möglichkeit die persönlichen Daten (/home) oder Programme manuell auszuwählen, zu sichern und wiederherzustellen.
  
  
Zeile 42: Zeile 59:
  
 
Um die Dateien im Verzeichnis <code>/home/benutzer</code> (= Daten des Benutzers <code>benutzer</code>) 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 [https://www.linuxwiki.de/DatumUndUhrzeit <code>date</code>] Befehl. Die Ausgabe des Befehls kann man einfach einbinden indem man diesen in der Komandozeile ausführen lässt, was man mit <code>$(Befehl)</code> erreichen kann. Somit kann man z.B. Zieldatei <code>/mnt/usbstick/benutzer_backup_$(date +%F_%H-%M-%S).txz</code> erzeugen. Wobei <code>$(date +%F_%H-%M-%S)</code> 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 <code>/mnt/usbstick/user_backup_2018-09-02_17-07-08.txz</code> heißen.
 
Um die Dateien im Verzeichnis <code>/home/benutzer</code> (= Daten des Benutzers <code>benutzer</code>) 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 [https://www.linuxwiki.de/DatumUndUhrzeit <code>date</code>] Befehl. Die Ausgabe des Befehls kann man einfach einbinden indem man diesen in der Komandozeile ausführen lässt, was man mit <code>$(Befehl)</code> erreichen kann. Somit kann man z.B. Zieldatei <code>/mnt/usbstick/benutzer_backup_$(date +%F_%H-%M-%S).txz</code> erzeugen. Wobei <code>$(date +%F_%H-%M-%S)</code> 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 <code>/mnt/usbstick/user_backup_2018-09-02_17-07-08.txz</code> heißen.
 
 
  <pre>tar cJvf /mnt/usbstick/benutzer_backup_$(date +%F_%H-%M-%S).txz  -C ~benutzer .</pre>
 
  <pre>tar cJvf /mnt/usbstick/benutzer_backup_$(date +%F_%H-%M-%S).txz  -C ~benutzer .</pre>
  
Zeile 48: Zeile 64:
 
=== Regelmäßiges (delta) update mit "rsync" ===
 
=== Regelmäßiges (delta) update mit "rsync" ===
 
Eleganter ist aber, insbesondere wenn man es regelmäßig macht, die Verwendung von ''[https://wiki.ubuntuusers.de/rsync/ rsync]''. Der Befehl dazu lautet:
 
Eleganter ist aber, insbesondere wenn man es regelmäßig macht, die Verwendung von ''[https://wiki.ubuntuusers.de/rsync/ rsync]''. Der Befehl dazu lautet:
  rsync --delete -ra /home/benutzer /mnt/usbstick
+
  <pre>rsync --delete -ra /home/benutzer /mnt/usbstick</pre>
 +
 
 +
Vorschlag von Gerhard: In diesem Beispiel werden die Daten von <code>/mnt/daten/</code> in <code>/mnt/storage/backup</code> gesichert und parallel die Änderungen in <code>/mnt/storage/backup.2018-12-31/...</code> geschrieben. Das Backup läuft täglich nur wenige Sekunden, Du brauchst nur rsync und keine weitere Software.
 +
<pre>rsync -av -b --log-file=/var/log/sichern.log --delete --backup-dir=/mnt/storage/backup.`date +%Y-%m-%d` /mnt/daten/ /mnt/storage/backup/</pre>
  
 
Wie man aufwendigere, regelmäßige Backups mit ''rsync'' machen kann, findet man ebenfalls im [https://wiki.ubuntuusers.de/ UbuntuUsers-Wiki] im Artikel [https://wiki.ubuntuusers.de/Skripte/Backup_mit_RSYNC/ Skripte - Backup mit RSYNC].
 
Wie man aufwendigere, regelmäßige Backups mit ''rsync'' machen kann, findet man ebenfalls im [https://wiki.ubuntuusers.de/ UbuntuUsers-Wiki] im Artikel [https://wiki.ubuntuusers.de/Skripte/Backup_mit_RSYNC/ Skripte - Backup mit RSYNC].
Zeile 55: Zeile 74:
  
 
== Regelmäßige Voll- und Delta-Backups ==
 
== Regelmäßige Voll- und Delta-Backups ==
 +
Prinzipiell kann man mit einfachen Mitteln [https://man7.org/linux/man-pages/man1/tar.1.html (tar)] auf der Kommandozeile [https://www.tldp.org/LDP/Bash-Beginners-Guide/html/ (bash-Skripte)] schon sinnvolle Backups auch regelmäßig ([https://de.wikipedia.org/wiki/Cron cron)] erstellen (lassen). Einfacher geht es jedoch ...
 +
 +
 +
===BorgBackup (evtl. mit grafischen Frontend)===
 +
Borg ist ein sehr robustes und im Profi Umfeld benutztes Backup Programm.
 +
 +
Referenzen:
 +
# Die Orignal [https://borgbackup.readthedocs.io/en/stable/ Doku (EN)] ist immer eine gute Wahl
 +
# Der Heise c't Artikel [https://www.heise.de/select/ct/2023/8/2231410413965370131#! aus c't 8 2023] ist sehr gut aber kostenpflichtig
 +
# [https://plocki.org/blog/linux/borgbackup.html Plockies Doku] ist kurz und knapp aber ein tipp aus der Praxis
 +
# Da ich ja die Hetzner StorageBox habe war dieser Artikel [https://docs.hetzner.com/de/robot/storage-box/access/access-ssh-rsync-borg Hetzner Docs] hilfreich
 +
 +
Referenzen Frontends Vorta:
 +
# Original [https://github.com/borgbase/vorta/wiki/GSoC-Contributor-Manual Doku]
 +
# Einführung auf [https://linuxnews.de/borg-backup-mit-vorta/ LinuxNew.de]
  
 
===Mit Timeshift===
 
===Mit Timeshift===
Für Ubuntu basierte Systeme [https://www.linuxmint.com/ (Linux Mint)] gibt es seit einiger Zeit das Programm [https://github.com/teejee2008/timeshift "Timeshift"], das mit Hilfe von [https://rsync.samba.org/ 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. Timeshift ist für viele andere Distributionen verfügbar, bietet ein grafisches Frontend das die Einstellungen auch für Laien übersichtlich und einfach macht.
+
Für Ubuntu basierte Systeme [https://www.linuxmint.com/ (Linux Mint)] gibt es seit einiger Zeit das Programm [https://github.com/teejee2008/timeshift "Timeshift"], das mit Hilfe von [https://rsync.samba.org/ 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!
 
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===
 
===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 [http://www.bzip.org/ bzip2] (bz2) komprimiert und können im Bedarfsfall auch über einen Dateimanager relativ einfach wiederhergestellt werden.  
+
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 [https://www.bzip.org/ 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.
+
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:'''<br>
+
'''Links:'''<br/>
[http://storebackup.org/ storebackup.org]<br>
+
[https://storebackup.org/ storebackup.org]<br>
[http://www.nongnu.org/storebackup/de/ nongnu.org]<br>
+
[https://www.nongnu.org/storebackup/de/ nongnu.org]<br>
 
[https://sourceforge.net/projects/storebackup/ Sourceforge.net]<br>
 
[https://sourceforge.net/projects/storebackup/ Sourceforge.net]<br>
 +
 +
 +
'''Anmerkung'''<br/>
 +
Alternativ kann man in StoreBackup auch Verzeichnisse und Dateien einfach per Kopierbefehl (<code>cp</code> oder via MidnightCommander <code>mc</code>) 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 <code>./backup.sh</code> mountet Ich backup-Festplatte auf <code>/backup</code> (muss auch btrfs sein), dann <code>./backup.sh</code> small oder oder usb-stick oder was auch immer.
 +
 +
Script z.B. in <code>/root/bin/backup.sh</code> speichern (dabei muss <code>/root/bin</code>) in der <code>PATH</code> Variablen auftauchen (kann man mit <code>echo $PATH</code> 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.
 +
 +
<pre>#!/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 ?"</pre>
 +
 +
  
 
== Backup mit Archivfunktion ==
 
== Backup mit Archivfunktion ==
  
 
=== Archiv-Funktion - wozu und wie ===
 
=== 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 [http://savannah.nongnu.org/projects/storebackup storeBackup] welches bei vielen Distributionen über die Standard-Repositories erhältlich ist.
+
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 [https://savannah.nongnu.org/projects/storebackup storeBackup] welches bei vielen Distributionen über die Standard-Repositories erhältlich ist.
  
Einen weiteren Artikel zu storeBackup findet man auch in der [http://www.heise.de/ix/artikel/Huebsch-verschnuert-506963.html iX].
+
Einen weiteren Artikel zu storeBackup findet man auch in der [https://www.heise.de/ix/artikel/Huebsch-verschnuert-506963.html iX].
  
  
Zeile 84: Zeile 182:
 
Hier will ich mal ein Beispiel aus meiner beruflichen Praxis zum Besten geben:
 
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 [https://de.wikipedia.org/wiki/Index_Sequential_Access_Method ISAM-Datenbank] läuft, wird eine Datensicherung mit Bordmitteln der Datenbank als Datei auf einem lokalen Dateisystem erzeugt und von dort mit [http://www-03.ibm.com/software/products/de/tivostormana/ 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.
+
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 [https://de.wikipedia.org/wiki/Index_Sequential_Access_Method ISAM-Datenbank] läuft, wird eine Datensicherung mit Bordmitteln der Datenbank als Datei auf einem lokalen Dateisystem erzeugt und von dort mit [https://www-03.ibm.com/software/products/de/tivostormana/ 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:
 
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:
Zeile 113: Zeile 211:
  
 
== Links rund um dieses Thema ==
 
== Links rund um dieses Thema ==
* [http://de.wikipedia.org/wiki/Backup Wikipedia Artikel zu Datensicherung]
+
* [https://de.wikipedia.org/wiki/Backup Wikipedia Artikel zu Datensicherung]
 
* [https://www.bsi-fuer-buerger.de/BSIFB/DE/Empfehlungen/Datensicherung/DatensicherungLinux/datensicherungLinux_node.html Linux Datensicherung vom BSI]
 
* [https://www.bsi-fuer-buerger.de/BSIFB/DE/Empfehlungen/Datensicherung/DatensicherungLinux/datensicherungLinux_node.html Linux Datensicherung vom BSI]
 +
* [https://wiki.ubuntuusers.de/Datensicherung/ Datensicherung auf UbuntuUsers]
 +
 +
 +
 +
== 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:
 +
* [https://freefilesync.org/ Homepage]
 +
* [https://en.wikipedia.org/wiki/FreeFileSync Wikipedia Artikel (EN)]
 +
* [https://gnulinux.ch/freefilesync-11-2 Artikel auf GnuLinux.ch]
 +
* [https://www.heise.de/download/product/freefilesync-88176 Download auf Heise]
 +
 +
 +
=== 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:
 +
* [https://www.cis.upenn.edu/~bcpierce/unison/ Homepage]
 +
* [https://de.wikipedia.org/wiki/Unison_(Software) Wikipedia Artikel]
 +
* [https://wiki.ubuntuusers.de/Unison/ Beschreibung auf UbuntuUsers]
 +
* [https://www.heise.de/download/product/unison-file-synchronizer-21889 Download auf Heise]
 +
* [https://wiki.pratznschutz.com/index.php/Sync_zwischen_2_Server_mit_Unison Sync zwischen 2 Server mit Unison (auf PrtznSchutz)]
  
  
 +
=== restic ===
 +
* [https://restic.readthedocs.io/en/stable/ Documentation]
 +
Deduplizierend, viele OS, inkrementel, verschlüsselt, ..
  
 
----
 
----
 
Zurück zur [[Erste-Hilfe|Linux Hilfeseite]]
 
Zurück zur [[Erste-Hilfe|Linux Hilfeseite]]

Aktuelle Version vom 23. Februar 2024, 22:46 Uhr

Backup

Ein Backup dient ganz allgemein dazu, Daten in einer geeigneten Weise zu sichern. Dabei gibt es meiner Ansicht nach im Wesentlichen vier Herangehensweisen.

  1. Gar kein Backup: Meiner Ansicht nach die schlechteste Idee.
  2. 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.
  3. 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.
  4. 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:


Die Grundregel: 3-2-1(-0)

Es wird empfohlen Backups nach der 3-2-1(-0)-Regel zu erstellen.

3: Es sollte von wichtigen Dateien stets mindestens drei Exemplare inklusive des Originals geben!
2: Diese drei Exemplare, sollen auf mindestens zwei verschiedenen Medientypen gesichert sein!
1: Eine der Sicherungskopien sollte außer Haus gelagert werden! (z.B. um Diebstahl, Wohnungsbrand und Ähnlichem vorzubeugen)
0: null proprietäre oder undokumentierte Speicherformate zu verwenden!

Backup-Medien sollten nicht dauerhaft mit dem PC verbunden sein! Mein Tipp (so habe ich es realisiert) ist, die Sicherung immer von einem zweiten unabhängigen PC (z.B. RasPi) durchführen zu lassen. Der kann dann z.B. im Heimnetz via SSH (nur mit einem SSH Key) sich auf dem PC anmelden und dort die Daten runter kopieren. Ein auf dem PC aktiver Trojaner/Virus kann dann nicht einfach auf diesen Backup-PC überspringen.

Siehe auch FAQ: Die richtige und komfortable Backup-Strategie, Ding zum Sichern - Plattformunabhängiges Backup mit Syncthing sowie Alle in einem - Emotet-sicheres Familien-Backup


Wohin mit der Sicherung

Es bietet sich an die regelmäßig Daten auf einen externen Datenträger wie z.B.eine externe Festplatte oder SSD bzw. einen USB-Stick oder zu sichern. Bitte beachtet, dass dabei eine HDD (Magnetische Festplatte) die Daten deutlich länger zuverlässig speichern kann (einige Jahre bis Jahrzehnte) als eine SSD (einig Monate bis Jahre) oder gar ein USB Stick (einige Wochen bis Monate)! 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:

  1. 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
  2. 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 ...


BorgBackup (evtl. mit grafischen Frontend)

Borg ist ein sehr robustes und im Profi Umfeld benutztes Backup Programm.

Referenzen:

  1. Die Orignal Doku (EN) ist immer eine gute Wahl
  2. Der Heise c't Artikel aus c't 8 2023 ist sehr gut aber kostenpflichtig
  3. Plockies Doku ist kurz und knapp aber ein tipp aus der Praxis
  4. Da ich ja die Hetzner StorageBox habe war dieser Artikel Hetzner Docs hilfreich

Referenzen Frontends Vorta:

  1. Original Doku
  2. Einführung auf LinuxNew.de

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)

  1. Backup aller (wichtigen) Daten ist ein Muß für den LUG-Interessierten und ein Fehlen kann beim Profi sogar zur Abmahnung führen!
  2. Ein Backup ist immer gewissenhaft zu konfigurieren!
  3. Das erste - und alle weiteren Backups - sind zyklisch mindestens einmal monatlich zu überprüfen (Stichproben verschiedener Dateien incl. ZIP und Videos wiederherstellen)!
  4. Die Backup-Strategie ist gewissenhaft zu wählen!
  5. 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:


restic

Deduplizierend, viele OS, inkrementel, verschlüsselt, ..


Zurück zur Linux Hilfeseite