Managed Nextcloud als Backup-Speicher unter Linux verwenden
Um im Ernstfall Daten aus einer Sicherungskopie wiederherstellen zu können, ist es erforderlich, in regelmäßigen Zeitabständen Datensicherungen zu erstellen. Als Backup-Ziel bietet sich hier z.B. das hosting.de-Produkt “Managed Nextcloud” an. Diese Cloud steht als Speichermedium automatisch immer dann zur Verfügung, wenn eine Internetverbindung besteht, wodurch auch die Anforderungen an ein Offsite-Backup erfüllt werden. In diesem Artikel wird gezeigt, wie man mit Hilfe der beiden Programme Restic und Rclone verschlüsselte Backups in einer Managed Nextcloud ablegen kann.
Rclone
Das Programm Rclone bildet die Schnittstelle zwischen Restic und verschiedenen Cloud-Anbietern - in unserem Fall einer Nextcloud - und muss vorab eingerichtet werden.
Rclone sollte nicht über die Paketverwaltung der Linux-Distribution installiert werden. Um eine aktuelle Version installieren zu können, muss man ein aktuelles Paket für die verwendete Linux-Distribution von der Rclone Webseite herunterladen und installieren.
Rclone bringt einen Assisstenten zur Konfiguration mit, welcher mit rclone config
gestartet werden kann.
demo@box:~$ rclone config
2019/11/22 14:04:13 NOTICE: Config file "/home/demo/.config/rclone/rclone.conf" not found - using defaults
No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config
n/s/q>
Tippen Sie bitte n
und anschließend Enter, um einen neuen Zugang zu hinterlegen, und vergeben Sie bitte einen Namen hierfür, wie z.B. “Nextcloud-Backup”:
n/s/q> n
name> Nextcloud-Backup
Im nächsten Schritt muss der Typ des Speichers konfiguriert werden. Wählen Sie hier bitte die Option “WebDav”, indem Sie eine 31
eingeben:
Type of storage to configure.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
1 / 1Fichier
\ "fichier"
2 / Alias for an existing remote
\ "alias"
3 / Amazon Drive
\ "amazon cloud drive"
4 / Amazon S3 Compliant Storage Provider (AWS, Alibaba, Ceph, Digital Ocean, Dreamhost, IBM COS, Minio, etc)
\ "s3"
5 / Backblaze B2
\ "b2"
6 / Box
\ "box"
7 / Cache a remote
\ "cache"
8 / Citrix Sharefile
\ "sharefile"
9 / Dropbox
\ "dropbox"
10 / Encrypt/Decrypt a remote
\ "crypt"
11 / FTP Connection
\ "ftp"
12 / Google Cloud Storage (this is not Google Drive)
\ "google cloud storage"
13 / Google Drive
\ "drive"
14 / Google Photos
\ "google photos"
15 / Hubic
\ "hubic"
16 / JottaCloud
\ "jottacloud"
17 / Koofr
\ "koofr"
18 / Local Disk
\ "local"
19 / Mail.ru Cloud
\ "mailru"
20 / Mega
\ "mega"
21 / Microsoft Azure Blob Storage
\ "azureblob"
22 / Microsoft OneDrive
\ "onedrive"
23 / OpenDrive
\ "opendrive"
24 / Openstack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
\ "swift"
25 / Pcloud
\ "pcloud"
26 / Put.io
\ "putio"
27 / QingCloud Object Storage
\ "qingstor"
28 / SSH/SFTP Connection
\ "sftp"
29 / Transparently chunk/split large files
\ "chunker"
30 / Union merges the contents of several remotes
\ "union"
31 / Webdav
\ "webdav"
32 / Yandex Disk
\ "yandex"
33 / http Connection
\ "http"
34 / premiumize.me
\ "premiumizeme"
Storage> 31
** See help for webdav backend at: https://rclone.org/webdav/ **
URL of http host to connect to
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
1 / Connect to example.com
\ "https://example.com"
url>
Sie werden nun nach der URL Ihrer Nextcloud gefragt. Geben Sie hier bitte https://cloud.mustermann-domain.de/remote.php/webdav/
ein, wobei Sie bitte cloud.mustermann-domain.de
durch Ihren Domainnamen ersetzen. Weiterhin werden Sie nach dem “Vendor” gefragt. Wählen Sie bitte 1
für Nextcloud:
url> https://cloud.mustermann-domain.de/remote.php/webdav/
Name of the Webdav site/service/software you are using
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
1 / Nextcloud
\ "nextcloud"
2 / Owncloud
\ "owncloud"
3 / Sharepoint
\ "sharepoint"
4 / Other site/service or software
\ "other"
vendor> 1
Im nächsten Schritt müssen Sie die Zugangsdaten für die Cloud, also Benutzernamen und Passwort, in Rclone hinterlegen.
User name
Enter a string value. Press Enter for the default ("").
user> max
Password.
y) Yes type in my own password
g) Generate random password
n) No leave this optional password blank
y/g/n> y
Enter the password:
password:
Confirm the password:
password:
Ein “Bearer token” wird nicht benötigt.
Bearer token instead of user/pass (eg a Macaroon)
Enter a string value. Press Enter for the default ("").
bearer_token>
Überspringen Sie bitte die erweiterte Konfiguration durch Eingabe von n
:
Edit advanced config? (y/n)
y) Yes
n) No
y/n> n
Abschließend wird nochmals eine Übersicht der Konfiguration angezeigt.
Remote config
--------------------
[Nextcloud-Backup]
type = webdav
url = https://cloud.mustermann-domain.de/
vendor = nextcloud
user = max
pass = *** ENCRYPTED ***
--------------------
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d>
Bestätigen Sie die Konfiguration durch Eingabe von y
und verlassen Sie den Assistenten durch Eingabe von q
.
y/e/d> y
Current remotes:
Name Type
==== ====
Nextcloud-Backup webdav
e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> q
demo@box:~$
Restic
Das Backup-Programm Restic arbeitet deutlich effizienter als veraltete Backup-Lösungen wie “dirvish”, “rdiff-backup” oder “duplicity”. Nennenswerte Vorteile von Restic sind:
- Es bietet die Möglichkeit, Backups vor der Übertragung mit einem AES-256 Algorithmus zu verschlüsseln.
- Zu sichernde Daten werden bei jedem Backup in Chunks mit Hilfe eines Rolling Hash-Algorithmus zerteilt. Chunks aus unterschiedlichen Backup-Revisionen müssen somit nur einmal gespeichert werden.
- Es wird nicht zwischen inkrementellen und vollen Backups unterschieden. Die Backups können somit unabhängig voneinander wieder gelöscht werden.
- Backups von mehreren Rechnern können in einem Repository gespeichert werden und die Deduplizierung funktioniert über alle Rechner hinweg.
Die Installation kann in den meisten Linux-Distributionen über die Paketverwaltung geschehen. Alternativ kann auch ein offizielles Binary heruntergeladen und verwendet werden.
Ein Repository anlegen
Im ersten Schritt muss das Repository mit Restic angelegt werden. Dabei wird auch das Passwort, mit dem die Backups verschlüsselt werden, festgelegt:
restic -r rclone:Nextcloud-Backup:MeinBackup init
Die Ausgabe danach sieht dann z.B. so aus:
→ restic -r rclone:Nextcloud-Backup:MeinBackup init
enter password for new repository:
enter password again:
created restic repository 9415403f30 at rclone:Nextcloud-Backup:MeinBackup
Please note that knowledge of your password is required to access
the repository. Losing your password means that your data is
irrecoverably lost.
Das Backup wird in diesem Beispiel im Verzeichnis MeinBackup
in der Cloud gespeichert.
Ein Backup erstellen
Ein Backup des Verzeichnisses /home/max/
kann dann mit dem Befehl
restic -r rclone:Nextcloud-Backup:MeinBackup backup /home/max/
erstellt werden. Die Ausgabe kann z.B. so aussehen:
→ restic -r rclone:Nextcloud-Backup:MeinBackup backup /home/max/
enter password for repository:
repository 9415403f opened successfully, password is correct
Files: 37 new, 0 changed, 0 unmodified
Dirs: 2 new, 0 changed, 0 unmodified
Added to the repo: 20.797 MiB
processed 37 files, 21.336 MiB in 0:19
snapshot df8ec851 saved
Praktische Optionen beim Backup sind:
--exclude-file
- mit dieser Option kann eine Textdatei angegeben werden, aus der Dateien und Verzeichnisse gelesen werden, die vom Backup ausgeschlossen werden sollen.--cache-dir
- mit dieser Option kann ein Verzeichnis angegeben werden, welches lokal von Restic als Cache benutzt wird.--exclude-caches
- mit dieser Option werden Verzeichnisse vom Backup ausgeschlossen, die eineCACHEDIR.TAG
-Datei entsprechend der “Cache Directory Tagging Specification” enthalten.
Vorhandene Backups anzeigen
Die vorhandenen Backups bzw. im Restic-Jargon “Snapshots” können mit dem Befehl
restic -r rclone:Nextcloud-Backup:MeinBackup snapshots
angezeigt werden.
Ein Backup zurückspielen
Anhand der ID des Snapshots kann ein Backup zurückgespielt werden. Das geschieht mit dem Befehl
restic -r rclone:Nextcloud-Backup:MeinBackup restore 79766175 --target /tmp/restore-work
wobei /tmp/restore-work
das Verzeichnis ist, worin die wiederhergestellten Dateien abgelegt werden.
Restic bietet auch die Möglichkeit, ein Backup zu mounten. Weitere Details dazu entnehmen Sie bitte der Dokumentation zu Restic.
Restic bietet noch eine Reihe weiterer Optionen, wie z.B. Funktionen, um alte Backups wieder zu löschen. Hierzu empfehlen wir, die Dokumentation von Restic zu konsultieren.
Auf Servern lassen sich die Backups mit Hilfe von cron und bash-Skripten auch automatisieren.