BorgBackup (Debian)

Aus MattWiki

Dieser Artikel beschäftigt sich damit, wie man in Debian mit BorgBackup Backups erstellt und was es zu beachten gibt.

Die vorliegenden Informationen beziehen sich auf BorgBackup 1.2.4 Client- und Serverseitig und Debian 12.10 als Betriebssystem.

Quellen:

Installation

# apt-get install borgbackup

Sudo und Superuser (Debian) nicht vergessen

Backup Repository lokal initiieren

Zunächst muss ein Repository initiiert werden, z. B. auf der lokalen Maschine:

borg init --encryption=none|repokey|keyfile /path/to/repo

Defaultmäßig wird --encryption=repokey verwendet. Dabei wird das Keyfile mit einem Passwort versehen und direkt im Repository selbst gespeichert. Dadurch ist für eine Wiederherstellung nur das Passwort für das Keyfile notwendig. Trotzdem sollte aus Sicherheitsgründen das Keyfile separat gesichert werden.

Mit --encryption=keyfile wird das Keyfile auf der lokalen Maschine im Verzeichnis ~/.config/borg/keys/ gespeichert und ebenso mit einem Passwort gesichert wird.

Um das Keyfile zu sichern vgl. Abschnitt Keyfile Export und Import

Die Verschlüsselung kann mit --encryption=none deaktiviert werden.

Initiierung eines Repository auf einer entfernten Maschine:

Backup Repository Remote initiieren

Können auf zwei Arten angelegt werden:

sshfs

oder mit Borg auf dem Remote-Repository installiert.

Beispiel für absoluten Pfad auf der Remote-Maschine:

borg init ssh://server.domain.tld:port/absolute_path/to/repo
borg init ssh://user@server.domain.tld:port/absolute_path/to/repo

Beispiel für relativen Pfad auf der Remote-Maschine:

borg init ssh://server.domain.tld:port/./relative_path/to/repo

Keyfile Export und Import

Wenn ein Repository verschlüsselt ist, wird ein Keyfile erzeugt, das mit einem Passwort verschlüsselt ist.

Wenn das Repository mit --encryption=repokey verschlüsselt ist, sollte das Keyfile aus Sicherheitsgründen separat gesichert werden.

Wenn das Repository mit --encryption=keyfile verschlüsselt ist, muss Keyfile separat gesicht werden.

Export Keyfile:

borg key export /path/to/repo [/export/to/path]

Wenn kein Exportpfad angegeben wird, wird der Inhalt vom Keyfile auf der Konsole ausgegeben.

Der Inhalt entspricht dem Inhalt des Keyfiles, das bei --encryption=keyfile auf der lokalen Maschine im Verzeichnis ~/.config/borg/keys/ gespeichert wird.

Export für Ausdruck auf Papier:

borg key export --paper /path/to/repo /export/to/path

Export als QR Code in eine HTML Datei zum Ausdrucken:

borg key export --qr-html /path/to/repo /export/to/path

Import Keyfile:

borg key import /path/to/repo /import/from/path

Interaktiver Import von Papier:

borg key import --paper /path/to/repo /import/from/path

Backup erstellen

Beim erstellen eines Backups wird ein neues Archiv in einem Repository erstellt. Der Archivname und die zu archivierenden Daten müssen angegeben werden:

borg create -s -v --list /path/to/repo::my-files \
     ~/Documents                                 \
     ~/src                                       \
     --exclude '*.pyc'
borg create -s --progress /path/to/repo::my-files \
     ~/Documents                                  \
     ~/src                                        \
     --exclude /path1                             \
     --exclude '*.pyc'

-s Stats

--progress Aktuellen Fortschritt mit anzeigen

--list Liste der Dateien ausgeben

Sinnvoll bei großen Uploads:

To limit upload (i.e. borg create) bandwidth, use the --upload-ratelimit RATE in KiB/s

Informationen über Backupinhalte

Details über ein lokales Repository oder Archiv auflisten.

borg info path/to/repo                         # Show repo details (paths, size)
borg info path/to/repo::archive                # Show archive details (time, paths, size)

Details über ein remote Repository oder Archiv auflisten. Dabei kann man eine relative oder absolute Pfadangabe benutzen. Relative Pfadangaben sind relativ zum Login-Pfad des verwendeten Users.

Beispiel für eine relative Pfadangabe:

borg info ssh://user@server:port/./path/to/repo::archive   # Show remote repo with relative path 
                                                             # archive details (time, paths, size)

Beispiel für eine absolute Pfadangabe:

borg info ssh://user@server:port/path/to/repo::archive     # Show remote repo with absolute path 
                                                             # archive details (time, paths, size)

Inhalt von lokalem Repository oder Archiv auflisten:

borg list path/to/repo                         # List archives in local repository
borg list path/to/repo::archive                # List contents of archive in local repository

Inhalt von Remote-Repository oder Archiv auflisten:

borg list ssh://user@server:port/./path/to/repo          # List contents of remote repository via SSH
borg list ssh://user@server:port/./path/to/repo::archive # List contents of remote repository archive

Repository oder Archiv ins Dateisystem mounten

Ein Borg Repository oder ein einzelnes Archiv kann ins Dateisystem gemountet werden.

Dies ermöglicht es, komfortabel in einem einzelnen Archiv oder in mehreren Archiven eines Repositories mittels CLI oder Linux Dateiverwaltung (Z.B. GNOME Dateien, Midnight Commander) zu navigieren und einzelne Dateien oder Verzeichnisse wiederherzustellen.

Verzeichnis erstellen:

mkdir ~/borgmount

Gesamtes Repository mounten:

borg mount /path/to/repo ~/borgmount

Wahlweise einzelnes Archiv mounten:

borg mount /path/to/repo::archive

Unmounten:

borg umount ~/borgmount

Datei in mehreren Archiven suchen

Eine Datei kann in mehreren Archiven eines Repositories gesucht werden, indem man das Repository selbst ins Dateisystem mountet, vgl. #Repository oder Archiv ins Dateisystem mounten

Anschließend kann man mit find -iwholename in allen Archiven des Repositories suchen:

cd ~/borgmount
find -name "*file*"
find -iname "*file*"
find -iwholename "*dir/file*"      

Wenn man nach Unterverzeichnissen oder einer Datei in einem Unterverzeichnis sucht, muss man -iwholename statt -iname nutzen, damit der / für die Verzeichnisangabe nicht als Wildcard / Pattern interpretiert wird.

Backup wiederherstellen

Backup wiederherstellen aus lokalem repository (remote Respository analog oben) ins aktuelle Verzeichnis.

borg extract [options] /path/to/repo::archive [paths]

Wenn [paths] nicht angegeben wird, wird das Backup vollständig wiederhergestellt.

Optionen:

--list listet Dateien und Verzeichnisse auf

--progress zeigt Fortschritt an

-n oder --dry-run führt eine Wiederherstellung nicht aus, zeigt nur den Output


Beispiel:

borg extract --list --progress /path/to/repo::archive dir1/file1