Inhaltsverzeichnis:
- Schritt 1: Hardware-Teile
- Schritt 2: Hardware-Design
- Schritt 3: Betriebssystem
- Schritt 4: Software-Design
- Schritt 5: Abschluss & ToDo-Liste
Video: OrangeBOX: OrangePI-basiertes sicheres Backup-Speichergerät - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:19
Die OrangeBOX ist eine All-in-One-Remote-Storage-Backup-Box für beliebige Server.
Ihr Server kann infiziert, beschädigt, gelöscht werden und alle Ihre Daten sind immer noch sicher auf der OrangeBOX und wer möchte nicht eine unmögliche Mission wie ein Backup-Gerät, was Sie einfach anschließen und eine Fortschrittsanzeige sehen, ohne mehr zu tun (hoffen Sie nur die Magie Rauch kommt am Ende nicht raus:)).
Die OrangeBOX ist mein erstes Projekt, das hauptsächlich ein Software- und kein Hardware-Hack ist. Es ist im Grunde ein speziell angefertigtes NAS mit einem angeschlossenen LCD.
Schritt 1: Hardware-Teile
Der Orange PI zero ist ein Open-Source-Einplatinencomputer. Es kann Android 4.4, Ubuntu, Debian ausführen. Es verwendet den AllWinner H2-SoC und verfügt über 256 MB/512 MB DDR3-SDRAM (256 MB-Version ist die Standardversion. Orange Pi Zero ist für jeden geeignet, der mit Technologie kreativ werden möchte – nicht nur konsumiert. Es ist ein einfaches, unterhaltsames und nützliches Tool, das Sie verwenden können, um die Kontrolle über die Welt um dich herum zu übernehmen (https://www.orangepi.org/orangepizero/). Also genau für uns, lass uns weitermachen:)
- Metall-/Kunststoff-/Holzbox (ich habe eine alte externe Yamaha-CD-RW-Box verwendet)
- Orange PI Zero oder besser (GPIO-Pinbelegung kann sich ändern, wenn Sie ein anderes Modell verwenden)
- 2x20 RGB-LCD-Bildschirme
- Beliebiges SFF 3.5/ LFF 2.55 USB-Laufwerk
- Sata -> USB-Adapter. Beachten Sie, dass der OrangePI der maximalen Laufwerkskapazität zwar keine Obergrenze auferlegt, jedoch viele USB-zu-SATA-Brücken (2 TB max.) tun. Der orangefarbene PI Zero, den ich verwende, hat nur einen einzigen USB 2.0-Port mit einer effektiven Übertragungsrate von max. 28 MB/s. Ich habe eine USB3.0 gewählt (für zukünftige Upgrades vorbereitet) -> SATA Bridge (Marke wird nicht erwähnt) und es begrenzt das Limit, daher ist es besser, eine Bridge zu wählen, die nachweislich größere Laufwerke wie JMicron JMS567 Chip-basierte Bridges unterstützt. Machen Sie Ihre eigene Recherche, bevor Sie einen kaufen. Ich kann mit der Geschwindigkeits- und Festplattenbeschränkung leben, indem ich in diesem Projekt ein 2 TB-SATA-Laufwerk verwende (wenn Sie größere Laufwerke einsetzen, wird es erkannt, aber das Betriebssystem sieht nur die ersten 2 TB davon, so dass der Rest der Kapazität vorhanden ist hat verloren).
- 12V 2,5 A oder höher Ampere-Adapter. Berechnen Sie etwa 500 mA normale Nutzung für den OPI Zero und 1,5 A Peak für ein Standard-LFF-SATA-Laufwerk. Überdimensionierung schadet nie. In meinem Setup ist das Yamaha-Netzteil (was auf beiden 12+5V-Schienen mehr als genug Strom hätte liefern können) leider gesprengt: Wenigstens hat es die Box ein paar Gramm leichter gemacht.
- Abwärtswandler DC-DC 12V->5V. Ich habe den gleichen verstellbaren Mini-Buck verwendet wie bei IronForge, funktioniert perfekt.
Optional
Wenn Sie bereit sind, + 10 $ auszugeben, können Sie den Orange Pi Plus (https://www.armbian.com/orange-pi-one-plus/) erwerben, der einen ähnlichen Formfaktor hat und Ihnen Gbe und SATA3 bietet. Dafür kann die Libra PI Verdrahtungsbibliothek verwendet werden: https://github.com/OrangePiLibra/WiringPi aber da die GPIO-Pinbelegung anders ist, ist dies nicht Gegenstand dieses Schreibens.
Sie können dies auch mit dem neuen Orange PI Plus2 tun, das über einen SATA-Anschluss verfügt, und Sie können die Verwendung von SATA-> USB-Konvertern mit ihren Einschränkungen überspringen. Wenn Sie FreeBSD oder andere BSDs verwenden möchten, ist die Orange PI-Serie möglicherweise nicht die beste Wahl, da deren Hardwareunterstützung begrenzt ist (z. B. müssen Sie zum Booten einen USB-Stick verwenden). Für BSDs ist es der beste Rat, Raspberry PI zu verwenden. Sowohl der C-Code für das LCD als auch alle Shell-Skripte sind auf alle anderen UNIX-Systeme portierbar.
Schritt 2: Hardware-Design
Die Yamaha-Box reichte gerade aus, um all das zu verstauen, sie hätte nicht genug Platz für einen Orange PI-PC oder ein normales Raspi-Formfaktor-Board.
Das Ethernet wurde mit einem Extender an der Rückseite der Box herausgebracht. Denken Sie daran, dass der Orange PI Zero nur über eine 100-Mbit/s-Ethernet-Schnittstelle verfügt, wenn Sie schneller möchten, müssen Sie ein anderes Board wie Asus Tinkerboard / RPI3B + / andere Orange PI-Modelle verwenden.
Falsche PIN-Ausgabe ist der einzige Fehler, den Sie in diesem Projekt machen können, daher lohnt es sich, einige Faustregeln anzuwenden:
1, Versuchen Sie immer, von END zu END das gleichfarbige Kabel zu verwenden. Ich selbst begehe den gleichen "Fehler" in einigen Projekten, bei denen ich es nicht tue, einfach weil ich nicht lange genug männlich-männlich/männlich-weiblich/weiblich-weibliche Kabel zur Hand habe und ich 2 zusammenflicke, um weiterzumachen die Rennbahn. Wenn Sie Ihre Arbeit nicht ordnungsgemäß dokumentieren, kann dies Jahre später zu Kopfschmerzen führen, wenn Sie eine Reparatur oder ein Upgrade durchführen müssen.
2, Tragen Sie etwas Heißkleber auf die Anschlüsse auf. Bei der Verwendung dieser mm/mf/ff-Kabel im Arduino-Starter-Kit-Stil, die nicht der Spitzenklasse entsprechen, kommt es häufig vor (insbesondere wenn Sie das Gerät bewegen/transportieren), dass die Anschlüsse herausrutschen. Wenn Sie wissen, dass es sich um ein Gerät für den Langzeitgebrauch handelt (möglicherweise bis zum Bruch?!), dann ist es besser, sowohl auf der OrangePI- als auch auf der LCD-Seite der Anschlüsse etwas Heißkleber aufzutragen, um sie zusammenzuhalten. Dieser kann später bei Bedarf leicht geschmolzen/abgekratzt werden.
3, Die OrangePI-Nullverdrahtung Die schlechte Nachricht ist, dass die Orange PI-Pinbelegung NICHT die gleiche ist wie die des Raspberry PI 0/1/2/3 und es gibt sogar Unterschiede zwischen anderen Orange PI-Modellen. Am besten besorgen Sie sich die Verdrahtungsbibliothek (Orange PI Zero-Version). Das Bild mag etwas verwirrend sein, aber das waren die besten, die ich finden konnte. Einer ist ein 180-Grad-Spiegel des anderen. Obwohl das nicht-grafische CLI-Bild möglicherweise schwieriger zu verstehen ist, ist es am einfachsten.
Sie können die 2 Enden der Buchsen immer unterscheiden, indem Sie ein Ende als POSITIVES Ende mit (+3.3/+5V) und das andere als NEGATIVE Ende (ein GND) betrachten -> dies ist das Ende des Steckers, das dem ETHERNET-Port zugewandt ist.
Aus der Tabelle Wiring PI Zero brauchen Sie nur eine Spalte, die wPI vergisst die anderen, als wären sie nicht da.
Um zum Beispiel LCD_E 15 (das ist wPI 15!) und LCD_RS 16 (das ist wPI 16!) anzuschließen, zählen Sie die Pins vom POSITIVEN Ende des Steckers (einfach mit einem Stift oder einem kleinen Schraubendreher). Das wird physisch um 4 Pins und 5 Pins gehen.
4, Gruppieren. Wenn es eine Möglichkeit gibt, gebrauchte Pins nebeneinander zu legen (Gruppierung) wählen Sie immer diese aus, damit sie auch ohne Heißkleber aneinander halten und auch in anderen Projekten mit 2x 4x 6x Molex-Anschlüssen können Sie Nutzen Sie einfach den Vorteil, dass die Pins nebeneinander liegen. Hier ist das Beste, was Sie tun können, eine Gruppe von 2-3ern (ideal bei Verwendung von geretteten Überbrückungskabeln von alten PCs).
Pins, die für den Anschluss des OrangePI-LCD-Bildschirms verwendet werden:
// VERWENDEN SIE WIRINGPI PIN-NUMMERN
#define LCD_E 15 //Enable-Pin #define LCD_RS 16 //Auswahl-Pin registrieren #define LCD_D4 5 //Daten-Pin 4 #define LCD_D5 6 //Daten-Pin 5 #define LCD_D6 10 //Daten-Pin 6 #define LCD_D7 11 // Datenpin 7
Pins für die Steuerung der RGB-Hintergrundbeleuchtung
$G schreibe 1 0
$G schreiben 4 1 $G schreiben 7 1
Orange PI null wPI-Pins 1, 4, 7. Die einzige Magie, die dieses LCD im Vergleich zum Standard-LCD mit blauer oder grüner Hintergrundbeleuchtung ausführen kann, bei dem Sie eine einzelne Kathode haben, die auf GND heruntergezogen werden muss, die 3 für die 3. hat Farben. Rot, Grün und Blau. Durch Ändern der Kombination, von denen eine eingeschaltet ist, können Sie verschiedene Farben aus diesen Grundfarben mischen, aber nur die oberen Enden keine Schattierungen, da Sie die Helligkeit einer Farbe nicht steuern können (sie ist entweder ein- oder ausgeschaltet).
Additive Farbmischung: Die Zugabe von Rot zu Grün ergibt Gelb; Hinzufügen von Rot zu Blau ergibt Magenta; Hinzufügen von Grün zu Blau ergibt Cyan; die Addition aller drei Primärfarben ergibt Weiß.
Schritt 3: Betriebssystem
Die OrangeBOX bootet und Armbian Linux (basierend auf Debian Stretch) 4.14.18-Sunxi-Kernel mit einer sicheren Firewall-Umgebung, verbindet sich mit einem VPN und wartet auf Remote-Backup-Befehle vom Server.
Design-Prinzipien:
-Vollständige luks-basierte Festplattenverschlüsselung (das Gerät selbst enthält nicht den Schlüssel zum Öffnen des Backup-Laufwerks. Es wird vorübergehend vom Remote-Server in den RAM /dev/shm kopiert, das Laufwerk geöffnet und der Schlüssel gelöscht. Nach Abschluss des Backups das Laufwerk geschlossen und die OrangeBox wird in 1 Minute automatisch heruntergefahren.)
-Alle Befehle und Schlüssel werden vom Remote-Server gesendet (das Gerät selbst enthält nur ein VPN-Zertifikat) Es hat KEINEN Zugriff auf den Remote-Server, selbst wenn SSH von diesem Gerät durch eine Firewall geschützt ist
-Die lokalen Dateisysteme sind unverschlüsselt, um booten zu können, enthalten aber nichts brauchbares und da der VPN-Uplink am anderen Ende stark eingeschränkt ist, kann ein Angreifer auch bei vollständigem Verlust des Geräts nichts tun
Laden Sie den Armbian-Stretch von https://www.armbian.com/orange-pi-zero/ herunter.
Bringen Sie das System zum Laufen:
apt-get-Update && apt-get-Upgrade
apt-get install sysvinit-core sysvinit-utils
Bearbeiten Sie die /etc/inittab, die gesamte Konsole kann deaktiviert werden, da die Box als Headless verwendet wird. Kommentieren Sie den folgenden Abschnitt aus:
#1:2345:Respawn:/sbin/getty 38400 tty1
#2:23:respawn:/sbin/getty 38400 tty2 #3:23:respawn:/sbin/getty 38400 tty3 #4:23:respawn:/sbin/getty 38400 tty4 #5:23:respawn:/sbin/getty 38400 tty5 #6:23:respawn:/sbin/getty 38400 tty6
Starten Sie Ihre Box neu und entfernen Sie systemd, um ein echtes Open-Source-Bloatware-freies System zu haben.
apt-get remove --purge --auto-remove systemd
Einige Pakete installieren
apt-get install cryptsetup vim htop rsync screen gcc make git
Installieren Sie die wiringpi-Bibliothek
cd /usr/src
git-Klon https://github.com/xpertsavenue/WiringOP-Zero.git cd WiringOP-Zero chmod +x./build./build
Erstellen Sie einen orangefarbenen Benutzer für das LCD-Display
groupadd -g 1000 Orange
useradd -m -d /home/orange -s /bin/bash -u 1000 -g orange orange
Der Wachhund, der nicht auf dich aufpasst
apt-get install Watchdog
Betrachten Sie /etc/default/watchdog # Watchdog beim Booten starten? 0 oder 1 run_watchdog=1 # wd_keepalive nach dem Stoppen von Watchdog starten? 0 oder 1 run_wd_keepalive=1 # Modul vor dem Start von Watchdog laden watchdog_module="none" # Hier zusätzliche Watchdog-Optionen angeben (siehe Manpage).
Blick auf /etc/watchdog.conf
# Aktivieren Sie diese zumindest
Max-Last-1 = 24 Max-Last-5 = 18 Max-Last-15 = 12
/etc/init.d/watchdog starten
Es sollte mindestens 1 Kernel-Thread und 1 Prozess geben:
Wurzel 42 0.0 0.0 0 0 ? I< 10:50 0:00 [watchdogd] root 14613 0.0 0.2 1432 1080 ? SLs 13:31 0:00 /usr/sbin/watchdog
Testen:
Stellen Sie sicher, dass Sie alles stoppen und eine Synchronisierung && Synchronisierung && Synchronisierung durchführen, um den Rest der Daten auf die Festplatte zu schreiben. Dann als Wurzelproblem:
echo 1 > /dev/watchdog
Nach einigen Sekunden sollte die Maschine neu starten.
Wie im Handbuch steht:
o Ist die Prozesstabelle voll?
o Ist genügend freier Speicher vorhanden? o Ist genügend zuordenbarer Speicher vorhanden? o Sind einige Dateien zugänglich? o Haben sich einige Dateien innerhalb eines bestimmten Intervalls geändert? o Ist die durchschnittliche Arbeitsbelastung zu hoch? o Ist ein Dateitabellenüberlauf aufgetreten? o Läuft noch ein Prozess? Der Prozess wird durch eine pid-Datei angegeben. o Antworten manche IP-Adressen auf Ping? o Empfangen Netzwerkschnittstellen Datenverkehr? o Ist die Temperatur zu hoch? (Temperaturdaten sind nicht immer verfügbar.) o Führen Sie einen benutzerdefinierten Befehl aus, um beliebige Tests durchzuführen. o Führen Sie einen oder mehrere Test-/Reparaturbefehle aus, die Sie in /etc/watchdog.d finden. Diese Befehle werden mit dem Argument test oder Repair aufgerufen. Wenn eine dieser Prüfungen fehlschlägt, führt Watchdog zum Herunterfahren. Sollte einer dieser Tests mit Ausnahme der benutzerdefinierten Binärdatei länger als eine Minute dauern, wird die Maschine ebenfalls neu gestartet.
Dieser Watchdog funktionierte vielleicht auf den regulären x86-Architekturen gut, aber auf ARM-basierten Boards wie Raspberry PIs und Orange PIs versagte er unzählige Male. Das System kann in Hängezustände gehen, in denen sogar der Watchdog hängt. Lass es uns einfach trotzdem konfigurieren, vielleicht wird es im Laufe der Jahre mit einem apt-get-Upgrade verbessert:(
Schritt 4: Software-Design
Der Backup-Prozess selbst basiert auf rsync (das beste Backup-Tool, das jemals erfunden wurde). Die Daten werden von der SERVER->OrangeBOX übertragen.
Das Extrahieren der Daten aus rsync war der einzige herausfordernde Teil des Projekts, um einen Fortschrittsbalken über das Backup auf dem LCD ausdrucken zu lassen.
Es gab 3 Möglichkeiten, den Backup-Fortschritt zu berechnen:
1, Verwenden Sie Formeln wie https://wintelguy.com/transfertimecalc.pl, um die ungefähre Zeit zu bestimmen, die die Übertragung dauern kann
Transferzeit (d:h:m:s): 0:02:44:00
Zum Vergleich: Geschätzte Zeit zum Übertragen einer 123-GB-Datei über verschiedene Netzwerkverbindungen (d:h:m:s): T1/DS1-Leitung (1,544 Mbit/s) - 7:09:01:46 Ethernet (10 Mbit/s) - 1:03: 20:00 Fast Ethernet (100 Mbit/s) - 0:02:44:00 Gigabit Ethernet (1000 Mbit/s) - 0:00:16:24 10 Gigabit Ethernet (10 Gbit/s) - 0:00:01:38
Wenn rsync beendet ist, signalisiert es dem Skript, die Berechnung zu stoppen. Diese Methode ist nur eine ungefähre und nicht zuverlässig, auch die Verbindungsgeschwindigkeit ist nicht fest, sie kann sich verlangsamen, wieder beschleunigen. Dies ist nur eine theoretische Berechnung.
2, Größenüberprüfungen des Verzeichnisses durchführen, um festzustellen, wie viele Daten wir bereits synchronisiert haben. Kann mit Hunderten von GBs kleinen Dateien sehr langsam werden (obwohl du -s in Linux etwas zwischenspeichert, wenn Sie es erneut ausführen)
Host A -> Zu sichernde Serverdaten Datenverzeichnis: 235GB
Host B -> Orange Box-Clientdaten, die wir gerade haben Datenverzeichnis: 112GB
Das Delta beträgt 123 GB.
3. Wenn das Dateisystem dediziert ist, wie in unserem Fall /dev/mapper/backup, können wir den allgemeinen Dateisystemnutzungsindikator nutzen, um festzustellen, wie unser Backup voranschreitet, und das ist wirklich verdammt schnell. In diesem Fall müssen wir den rsync stdout nicht einmal irgendwo weiterleiten, führen Sie einfach einen trockenen rsync aus, warten Sie, bis er abgeschlossen ist, berechnen Sie das Delta in Bytes und vergleichen Sie dies mit dem freien Speicherplatz, den wir auf dem Backup-Laufwerk haben, und voila, wir können Machen Sie jetzt ein schönes Balkendiagramm. Dies war die Methode, die ich gewählt habe und hier ist mein Skript dafür:
#!/bin/bash
# Backup-Fortschrittsrechner für OrangeBOX von NLD # Version: 0.2 (2018/03/05) # # Als unprivilegierter Benutzer von cron ausführen # * * * * * /home/orange/backup_progress.sh &> /dev/null # # Dieses Skript ist nur für die Anzeige von Daten auf dem LCD verantwortlich, es kommuniziert # indirekt über Positions- und Sperrdateien mit dem Hauptprogramm. BACKUP_DRIVE="/dev/mapper/backup" VFILE="$HOME/start.pos" # Plattennutzung zu Beginn des Backups TFILE="$HOME/trans.size" # Gesamtvorberechnete Übertragungsgröße BFILE="$HOME/ backup.lck" # bestimmt den gestarteten Zustand FFILE="$HOME/backup.fin" # bestimmt den beendeten Zustand LFILE1="$HOME/lcd1.bar" # LCD-Fortschrittsanzeigedaten LFILE2="$HOME/lcd2.bar" # LCD-Fortschritt Anzeigedaten SHUTDOWN="1" # Wenn 1 wird ein weiteres Skript gestartet, das die Box am Ende des Backups herunterfährt BACKUP_CURRENT="0" # Muss initialisiert werden, wird aber berechnet # Laufwerksgröße in Bytes (sekundär check) LCD="sudo /bin/lcd" Funktion is_mount() { grep -q "$1" /proc/mounts status=$? } function red() { sudo /bin/lcdcolor red } function green() { sudo /bin/lcdcolor green } function blue() { sudo /bin/lcdcolor blue } # Clear state (wird beim Booten von bootup_display.sh gesetzt). Es wird keine Sicherung durchgeführt. Verschmutzen Sie NICHT das # Status-LCD. Fortschritt nur bei laufendem Backup anzeigen => Keine Startdatei UND Keine Findatei = Beenden wenn [! -f $BFILE] && [! -f $FFILE]; then exit 1 fi # Wenn das Backup beendet ist, zeigt dieses Skript dies an und entfernt die Sperren #, um es bis zur nächsten Initiierung nicht wieder ausführen zu können. if [-f $FFILE]; dann grün $LCD " Backup " "** Abgeschlossen **" echo "Backup abgeschlossen" rm -rf $BFILE $TFILE $FFILE $LFILE1 $LFILE2 $VFILE # Sicherung beendet Aufräumen if [$SHUTDOWN == "1"]; then echo "Executing Shutdown script…" /home/orange/shutdown.sh & fi exit 0 fi # Ab diesem Punkt wird das Skript NUR ausgeführt, wenn ein LAUFENDES Backup vorhanden ist # daher werden alle Fehler auf dem LCD ausgegeben und verursachen das Skript # abzubrechen wird jedoch nicht die Datei backup.lck entfernen, also werde ich immer wieder hier # eingeben und die Bedingungen auswerten. is_mount $BACKUP_DRIVE if [$status -ne 0]; dann rot $LCD "ERR: Backup-Laufwerk" "ist nicht gemountet!" echo "Sicherungslaufwerk ist nicht gemountet" exit 1 fi if [! -s $TFILE]; dann rot $LCD "ERR: transfile" "ist leer" echo "Transportgrößenberechnungsdatei ist leer." Ausgang 1 fi BACKUP_OVERALL=$(head -1 $TFILE |tr -d '\n') if [-z $BACKUP_OVERALL]; dann rot $LCD "ERR: Size Readback" "vom Server ungültig" echo "Backup Gesamtgröße Readback ist ungültig 1" exit 1 fi if !
Obwohl der Code einfach ist, ist hier eine Beschreibung dessen, was er tut:
1, Wenn die BFILE oder FFILE nicht existiert (was der Zustand nach einem klaren Start ist), was anzeigt, dass kein Backup-Prozess stattfindet, tun Sie also NICHTS, beenden Sie einfach. Auf diese Weise können Sie alle gewünschten Informationen zum Booten wie Hostname, IP, Betriebszeit usw. grafisch darstellen und es wird nicht durcheinander gebracht.
2, Springen wir zum Abschnitt is_mount $BACKUP_DRIVE. Nur zur Erinnerung, der einzige Weg, den wir hierher gekommen sind, ist, dass ein Backup gestartet wurde, damit die BFILE existiert. Jetzt führt der Code nur verschiedene Fehlerprüfungen durch, z. oder andere Fehler. Denken Sie daran, dass dies ein reines DISPLAY-Programm ist, selbst wenn die Größe die Backups überschreiten würde, wird nichts abgebrochen.
3, OK alle Fehlerüberprüfungen gelöscht Zeit, um das Prozentdiagramm zu berechnen. Zuerst nimmt das Skript einen "Schnappschuss" des Speicherplatzes, der gerade in Bytes auf dem Backup-Dateisystem verwendet wird, und speichert ihn in VFILE. Was ist der Zweck davon: Ein Bash-Skript ist zustandslos, es verliert Daten zwischen den Ausführungen. Wenn Sie sich also an einige Daten der vorherigen Ausführung "erinnern" möchten, müssen Sie sie irgendwo speichern. In unserem Fall ist dies nur eine einfache Textdatei. Um es einfach zu machen, sagen wir, unser START_POS ist 1 GB (Daten, die wir haben), was wir sichern möchten, sind +2 GB und die Gesamtkapazität des Laufwerks beträgt 10 GB.
4, Wenn das Skript das nächste Mal das Skript ausführt, existiert die VFILE und diese wird zurückgelesen (damit wir die Startposition kennen, falls das Laufwerk nicht leer war), um den BACKUP_CURRENT zu berechnen, der im Wesentlichen ein Delta des derzeit verwendeten Speicherplatzes ist auf dem Backup-Laufwerk abzüglich der Startposition, die wir in der letzten Runde in der VFILE gespeichert haben (das sind wieder die Daten, die wir auf dem Laufwerk hatten, als das Backup gestartet wurde). Das Skript arbeitet intern mit Bytes, aber um es einfach zu machen, haben wir nach einer halben Stunde 500 MB Daten gesichert, dann wäre die Formel BACKUP_CURRENT = 1,5 GB - 1 GB (Ausgangszustand) => was uns genau die echten Daten zurückgibt 500 MB, das heißt was wir bisher gesichert haben. Sie können sehen, dass diese Größenberechnung fehlschlagen würde, ohne zu verfolgen, was die Originaldaten zu Beginn des Backups waren, weil sie sehen würde, dass der derzeit verwendete Speicherplatz 1,5 GB beträgt, ohne zu wissen, dass 1 Gig Daten die ganze Zeit auf der Festplatte vorhanden waren aus einer früheren Sicherung stammen, so dass davon ausgegangen wird, dass der Server uns 1,5 GB Daten anstelle von 500 MB gesendet hat.
5, BACKUP_OVERALL eingelesen werden, diese Daten wurden vom Server berechnet, als er den ersten trockenen rsync durchführte (dies ist also eine externe Datenquelle, die die Menge an Bytes enthält, die von Server->OrangeBOX gesichert werden). Dieser Wert wird im Moment mit dem gesamten freien Speicherplatz auf der Festplatte verglichen und wenn er überschritten wird, wird eine Fehlermeldung auf dem LCD angezeigt und das Skript stoppt die Ausführung. Denken Sie noch einmal daran, dass dieses Skript NUR anzeigt, es stört den Backup-Prozess nicht. Wenn Sie Dateien auf der Festplatte bereinigen oder sich die Anzahl der Dateien aus der Ferne ändert und sich daher BACKUP_OVERALL an einem Punkt ändert, wird es fortgesetzt.
6, Endlich sind wir mit den Second-Level-Checks fertig, es ist Zeit, etwas anzuzeigen. Das Skript zeigt die Daten sowohl auf der Konsole als auch auf dem LCD mit einer einfachen C-App an. Der Hintergrund wird auf BLAU umgeschaltet, um anzuzeigen, dass die Sicherung endlich begonnen hat und der Fortschritt durch die folgende Formel berechnet wird PROGRESS=$((($BACKUP_CURRENT * 100) / $BACKUP_OVERALL)). Dies ist eine einfache prozentuale Berechnung, wir nehmen den aktuellen Betrag, in unserem Beispiel 0,5 GB * 100 / 2 GB = 25%.
7, Die Zahlen werden auch von Byte in Mega/Giga-Byte konvertiert und der Bildschirm wird automatisch in MB angezeigt, wenn er kleiner als 1 GB ist.
8, Eine Sache, die in unserem Fall noch abzubilden ist, sind die 25% auf einem 20-Spalten-LCD. Das wäre in unserem Beispiel 25 * 20 / 100 = 5. Derzeit ist die Aktualisierung mit dem LCD-Programm implementiert, das bei jedem Aufruf des Programms den gesamten Bildschirm neu zeichnet. In diesem Fall würde es also 5 Mal eine for-Schleife laufen lassen, um 5 Hashmarks # auf dem Bildschirm zu zeichnen. Dies würde sich in jeder Runde als hässliches Flackern zeigen, also schreibe ich stattdessen die berechneten Fortschrittsbalkendaten in LFILE1 und 2, was in diesem Fall nach die 5 Runden würden ##### enthalten und dies wird zurückgelesen und auf dem LCD angezeigt. Sie können LFILE1 und 2 auch auf die Ramdisk legen, um die SD-Karte vor zusätzlichen Schreibvorgängen zu schützen, es hat bei mir keine Probleme verursacht, das Skript wird einmal in jeder Minute von Cron ausgeführt.
9, Wenn die Sicherung abgeschlossen ist, berührt das andere Skript des Servers, der rsync ausführt, die FFILE (Finish File). Bei der nächsten Schleife zeigt backup_progress.sh dann an, dass das Backup abgeschlossen ist und ruft optional ein weiteres Skript zum Herunterfahren der OrangeBOX auf. Es löscht seine Sperrdateien an dieser Stelle, wodurch weitere Ausführungen unmöglich werden. Selbst wenn Sie das Herunterfahren in der nächsten Minute nicht aktivieren, wenn dieses Skript ausgeführt wird, wird es sofort beendet, da die BFILE nicht vorhanden ist und die FFILE nicht vorhanden ist. Daher wird die Meldung „Backup abgeschlossen“auf unbestimmte Zeit angezeigt, es sei denn, die Sicherung wird erneut gestartet.
Remote-Backup-Skript (orange-remote.sh):
Sie müssen einen SSH-Schlüssel für das Backup und einen Schlüssel für die Luks-Verschlüsselung für das Laufwerk generieren. Wenn Sie das Remote-Backup zum ersten Mal manuell ausführen, wird der Host-Fingerabdruck der orangefarbenen Boxen in der Hosts-Datei gespeichert (ab diesem Zeitpunkt kann es automatisch per Cron ausgeführt werden).
DISK="/dev/disk/by-id/…"
Um Ihre Festplattenkennung herauszufinden, führen Sie uuid, blkid aus oder suchen Sie einfach die entsprechenden /dev/disk/-Verzeichnisse.
Ein Verzeichnis-Include-Exclude kann eingerichtet werden, wenn Sie nicht alles sichern möchten. Dies ist ein ziemlich nerviger Vorgang, denn für rsync müssen Sie Folgendes tun, wenn Sie ein einzelnes Unterverzeichnis tief in der Struktur ausschließen möchten:
+ /a
+ /a/b + /a/b/c + /a/b/c/d - /a/b/c/d/e + /dir2
Da dieses Skript Befehle auf der OrangeBOX aus der Ferne ausführt, hat es keinen Überblick über die Rückgabevariablen von dieser Seite, daher verwende ich einige clevere Tricks, wie z es, um zu sehen, ob es erfolgreich war, wenn nicht, ändert es die rsync-Binärdatei in nicht ausführbar, damit rsync nicht versucht, Daten auf die OrangePIs-Rootfs hochzuladen, die die SD-Karte auffüllen. Es empfiehlt sich auch, das unveränderliche Bit auf chattr +i /mnt/backup zu setzen, um dies unmöglich zu machen.
Die Größenvorberechnung erfolgt lokal auf dem Server, daher muss diese Datei im nächsten Schritt an die OrangeBOX gesendet werden.
Die Hauptsicherung wird als Schleife für ((i=0;i<100;i++)); tun, weil bei DSL/Kabel-Internetverbindungen von geringer Qualität rsync oft abbrechen kann, Timeout. Wenn sie erfolgreich abgeschlossen wird, wird die Schleife unterbrochen, ohne weitere Iterationen zu versuchen. Dies funktioniert einwandfrei mit guten Betriebssystemen, aber wenn die Remote-Box aus irgendeinem Grund Windows wäre und der Zugriff wie regelmäßig auf NTUSER. DAT verweigert würde, würde rsync einen Fehlercode zurückgeben und diese Schleife würde 100 Mal ausgeführt und dann immer noch fehlschlagen.
Schritt 5: Abschluss & ToDo-Liste
Mein anweisbares zeigt noch einmal, wie Sie etwas besseres, anpassbareres Gerät von einem 10 $-Computer auf eigene Faust erstellen können, der Buffalo mit seinen proprietären gesperrten NAS-Geräten, seltsamer interner Partitionierung, Busybox verkrüppeltem Linux mit Segfaulting-Tools, verwaltet durch ihre Windows-Software, geschlossene Firmware, schlechte Dokumentation und Support und egal wie viel Geld Sie ausgeben, Sie werden nie eine Fortschrittsanzeige erhalten, die Ihr Backup anzeigt, ganz zu schweigen davon, wie cool die OrangeBox aussieht (ich benutze sogar orange CAT5-Kabel damit:D).
Da Mini-Computer immer leistungsfähiger werden und gleichzeitig die gleiche Preislinie von < 100 $ beibehalten, können wir sie für immer mehr Aufgaben verwenden. Da Gbe-Ethernet-Ports heutzutage weit verbreitet sind, wird der Speicher auf diesen Boards in 1-2 Jahren dramatisch ansteigen und sie können auch für ZFS-basierte Backup-Systeme verwendet werden.
-Feinkorn-Fortschrittsanzeige durch das C-Programm (siehe WasserStation eines meiner anderen Projekte). Im Moment werden nur # Hashmark # Zeichen im Zeichenmodus mit lcdPuts(lcd, line1) verwendet den Fortschrittsbalken richtig oder weiter verbessert durch die Verwendung eines grafischen LCD
-Möglichkeit, eine austauschbare Festplatte zu haben, um neue und neue Backups zu erstellen und an verschiedene Orte zu verschieben (wenn die Box ein leeres Laufwerk erkennt, sollte sie es nach Erhalt automatisch mit dem Verschlüsselungsschlüssel formatieren).
-Wenn du deine eigene Hülle mit Makerbot drucken möchtest, könnte das OrangeNAS für dich interessant sein:
Empfohlen:
Sicheres Schließfach mit RFID-Schloss erstellen – wikiHow
So stellen Sie einen sicheren Schließfach mit RFID-Schloss her: Erfahren Sie, wie Sie einen sicheren Schließfach mit RFID-Schloss zu Hause mit Arduino und sehr einfachen elektronischen Komponenten herstellen. Lassen Sie uns mit Arduino und RFID-Scanner ein sicheres Schließfach mit RFID-Schloss herstellen
Online-Backup mit Ihrem Gmail-Konto: 4 Schritte
Online-Backup mit Ihrem Gmail-Konto: http://www.softpedia.com/progDownload/GMail-Drive-shell-extension-Download-15944.htmlDas GMail-Laufwerk ist ein kleines Programm für das Windows-Betriebssystem, das Ihr Gmail-Konto zu einem ?Online-? sichern?. Sie können Ihr Gmail-Konto verwenden, um Dateien zu speichern, die