Hier zeige ich euch, wie ihr eure Cloud (in meinem Fall Nextcloud) auf euren Raspberry Pi (an angeschlossenen USB Festplatten) backupen könnt.
Unser Ziel ist es, dass wir unseren Raspberry Pi starten und dieser sich alle Daten unserer Cloud downloadet. So haben wir immer ein “offline Backup”.
Derzeit unterstützt rclone folgende Dienste:
- 1Fichier
- Amazon Drive
- Amazon S3
- Backblaze B2
- Box
- Citrix ShareFile
- Dropbox
- FTP
- Google Cloud Storage
- Google Drive
- Google Photos
- HTTP
- Mail.ru Cloud
- Mega
- Microsoft Azure Blob Storage
- Microsoft OneDrive
- OpenDrive
- OpenStack Swift
- pCloud
- premiumize.me
- put.io
- QingStor
- Seafile
- SFTP
- SugarSync
- Tardigrade
- WebDAV
Die komplette Liste aller Dienste findet ihr hier.
1. rclone installieren
Im ersten Schritt downloaden und installieren wir rclone. Dazu gebt ihr folgenden Befehl ein:
curl https://rclone.org/install.sh | sudo bash
2. Nextcloud WebDAV URL ermitteln
In diesem Schritt suchen wir uns unsere Nextcloud WebDAV URL heraus. Diesen Schritt benötigt ihr nur, wenn ihr diese nicht kennt.
Um die URL zu sehen geht ihr im Browser auf eure Nextcloud Instanz und dann auf “Dateien”.
Anschließend klickt ihr ganz unten auf den Button “Einstellungen”.
Nun seht ihr eure Nextcloud WebDAV URL.
Diese benötigen wir für den nächsten Schritt. Also lasst dieses Fenster offen.
Die URL ist folgendermaßen aufgebaut:
https://<euredomain>.de/remote.php/dav/files/<Nutzername>/
3. rclone per Konsole konfigurieren
Dazu gebt ihr folgenden Befehl ein:
rclone config
Nun solltet ihr folgendes sehen:
pi@raspberrypi:~ $ rclone config No remotes found - make a new one n) New remote s) Set configuration password q) Quit config n/s/q>
Nun müsst ihr 2 Quellen konfigurieren. Eine Quelle ist unsere Cloud (Nextcloud) und die andere ist unser lokaler Ordner (externe Festplatte).
3.1 rclone für Nextcloud konfigurieren
Nun drückt ihr “n” für “New remote”.
Anschließend gebt ihr einen Namen an. Ich nenne es hier “nextcloud”.
name> nextcloud
Anschließend bekommt ihr eine Reihe von Diensten angezeigt. Ziemlich unten solltet ihr Webdav finden. Bei mir die Nummer 34.
33 / Union merges the contents of several upstream fs \ "union" 34 / Webdav \ "webdav" 35 / Yandex Disk \ "yandex" .. .. Storage> 34
Also geben wir “34” ein.
Nun werden wir nach unserer WebDAV URL gefragt. Hier gebt ihr die URL ein, welche wir eben im Nextcloud Webinterface gesehen haben.
url> https://<euredomain>.de/remote.php/dav/files/<Nutzername>/
Anschließend wählt ihr “1” für Nextcloud.
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
Nun werdet ihr nach eurem Accountnamen gefragt. Gebt diesen nun ein.
User name Enter a string value. Press Enter for the default (""). user> admin
Jetzt gebt ihr “y” ein.
Password. y) Yes type in my own password g) Generate random password n) No leave this optional password blank (default) y/g/n> y
Hier gebt ihr euer Passwort ein.
Enter the password: password: Confirm the password: password:
Nun könnt ihr noch ein Token eingeben. Dies benötigen wir nicht und drücken einfach “ENTER”.
Die erweiterte Konfiguration benötigen wir auch nicht und geben daher “n” ein.
Edit advanced config? (y/n) y) Yes n) No (default) y/n> n
rclone fasst nun alle Eingaben zusammen. So sieht es bei mir aus:
Remote config -------------------- [nextcloud] type = webdav url = https://<euredomain>.de/remote.php/dav/files/admin/ vendor = nextcloud user = admin pass = *** ENCRYPTED *** -------------------- y) Yes this is OK (default) e) Edit this remote d) Delete this remote y/e/d> y
Wenn alles stimmt könnt ihr nun “y” eingeben.
3.2 rclone für lokales Verzeichnis einrichten
Nun erstellen wir noch die Konfiguration für unser lokales Verzeichnis.
Dazu gebt ihr wieder “n” ein.
Current remotes: Name Type ==== ==== nextcloud 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> n
Dies nenne ich “lokal”.
name> lokal
Nun müsst ihr “Local Disk” suchen. Bei mir die Nummer 19.
18 / Koofr \ "koofr" 19 / Local Disk \ "local" 20 / Mail.ru Cloud \ "mailru" .. .. Storage> 19
Bei der nachfolgenden Frage drückt ihr einfach “ENTER”.
Disable UNC (long path names) conversion on Windows Enter a string value. Press Enter for the default (""). Choose a number from below, or type in your own value 1 / Disables long file names \ "true" nounc>
Eine erweiterte Konfiguration benötigen wir hier nicht.
Edit advanced config? (y/n) y) Yes n) No (default) y/n> n
Die Zusammenfassung könnt ihr mit “y” bestätigen.
Remote config -------------------- [lokal] type = local -------------------- y) Yes this is OK (default) e) Edit this remote d) Delete this remote y/e/d> y
Nun solltet ihr 2 Quellen eingetragen haben.
Current remotes: Name Type ==== ==== lokal local nextcloud webdav
4. rclone Konfiguration testen
4.1 Nextcloud Konfiguration testen
Ihr könnt eure rclone Konfiguration testen, indem ihr folgenden Befehl eingebt:
rclone ls nextcloud:
Nun solltet ihr eine Übersicht eurer Nextcloud sehen:
pi@raspberrypi:~ $ rclone ls nextcloud: 5748719 Nextcloud Manual.pdf 3963036 Nextcloud intro.mp4 50598 Nextcloud.png 791921 Reasons to use Nextcloud.pdf 593508 Photos/Birdie.jpg 457744 Photos/Frog.jpg 474653 Photos/Gorilla.jpg 2170375 Photos/Library.jpg 797325 Photos/Nextcloud community.jpg 150 Photos/Readme.md 567689 Photos/Steps.jpg 167989 Photos/Toucan.jpg 427030 Photos/Vineyard.jpg 1095 Documents/Example.md 374008 Documents/Nextcloud flyer.pdf 136 Documents/Readme.md 25150 Documents/Welcome to Nextcloud Hub.docx
Für mehr Übersicht könnt ihr auch folgenden Befehl eingeben:
pi@raspberrypi:~ $ rclone tree nextcloud: / ├── Documents │ ├── Example.md │ ├── Nextcloud flyer.pdf │ ├── Readme.md │ └── Welcome to Nextcloud Hub.docx ├── Nextcloud Manual.pdf ├── Nextcloud intro.mp4 ├── Nextcloud.png ├── Photos │ ├── Birdie.jpg │ ├── Frog.jpg │ ├── Gorilla.jpg │ ├── Library.jpg │ ├── Nextcloud community.jpg │ ├── Readme.md │ ├── Steps.jpg │ ├── Toucan.jpg │ └── Vineyard.jpg └── Reasons to use Nextcloud.pdf 2 directories, 17 files
Ihr könnt euch auch beispielsweise nur den Ordner “Photos” anzeigen lassen:
pi@raspberrypi:~ $ rclone ls nextcloud:Photos 593508 Birdie.jpg 457744 Frog.jpg 474653 Gorilla.jpg 2170375 Library.jpg 797325 Nextcloud community.jpg 150 Readme.md 567689 Steps.jpg 167989 Toucan.jpg 427030 Vineyard.jpg
4.2 Lokale Konfiguration testen
Nun können wir auch unsere lokale Konfiguration testen. Mein Backup soll später auf meine externe Festplatte gespeichert werden. Mein Dateipfad lautet:
/media/pi/KINGSTON/Backup
Diesen Pfad werde ich nun mit rclone testen. Zu Testzwecken habe ich in dem Ordner eine leere Datei namens “hallo” erstellt.
pi@raspberrypi:~ $ rclone ls lokal:/media/pi/KINGSTON/Backup 0 hallo
5. rclone Funktionsübersicht
Hier eine Übersicht der wichtigsten Programmfunktionen
Auf der offiziellen Herstellerhomepage könnt ihr euch alle Funktionen im Detail anschauen.
Dies sind die beiden wichtigsten Funktionen für unser Vorhaben.
rclone copy - Copy files from source to dest, skipping already copied. rclone sync - Make source and dest identical, modifying destination only.
- rclone copy
- Hier werden alle Dateien von der Quelle ins Ziel kopiert. Bereits existierende Dateien bleiben unverändert. Es wird also keine Dateien gelöscht, die bereits im Ziel vorhanden sind und nicht mehr in der Quelle.
- rclone sync
- Hier werden alle Dateien von der Quelle ins Ziel kopiert. Der Unterschied ist jedoch, dass auch Dateien im Ziel gelöscht werden, wenn diese nicht mehr in der Quelle existieren. Sync sorgt also dafür, dass Quelle und Ziel 1:1 identisch sind, während bei copy mehr Dateien im Ziel sind als in der Quelle vorhanden.
6. rclone Synchronisation starten
Wir wählen für unsere Zwecke die Funktion “copy”. Hier der Funktionsaufruf:
rclone copy source:sourcepath dest:destpath
Bei uns ist das also:
rclone copy nextcloud: lokal:/media/pi/KINGSTON/Backup -v
Mit diesen Befehl werden also unsere Dateien von der Nextcloud auf unsere lokale Festplatte kopiert. Der Parameter “-v” bewirkt, dass ihr am Schluss eine Zusammenfassung seht.
pi@raspberrypi:~ $ rclone copy nextcloud: lokal:/media/pi/KINGSTON/Backup -v 2021/01/18 16:22:10 INFO : Nextcloud.png: Copied (new) 2021/01/18 16:22:10 INFO : Reasons to use Nextcloud.pdf: Copied (new) 2021/01/18 16:22:11 INFO : Photos/Birdie.jpg: Copied (new) 2021/01/18 16:22:12 INFO : Photos/Frog.jpg: Copied (new) 2021/01/18 16:22:12 INFO : Nextcloud intro.mp4: Copied (new) 2021/01/18 16:22:12 INFO : Nextcloud Manual.pdf: Copied (new) 2021/01/18 16:22:12 INFO : Photos/Gorilla.jpg: Copied (new) 2021/01/18 16:22:13 INFO : Photos/Library.jpg: Copied (new) 2021/01/18 16:22:13 INFO : Photos/Nextcloud community.jpg: Copied (new) 2021/01/18 16:22:13 INFO : Photos/Readme.md: Copied (new) 2021/01/18 16:22:13 INFO : Photos/Steps.jpg: Copied (new) 2021/01/18 16:22:14 INFO : Photos/Toucan.jpg: Copied (new) 2021/01/18 16:22:14 INFO : Documents/Example.md: Copied (new) 2021/01/18 16:22:14 INFO : Photos/Vineyard.jpg: Copied (new) 2021/01/18 16:22:14 INFO : Documents/Nextcloud flyer.pdf: Copied (new) 2021/01/18 16:22:14 INFO : Documents/Readme.md: Copied (new) 2021/01/18 16:22:14 INFO : Documents/Welcome to Nextcloud Hub.docx: Copied (new) 2021/01/18 16:22:14 INFO : Transferred: 15.842M / 15.842 MBytes, 100%, 3.040 MBytes/s, ETA 0s Transferred: 17 / 17, 100% Elapsed time: 6.9s
7. Backup per Cron automatisieren
Nun habt ihr die Möglichkeit diesen Befehl automatisch per Cron zu einer bestimmten Uhrzeit ausführen zu lassen. Dazu gebt ihr folgenden Befehl ein:
crontab -e
Hier wählt ihr “1”.
pi@raspberrypi:~ $ crontab -e no crontab for pi - using an empty one Select an editor. To change later, run 'select-editor'. 1. /bin/nano <---- easiest 2. /usr/bin/vim.tiny 3. /bin/ed Choose 1-3 [1]: 1
Nun ergänzt ihr am Ende der Datei folgenden Eintrag:
0 5 * * * rclone copy nextcloud: lokal:/media/pi/KINGSTON/Backup -v
Dies bewirkt, dass euer Pi jeden Tag um 05:00 Uhr ein Backup eurer Cloud erstellt. Mehr Informationen zu Cron und den Uhrzeiten findet ihr beispielsweise hier.
8. Backup automatisieren und Raspberry Pi danach herunterfahren
Nun wollen wir unseren Pi dazu bringen, dass wir ihn einschalten, er ein Backup erstellt und sich danach wieder herunterfährt.
Dazu legen wir eine neue Datei an:
nano /home/pi/backup.sh
Hier gebt ihr folgendes ein:
rclone copy nextcloud: lokal:/media/pi/KINGSTON/Backup -v /usr/sbin/shutdown +3
Das “+3” bewirkt, dass der Pi erst in 3 Minuten später heruntergefahren wird. Ihr benötigt so eine Zeit, da sich sonst der Pi immer direkt wieder beenden würde und ihr keine Chance mehr habt auf ihn zuzugreifen.
Nun machen wir die Datei noch ausführbar:
chmod +x /home/pi/backup.sh
Nun legen wir noch einen root cronjob an. Dies ist wichtig, da nur der root Nutzer das System ohne Probleme herunterfahren kann.
sudo crontab -e
Hier wählt ihr “1”.
pi@raspberrypi:~ $ sudo crontab -e no crontab for root - using an empty one Select an editor. To change later, run 'select-editor'. 1. /bin/nano <---- easiest 2. /usr/bin/vim.tiny 3. /bin/ed Choose 1-3 [1]: 1
Nun fügt ihr am Ende folgende Zeile hinzu:
@reboot /home/pi/backup.sh
Wenn ihr zuvor die Konfiguration mit dem Nutzer “pi” durchgeführt habt, dann müsst ihr diese Konfiguration jetzt noch für den Nutzer “root” durchführen oder folgenden Befehl ausführen:
mkdir -p /root/.config/rclone/ cp /home/pi/.config/rclone/rclone.conf /root/.config/rclone/rclone.conf
Anschließend könnt ihr euren Pi neu starten und es ausprobieren.
9. rclone E-Mail versenden nach Backup
Hier zeige ich euch, wie ihr euch eine E-Mail schicken lassen könnt nach dem Backup. Dazu benötigt ihr noch einen SMTP Client. Dessen Installation habe ich hier beschrieben.
Wenn ihr diesen installiert und konfiguriert habt, könnt ihr eine neue Datei anlegen:
nano backup-email.sh
Inhalt:
#!/bin/bash rclone -v copy nextcloud: lokal:/media/pi/KINGSTON/Backup --log-file rclone-log.txt mail -s "Backup vom $(date +%Y-%m-%d) $(date +%H:%M)" <ziel@email.de> < rclone-log.txt rm rclone-log.txt
Hier müsst ihr nur noch eure E-Mail Adresse eintragen.
Nun machen wir die Datei noch ausführbar:
chmod +x backup-email.sh
Anschließend bekommt ihr nach jedem Backup eine E-Mail geschickt.
Dieses Skript könnt ihr nun auch per Cron automatisch starten. Wie dies funktioniert habe ich weiter oben schon beschrieben.
10. Quellen
https://www.bitblokes.de/rclone-rsync-fuer-die-cloud-backups-in-nextcloud-und-andere-cloud-anbieter/