ubuntuusers.de

Du betrachtest eine alte Revision dieser Wikiseite.

BorgBackup

Artikel wird überarbeitet

Dieser Artikel wird momentan überarbeitet.

  • Geplante Fertigstellung: 1.11.2016

  • Derzeitig gültiger Artikel:

  • Bearbeiter: Thomas_Do

Solltest du dir nicht sicher sein, ob an dieser Anleitung noch gearbeitet wird, kontrolliere das Datum der letzten Änderung und entscheide, wie du weiter vorgehst.


Achtung: Insbesondere heißt das, dass dieser Artikel noch nicht fertig ist und dass wichtige Teile fehlen oder sogar falsch sein können. Bitte diesen Artikel nicht als Anleitung für Problemlösungen benutzen!

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist mit keiner aktuell unterstützten Ubuntu-Version getestet! Bitte teste diesen Artikel für eine Ubuntu-Version, welche aktuell unterstützt wird. Dazu sind die Hinweise zum Testen von Artikeln zu beachten.

logo.png BorgBackup 🇬🇧 (Borg) ist eine Software die eine sehr platzsparende und schnelle inkrementelle Archivierung ermöglicht. Alle Archive werden dabei an einem gemeinsamen Speicherort (Repository) abgelegt. Dieser kann sich sowohl auf dem lokalen System, als auch auf einem entfernten Rechner oder Laufwerk befinden. Borg hat weder eine grafische Oberfläche noch eine Konfigurationsdatei und wird allein über die Kommandozeile gesteuert. Mit Hilfe von Skripten kann das Backup aber sehr einfach automatisiert werden. Borg ist eine Weiterentwicklung (Fork) des Programms Attic.

Besondere Eigenschaften:

Technik der Deduplikation:

Borg unterscheidet sich von anderen Backupprogrammen vor allem durch die für die Deduplikation eingesetzte Technik. Hierbei werden alle Dateien in kleine Stücke (Chunks) zerlegt und mit den bereits vorhanden Chunks im Repository verglichen. Daher werden immer nur solche Daten gespeichert, die bisher noch nicht im Repository vorhanden sind. Die Deduplizierung ist bei Borg nicht auf die Dateiebene beschränkt, wie das z.B. bei Back In Time der Fall ist. Ein entscheidender Vorteil entsteht dadurch bei kleinen Änderungen an sehr großen Dateien (z.B. Abbilder von virtuellen Machinen oder Laufwerken). Diese müssen nicht insgesamt neu gespeichert werden, sondern es werden immer nur die veränderten Chunks neu abgelegt. Auch bei Verschiebung von Dateien im Dateisystem oder bei mehrfachem Vorhandensein sehr ähnlicher Daten (z.B. mehrerer virtueller Maschinen) wirkt sich diese Form der Deduplikation positiv auf den benötigten Speicherplatz aus.

Weitere Programme und Grundsätzliches ist im Artikel Datensicherung zu finden.

Installation

Voraussetzungen

Auf den zu sichernden Systemen wird python3 und optional ssh benötigt.

Paketquellen

Borg ist seit Ubuntu 16.04 Xenial Xerus in den Paketquellen. Die Installation erfolgt über die Pakete:

  • borgbackup borgbackup-doc python-llfuse-doc (universe)

Befehl zum Installieren der Pakete:

sudo apt-get install borgbackup borgbackup-doc python-llfuse-doc 

Oder mit apturl installieren, Link: borgbackup-doc python-llfuse-doc

Benutzung

Hinweis:

Borg muss nicht unbedingt mit Administratorrechten ausgeführt werden. Hat der Nutzer jedoch kein Schreibrecht auf den Speicherort oder kein Leserecht für alle zu sichernden Dateien, muss den folgenden Befehlen ggf. ein sudo vorangestellt werden.

Initialisierung

Bevor Backups in Archiven gespeichert werden können, muss ein Repository angelegt werden:

mkdir REPO_VERZEICHNISPFAD
borg init [OPTIONEN] REPO_VERZEICHNISPFAD 

REPO_VERZEICHNISPFAD gibt dabei den Pfad zu einem leeren Verzeichnis an, in dem das Repository angelegt werden soll. Zu möglichen Optionen siehe nachfolgende Tabelle:

Wichtige Optionen für den init-Befehl
-h oder --help Ausgabe eines Hilfetextes
-v oder --verbose Ausführlichere Ausgabe von Meldungen
-e oder --encryption {none,keyfile,repokey} Wählt die Art der Verschlüsselung {keine, lokale Schlüsseldatei, Schlüsseldatei im Repository}

Standard ist eine Verschlüsselung mit Ablage der Schlüsseldatei im Repository (repokey). Diese Datei wird dann über eine Passphrase gesichert. Befindet sich das Repository auf einem entfernten Rechner und will man die Sicherheit erhöhen, kann man die Schlüsseldatei auch im Verzeichnis '~.config/borg/keys' auf dem lokalen Rechner speichern (keyfile). Dann sollte man die Schlüsseldatei aber unbedingt zusätzlich sichern. ❗ Sonst kann bei einem Datenverlust des lokalen Rechners das Archiv nicht wieder entschlüsselt werden.

Soll das Repository auf einem entfernten Rechner mittels ssh angelegt werden, muss Borg vorher auch auf dem Zielrechner installiert werden. Danach kann alternativ folgender Befehl verwendet werden:

mkdir REPO_VERZEICHNISPFAD
borg init [OPTIONEN] ssh://USER@HOSTNAME:PORT//REPO_VERZEICHNISPFAD 

Wenn ssh mit bestimmten Optionen aufgerufen werden soll, kann die Umgebungsvariable BORG_RSH verwendet werden. Die Angabe des Pfads zu einer Schlüsseldatei erfolgt z.B. so:

export BORG_RSH='ssh -i /PFAD/SCHLÜSSELDATEI' 

Borg verwendet dann diesen Befehl statt ssh.

Hinweis:

Sollte eine Installation von Borg auf dem Zielrechner nicht möglich sein, kann das Zielverzeichnis alternativ zuvor auch mittels sshfs eingebunden werden. Dann kann Borg auf dieses Verzeichnis wie auf ein lokales Verzeichnis zugreifen.

Beispiel: Der Benutzer "peter" möchte auf seiner externen Festplatte "HD_Backup" ein Repository "borgbackups" anlegen. In diesem Fall sieht die Befehlszeile so aus:

mkdir /media/peter/HD_Backup/borgbackups
borg init /media/peter/HD_Backup/borgbackups 

Nach Eingabe der Befehlszeile wird die Passphrase abgefragt, die zur Verschlüsselung verwendet werden soll. Da im Beispiel keine gesonderte Option angegeben wurde, wird die Standardoption "repokey" verwendet und die Schlüsseldatei im Repository gespeichert.

Anlegen von Archiven

Achtung!

Bevor Backup-Archive erstellt werden, muss sichergestellt werden, dass genügend freier Speicherplatz im Repository-Verzeichnis vorhanden ist. Auch im Homeverzeichnis unter ~/.cache sollten mehrere Gigabyte für die Indexierung frei sein.

Archive werden mittels "create" angelegt. Die Liste der Verzeichnisse, die gesichert werden sollen, wird am Ende der Befehlszeile durch Leerzeichen getrennt angegeben.

borg create [OPTIONEN] REPO_VERZEICHNISPFAD::ARCHIVNAME VERZEICHNISPFAD_1 [VERZEICHNISPFAD_2 ...] 

Für das Erstellen von Archiven über ssh muss alternativ folgender Befehl verwendet werden:

borg create [OPTIONEN]  ssh://USER@HOSTNAME:PORT//REPO_VERZEICHNISPFAD::ARCHIVNAME VERZEICHNISPFAD_1 [VERZEICHNISPFAD_2 ...] 

Zu möglichen Optionen für das Anlegen von Archiven siehe nachfolgende Tabelle:

Wichtige Optionen für den create-Befehl
-h oder --help Ausgabe eines Hilfetextes
-v oder --verbose Ausführlichere Ausgabe von Meldungen
-s oder --stats Ausgabe von Statistiken zum erzeugten Archiv
-p oder --progress Ausgabe einer Fortschrittsanzeige
-e oder --exclude MUSTER Ein bestimmtes Muster bei der Sicherung ausschließen, z.B. "*.tmp"
--exclude-caches Cache-Verzeichnisse (mit dem CACHEDIR.TAG) ausschließen
-x oder --one-file-system Im gleichen Dateisystem bleiben und Einhängepunkte ignorieren
-C oder --compression KOMPRESSION Kompressionsalgorithmus und Stufe wählen (siehe nachfolgende Tabelle)

Die in Borg implementierten Kompressionsalgorithmen unterscheiden sich in Bezug auf Geschwindigkeit und Kompressionsgrad. lz4 ist sehr schnell, erreicht aber nur eine mittelhohe Kompression, zlib erreicht eine mittlere Geschwindigkeit und Kompression, während lzma am langsamsten ist aber den höchsten Kompressionsgrad ermöglicht.

Mögliche Werte für die Kompressions-Option (-C oder --compression)
none Keine Kompression (Standard)
lz4 lz4
zlib zlib Stufe 6
zlib,N zlib Stufe N. N von 0 bis 9, z.B. „zlib,4“
lzma lzma Stufe 6
lzma,N lzma Stufe N. N von 0 bis 9, z.B. „lzma,4“

Beispiel: Der Benutzer "peter" hat auf einer externen Festplatte ein Repository "borgbackups" erstellt und will den Bilder- und den Videoordner seines Homeverzeichnisses in ein Archiv "MeineMedien" sichern. Die Kompression soll mit lzma der Stufe 4 erfolgen. In diesem Fall sieht die Befehlszeile so aus:

borg create -C lzma,4 /media/peter/HD_Backup/borgbackups::MeineMedien ~/Bilder ~/Videos 

Wiederherstellen von Daten

Die Wiederherstellung von Daten kann auf zwei unterschiedlichen Wegen erfolgen. Entweder werden die gesicherten Dateien und Verzeichnisse direkt ins Dateisystem zurückkopiert oder das gesamte Repository bzw. ein einzelnes Archiv wird mittels Fuse lesend ins Dateisystem eingebunden. In diesen Fall kann das Backup zunächst mit einem Dateimanager durchsucht und einzelne Dateien oder Verzeichnisse anschließend an andere Orte kopiert werden.

Zurückspielen von Dateien und Ordnern

Das Zurückspielen von Archiven wird mittels "extract" vorgenommen. Dabei wird immer das aktuelle Verzeichnis als Ziel verwendet.

cd ZIEL_VERZEICHNISPFAD
borg extract [OPTIONEN] REPO_VERZEICHNISPFAD::ARCHIVNAME [VERZEICHNISPFAD_1 VERZEICHNISPFAD_2 ...] 

Werden am Ende der Befehlszeile keine Verzeichnisse angegeben, wird das gesamte Archiv extrahiert.

Für das Extrahieren von Archiven über ssh müssen alternativ folgende Befehle verwendet werden:

cd ZIEL_VERZEICHNISPFAD
borg extract [OPTIONEN] ssh://USER@HOSTNAME:PORT//REPO_VERZEICHNISPFAD::ARCHIVNAME [VERZEICHNISPFAD_1 VERZEICHNISPFAD_2 ...] 

Zu möglichen Optionen für das Extrahieren von Archiven siehe nachfolgende Tabelle:

Wichtige Optionen für den extract-Befehl
-h oder --help Ausgabe eines Hilfetextes
-v oder --verbose Ausführlichere Ausgabe von Meldungen
-e oder --exclude MUSTER Ein bestimmtes Muster beim Zurückspielen ausschließen, z.B. "*.vdi"
-n oder --dry-run Testlauf ohne Datein zu schreiben

Beispiel: Das Repository "borgbackups" des Benutzers "peter" liegt auf einer externen Festplatte. Das darin befindliche Verzeichnis "home/peter/Videos" im Archiv "MeineMedien" soll in das Verzeichnis "Wiederhergestellt" im Homeverzeichnis des Benutzers kopiert werden. In diesem Fall sieht die Befehlszeile so aus:

mkdir ~/Wiederhergestellt
cd ~/Wiederhergestellt
borg extract /media/peter/HD_Backup/borgbackups::MeineMedien home/peter/Videos 

Einhängen der Sicherung mit Fuse

Das Einhängen von Archiven erfolgt mittels "mount". Es muss zuvor ein entsprechendes Verzeichnis angelegt werden.

mkdir ZIEL_VERZEICHNISPFAD
borg mount [OPTIONEN] REPO_VERZEICHNISPFAD[::ARCHIVNAME] ZIEL_VERZEICHNISPFAD 

Wird kein Archivname angegeben, wird das gesamte Repository eingehängt. Nach dem Einhängen kann auf das Backup lesend zugegriffen werden. Zu möglichen Optionen für das Einhängen von Archiven siehe nachfolgende Tabelle:

Wichtige Optionen für den mount-Befehl
-h oder --help Ausgabe eines Hilfetextes
-v oder --verbose Ausführlichere Ausgabe von Meldungen
-f oder --foreground Prozess bleibt im Vordergrund. Das Backup wird ausgehängt, sobald der Prozess beendet wird.

Wird "mount" ohne die Option "--foreground" aufgerufen, muss das Dateisystem wieder manuell ausgehängt werden:

fusermount -u ZIEL_VERZEICHNISPFAD 

Für das Einhängen von Archiven über ssh müssen alternativ folgende Befehle verwendet werden:

mkdir ZIEL_VERZEICHNISPFAD
borg mount [OPTIONEN] ssh://USER@HOSTNAME:PORT//REPO_VERZEICHNISPFAD[::ARCHIVNAME] ZIEL_VERZEICHNISPFAD 

Beispiel: Das Repository "borgbackups" des Benutzers "peter" liegt auf einer externen Festplatte. Das darin befindliche Archiv "MeineMedien" soll in das Verzeichnis "Sicherung" im Homeverzeichnis eingehängt werden. In diesem Fall sehen die Befehlszeilen so aus:

mkdir ~/Sicherung
borg mount /media/peter/HD_Backup/borgbackups::MeineMedien ~/Sicherung
fusermount -u ~/Sicherung # Nach Beendigung des Zugriffs 

Automatisches Löschen von Archiven

Eine vom Alter der Archive abhängige automatische Löschung kann mittels "prune" vorgenommen werden.

borg prune [OPTIONEN] REPO_VERZEICHNISPFAD 

Welche Archive nicht gelöscht werden sollen, wird mit Hilfe der Optionen festgelegt. ❗ Um nicht unbeabsichtigt Archive zu löschen, empfiehlt sich zunächst einen Testlauf mit den Optionen "--dry-run -v --list" vorzunehmen.

Für das automatische Löschen von Archiven über ssh muss alternativ folgende Befehl verwendet werden:

borg prune [OPTIONEN] ssh://USER@HOSTNAME:PORT//REPO_VERZEICHNISPFAD 

Zu möglichen Optionen für das automatische Löschen von Archiven siehe nachfolgende Tabelle:

Wichtige Optionen für den prune-Befehl
-h oder --help Ausgabe eines Hilfetextes
-v oder --verbose Ausführlichere Ausgabe von Meldungen
-n oder --dry-run Testlauf ohne Archive zu löschen
--list Ausgabe einer Liste welche Archive gelöscht/behalten werden
--keep-within=NZ Behalte alle Archive im Zeitintervall NZ. N ist dabei eine positive Ganzzahl und Z eine Abkürzung für die Zeiteinheit: "H" Stunden, "d" Tage, "w" Wochen, "m" Monate und "y" Jahre. Also z.B. "7m" für sieben Monate.
-H=N oder --keep-hourly=N Behalte zusätzlich je ein Archiv der letzten N Stunden
-d=N oder --keep-daily=N Behalte zusätzlich je ein Archiv der letzten N Tage
-w=N oder --keep-weekly=N Behalte zusätzlich je ein Archiv der letzten N Wochen
-m=N oder --keep-monthly=N Behalte zusätzlich je ein Archiv der letzten N Monate
-y=N oder --keep-yearly=N Behalte zusätzlich je ein Archiv der letzten N Jahre

Beispiel: Das Repository "borgbackups" des Benutzers "peter" liegt auf einer externen Festplatte. Alle Archive, die innerhalb des letzen Tages erstellt wurden sollen behalten werden. Außerdem sollen zusätzlich die aktuellsten Sicherungen der letzten sieben Tage, der letzen vier Wochen und der letzten zwölf Monate behalten werden. Es wird zunächst ein Testlauf durchgeführt:

borg prune --dry-run -v --list --keep-within=1d --keep-daily=7 --keep-weekly=4 --keep-monthly=12 /media/peter/HD_Backup/borgbackups 

Um die Löschung tatsächlich vorzunehmen, muss der o.g. Befehl ohne die Option "--dry-run" ausgeführt werden.

Weitere Borg-Befehle

Borg Befehlsübersicht
rename Umbenennen eines Archivs

Skript für die erleichterte Benutzung von Borg

Diese Revision wurde am 4. Oktober 2016 11:04 von Thomas_Do erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Backup, Datensicherung