Bitcoin Blockchain mit Rsync sichern auf Umbrel & Raspi
Heute lernen wir, wie wir Bitcoin Blockchain mit Rsync auf Raspi und Umbrel sichern können. Eine sinnvolle Absicherung der eigenen Node beinhaltet auch die komplette Sicherung der Blockchain in regelmässigen Abständen. Mit der Zeit kann die Festplatte zu klein werden, Ihr wollt auf ein stärkeres Gerät umrüsten oder der Raspi ist mal wieder ausgefallen. Durch die regelmässige Sicherung der Blockchain lassen sich solche Setups schnell wieder aufsetzen ohne Ewigkeiten auf die erneute Synchronisation warten zu müssen. Bei Umbrel geht das ca 7 Tage, bei Blitz sogar teilweise bis zu 4 Wochen.
Vorbereitungen
Für das Backup benötigt Ihr eine ausreichen grossen Datenträger oder eine NAS die Verbindung zur Node hat. Wichtig ist, dass wir nicht einfach die Blockchain kopieren, sondern rsync dafür verwenden. Dies stellt sicher das alle Berechtigungen und Besitzertüme beim kopieren genau so bleiben wie sie sind. Stellt also sicher dass auf auf der der Node und auf dem Zielgerät rsync installiert ist. Für Windows Computer gibt es dafür das Tool Delta Copy.
Stellt sicher dass auf Eurem Linux Zielrechner wie ein Linux Computer ein SSH-Server installiert ist, und dieser via SSH erreichbar ist. Auf dem Windowsrechner machen wir es später jedoch ohne SSH weil dass nicht immer funktioniert.
Der Befehl zur Installation eines SSH-Servers wäre:
sudo apt install openssh-server
Eine Konfiguration ist nicht weiter notwendig. Stellt einfach sicher das Port 22 auf Eurem Linux Client offen ist.
Erstellt auf den Zielgeräten einen Ordner der für das aufbewahren benutzt werden soll. Auf der einer Synology kann das z.B ein neuer gemeinsamer Ordner sein. Stellt sicher das Rsync auf der Eurer NAS bzw auf Eurer Synology aktiviert ist.
Beim Windows Client müsst Ihr ebenfalls einen Ordner für den Empfang eingerichtet und freigegeben werden. Hier müssen wir Delta Copy wie in diesem Beitrag hier eingerichtet haben. Die Rsync Einrichtung auf einem Linux Client ist hier nicht nötig!
Ob Rsync auf Eurem Linux Geräten, bzw der Node installiert ist, könnt Ihr mit rsync --version
überprüfen. Falls nichts vorhanden, installiert es einfach mit:
apt install rsync
Umbrel Fullnode Blockchain sichern
Loggt Euch zuerst via SSH auf der Umbrel ein. Checkt nochmals ob rsync installiert ist. Wenn ja kann es bereits gleich losgehen.
Auf NAS sichern
Der Ordner auf der NAS muss exisiteren, und eine SSH Verbindung zum Ziel muss eingerichtet sein. Auf der Umbrel ist der Pfad zur Blockchain /root/umbrel/app-data/bitcoin/data/bitcoin/
Dort sind die 3 Ordner blockchain, chainstate und indexes gespeichert. Diese 3 Ordner müssen wir sichern.
Auf der Synology NAS wäre der Ziel Ordner unter /volume1/backups/blockchain/umbrel/ zu finden. Die Befehle wäre also:
rsync -avz --info=progress2 --append-verify /root/umbrel/app-data/bitcoin/data/bitcoin/blockchain benutzername@172.16.0.54:/volume1/backups/blockchain/umbrel/
rsync -avz --info=progress2 --append-verify /root/umbrel/app-data/bitcoin/data/bitcoin/chainstate benutzername@172.16.0.54:/volume1/backups/blockchain/umbrel/
und
rsync -avz --info=progress2 --append-verify /root/umbrel/app-data/bitcoin/data/bitcoin/indexes benutzername@172.16.0.54:/volume1/backups/blockchain/umbrel/
Ihr könnt das ganze zuerst mal testen indem Ihr eine kleine Datei wie die debug.log auf den Zielrechner schiebt.
Auf einer externen Platte auf einem Linux Client sichern
Der Befehl ist der gleiche, der Zielort muss leicht angepasst werden. Schaut in der Konsole wie z.B ein externer Datenträger eingebunden worden ist mit dem Befehl lsblk
Ihr seht dass der USB Stick als sda1 zu finden ist, und unter /media/mario/stickbezeichnung
gemounted wurden ist. Nehmen wir an auf dem USB Stick wäre noch der Ordner umbrel auf dem Ihr die Daten sichern wollt, dann währe der Pfad zum Ordner /media/mario/stickbezeichnung/umbrel/
Dementsprechend passt Ihr den Befehl an mit dem Benutzernamen und der IP Adresse des Linux Rechners:
rsync -avz --info=progress2 --append-verify /root/umbrel/app-data/bitcoin/data/bitcoin/ordnername mario@192.168.1.84:/media/mario/7E2D368C6FFFE5CF/umbrel/
Nun müsst Ihr wieder Ordnername mit den 3 Ordner blockchain, indexes und chainstate ersetzen und könnt die Ordner direkt auf eine externe Festplatte sichern.
Auf einer externen Platte mit Windows Betriebssystem sichern
Windows SSH Server ist nicht wirklich zuverlässig, deshalb erledigen wir dass mit einen Rsync Server den wir direkt ansprechen. Wir müssen wie in den Vorbereitungen bereits angesprochen DeltaCopy installieren. Wir erstellen auf DeltaCopy Server ein neues Modul mit dem namen blockchain, und setzen den Pfad auf den externen Datenträger
Dazu müsst Ihr einfach nur Add New Directory auswählen und mit Browse den Pfad angeben. Stellt sicher das der Rsync Server läuft und die Ampel auf grün zeigt. Ausserdem muss auf Eurem Windowsrechner der Rsync TCP Port 873 offen sein.
Danach sprecht Ihr das Ziel nicht mit einem Pfad an, sondern mit dem Modulnamen, in unserem Falle blockchain.
rsync -avz --info=progress2 --append-verify /root/umbrel/app-data/bitcoin/data/bitcoin/ordnername 192.168.1.75::blockchain
RaspiBlitz Fullnode Blockchain sichern
Die Befehle sind alle gleich, ausser dass die Blockchain woanders zu finden ist. Der Pfad für die Blockchain auf dem Raspi ist: /mnt/hdd/bitcoin/
Die Ordner heissen hier: blocks, chainstate und indexes.
Die Befehle sind also nur bzgl des Quellpfades anzupassen, z.B für die Sicherung auf die NAS:
rsync -avz --info=progress2 --append-verify /mnt/hdd/bitcoin/blocks benutzername@172.16.0.54:/volume1/backups/blockchain/raspi/
Bitte Zielordner dann halt ensprechend mit raspi oder so abändern.
Wiederherstellen der Blockchain auf Fullnodes
Habt Ihr Eure Fullnode verkonfiguriert, oder habt eine neue, könnt Ihr nun die Blockchains auf die jeweiligen Geräte ziehen.
Wichtig dabei ist, dass die Geräte nicht syncen währen der Übertragung. Der bitcoind.service muss also kurz angehalten werden.
Unterm Raspi ist das relativ einfach. Ihr richtet das Gerät ein bzw installiert RaspiBlitz, und lasst ihn kurz in Ruhe damit alle nötigen Ordner erstellt werden können. Danach stopt ihr die synchronisation mit:
sudo systemctl stop bitcoind.service
Sobald Ihr alle Daten wieder rüber habt. Könnt Ihr den Service mit
sudo systemctl start bitcoind.service
wieder starten.
Auf dem Umbrel müsst Ihr kurz den Docker-Container stoppen. Der Container heisst normalerweise lncm/bitcoind:v25.1
Checkt kurz mit docker ps
wie der container bei Euch heisst. Ihr erkennt in an der Bitcoin Core Versionsnummer, hier in meinem Falle 25.1
Stoppt den Container mit:
docker stop bitcoin_bitcoind_1
und startet Ihn wieder mit:
docker start bitcoin_bitcoind_1
Sobald die Übertragung aller Ordner fertig ist.
Die Daten von der NAS oder vom Linux Backup ziehen
Ihr müsst Euch nun vom jeweiligen Gerät arbeiten. Also entweder auf der Umbrel oder auf dem Blitz. Der Rsync Befehl ist nun umgekehrt:
rsync -avz --info=progress2 --append-verify benutzername@172.16.0.54:/volume1/backups/blockchain/umbrel/blockchain /root/umbrel/app-data/bitcoin/data/bitcoin/blockchain
oder für den Raspi:
rsync -avz --info=progress2 --append-verify benutzername@172.16.0.54:/volume1/backups/blockchain/raspi/blocks /mnt/hdd/bitcoin/blocks
Daten von Windows Rsync Modul ziehen
Beim Windows Rsync Server müssen wir uns einfach auf das Modul beiziehen. Gebt Modulname und Pfad zum Ordner an, also Beispielsweise für die Umbrel:
rsync -avz --info=progress2 --append-verify 192.168.1.75::modulname/umbrel/blockchain /root/umbrel/app-data/bitcoin/data/bitcoin/blockchain
Auf dem Raspi ist der Pfad und der Ordnername blocks entsprechend anzupassen.
Danach könnt Ihr die Services wieder starten und kurz abwarten bis die Node die Daten gecheckt hat. Auf dem Umbrel geht das meisst ganz fix. Der Raspi benötigt allgemein etwas länger. Falls es Probleme auf dem Raspi gibt, checkt die logs mit:
sudo tail -f /mnt/hdd/bitcoin/debug.log
Hat der Raspi die Blockchain korrekt geladen, dürfen keine Blockchain Fehler auftreten und die Syncro muss normal weiter gehen:
Die Sicherungen automatisieren
Wenn Ihr wollt, könnt Ihr das ganze auch automatisieren. Führt Ihr rsync via SSH aus, dann müsst Ihr natürlich ein Passwort eingeben. Das funktioniert natürlich nicht wenn das alles automatisch ablaufen soll. Deshalb kann sich der Quellrechner via SSH-ID beim Zielrechner authentifzieren. Das geht mit ssh-copy-id
Loggt auf auf Eurer Node ein. Führt den folgenden Befehl aus:
ssh-copy-id benutzername@IPdesBackupsServers
und gebt Euer Passwort des Zielrechners ein. Danach liegt der öffentliche Schlüssel der Fullnode auf dem Zielrechner, und dieser muss sich von nun an nicht mehr mit einem Passwort authentifzieren, sondern tut das über SSH Schlüsselpaare. Damit ist die voraussetzung geschaffen um automatische Rsync Befehle über SSH zu ermöglichen.
Cronjob erstellen
Mit crontab -e erstellen wir einen neuen Cronjob. Richtet Ihr das erste mal ein, fragt Euch Crontab mit welchen Editor Ihr arbeiten wollt. Nehmt am besten immer Nano, also die Nummer eins.
Danach tragt Ihr am Ende der Datei folgendes ein:
0 1 1 * * rsync -avz --append-verify /root/umbrel/app-data/bitcoin/data/bitcoin/blockchain benutzername@172.16.0.54:/volume1/backups/blockchain/umbrel/
0 6 1 * * rsync -avz --append-verify /root/umbrel/app-data/bitcoin/data/bitcoin/indexes benutzername@172.16.0.54:/volume1/backups/blockchain/umbrel/
0 8 1 * * rsync -avz --append-verify /root/umbrel/app-data/bitcoin/data/bitcoin/chainstate benutzername@172.16.0.54:/volume1/backups/blockchain/umbrel/
Damit wird Beispielsweise immer am ersten des Monats um 01:00 der rsync Befehl ausgeführt. Gestartet wird mit dem Ordner blockchain, diesem geben wir 5 Std Zeit, danach indexes und 2 Stunden später chainstate. Passt den Befehl auf Eure Fullnode Betriebssystem und Euren Speicherort entsprechend an.
Damit sollte die Blockchain regelmässig gespeichert werden. Mehr als einmal im Monat ist in der regel nicht notwendig, dass könnt Ihr aber nach Euren Bedürfnissen anpassen.
Weitere wichtige Hinweise
Falls Daten bzw Ordner nicht übertragen werden, checkt Eure Firewall-Einstellungen und achtet darauf dass die jeweiligen Ports geöffnet sind.
Wichtig ist, dass das SSH Fenster, auf dem Ihr die Übertragungen startet, nicht geschlossen werden. Die Blockchain Sicherhung oder Übertragung kann bei ca 700GB je nach Netzwerkgeschwindigkeit mehrere Stunden gehen. In dieser Zeit darf der Rechner, mit dem Ihr Euch verbindet auf die Nodes verbindert, nicht schlafen geht! Schaltet also den Suspend bzw Schlafmodus des Rechners ab! Bricht die SSH Verbindung ab, bricht auch die Übertragung ab!
Ein Kommentar