Sommario:

OrangeBOX: dispositivo di archiviazione di backup sicuro basato su OrangePI: 5 passaggi
OrangeBOX: dispositivo di archiviazione di backup sicuro basato su OrangePI: 5 passaggi

Video: OrangeBOX: dispositivo di archiviazione di backup sicuro basato su OrangePI: 5 passaggi

Video: OrangeBOX: dispositivo di archiviazione di backup sicuro basato su OrangePI: 5 passaggi
Video: Dare nuova vita al tuo telefono? Ecco come 2024, Dicembre
Anonim
OrangeBOX: dispositivo di archiviazione di backup sicuro basato su OrangePI
OrangeBOX: dispositivo di archiviazione di backup sicuro basato su OrangePI
OrangeBOX: dispositivo di archiviazione di backup sicuro basato su OrangePI
OrangeBOX: dispositivo di archiviazione di backup sicuro basato su OrangePI

OrangeBOX è una scatola di backup di archiviazione remota all-in-one per qualsiasi server.

Il tuo server può essere infettato, corrotto, cancellato e tutti i tuoi dati sono ancora al sicuro su OrangeBOX e chi non vorrebbe una missione impossibile come un dispositivo di backup cosa basta collegare e vedere un indicatore di avanzamento senza fare altro (spero solo che la magia il fumo non uscirà alla fine:)).

L'OrangeBOX è il mio primo progetto che è principalmente un software, non un hack hardware. È fondamentalmente un NAS personalizzato con un LCD collegato.

Passaggio 1: parti hardware

Parti hardware
Parti hardware
Parti hardware
Parti hardware
Parti hardware
Parti hardware

L'Orange PI zero è un computer a scheda singola open source. Può eseguire Android 4.4, Ubuntu, Debian. Utilizza il SoC AllWinner H2 e dispone di SDRAM DDR3 da 256 MB/512 MB (la versione da 256 MB è la versione standard. Orange Pi Zero è per chiunque voglia iniziare a creare con la tecnologia, non solo consumarla. È uno strumento semplice, divertente e utile che puoi può utilizzare per iniziare a prendere il controllo del mondo intorno a te (https://www.orangepi.org/orangepizero/). Quindi è esattamente per noi, andiamo avanti:)

  • Scatola metallo/plastica/legno (ho usato una vecchia scatola cd-rw esterna Yamaha)
  • Orange PI Zero o superiore (il pinout GPIO potrebbe cambiare se si utilizza un altro modello)
  • Schermi LCD 2x20 RGB
  • Qualsiasi unità USB SFF 3.5/LFF 2.55
  • Sata -> adattatore usb. Tieni presente che, sebbene OrangePI non imponga un limite superiore alla capacità massima dell'unità, molti bridge da USB a SATA lo fanno (2 TB max). Il PI Zero arancione che uso ha solo una singola porta USB 2.0 con una velocità di trasferimento effettiva di 28 MB/s max. Ho scelto un USB3.0 (preparato per futuri aggiornamenti) -> bridge SATA (il marchio non verrà menzionato) e limita il limite, quindi è meglio scegliere un bridge che supporti unità più grandi come i bridge basati su chip JMicron JMS567. Fai le tue ricerche prima di acquistarne uno. Posso convivere con la velocità e il limite del disco rigido utilizzando un'unità sata da 2 TB in questo progetto (se inserisci unità più grandi, verrà riconosciuto ma il sistema operativo vedrà solo i primi 2 TB di esso, quindi il resto della capacità sarà perduto).
  • Adattatore per amplificatore da 12 V 2,5 A o superiore. Calcola circa 500 mA di utilizzo normale per OPI Zero e 1,5 A di picco per un'unità SATA LFF standard. L'oversize non guasta mai. Nella mia configurazione l'alimentatore Yamaha (cosa avrebbe potuto fornire più che sufficiente corrente su entrambi i binari 12 + 5 V) sfortunatamente è esploso: (a causa dell'ordinamento dell'interruttore principale su GND per un secondo, quindi ho dovuto incollare un normale adattatore, a almeno ha reso la scatola un paio di grammi più leggera.
  • Convertitore buck DC-DC 12V->5V. Ho usato lo stesso mini buck regolabile di IronForge, funziona perfettamente.

Opzionale

Se sei disposto a spendere + 10 $, puoi ottenere Orange Pi Plus (https://www.armbian.com/orange-pi-one-plus/) che ha un fattore di forma simile e ti dà Gbe e SATA3. Per questo è possibile utilizzare la libreria di cablaggio Libra PI: https://github.com/OrangePiLibra/WiringPi ma poiché il pinout GPIO è diverso è fuori dallo scopo di questo scritto.

Puoi anche fare questa build con il nuovo Orange PI Plus2 che ha un connettore SATA e puoi saltare l'uso di convertitori sata->usb tutti insieme con i loro limiti. Se hai intenzione di usare FreeBSD o altri BSD, la serie Orange PI potrebbe non essere la scelta migliore poiché il loro supporto hardware è limitato (ad esempio devi usare una chiavetta USB per l'avvio). Per i BSD è il miglior consiglio di usare Raspberry PI. Sia il codice C per LCD che tutti gli script della shell sono portabili su qualsiasi altro sistema UNIX.

Passaggio 2: progettazione dell'hardware

Progettazione hardware
Progettazione hardware
Progettazione hardware
Progettazione hardware
Progettazione hardware
Progettazione hardware

La scatola Yamaha era appena sufficiente per memorizzare tutto questo, non avrebbe avuto abbastanza spazio per un PC Orange PI o una normale scheda con fattore di forma Raspi.

L'Ethernet è stato portato fuori con un extender sul retro della scatola. Ricorda che Orange PI zero ha solo un'interfaccia Ethernet a 100mbit/s se vuoi più veloce dovrai usare un'altra scheda come Asus Tinkerboard/RPI3B+/Altri modelli Orange PI.

PIN Out errato è l'unico errore che puoi commettere in questo progetto, quindi vale la pena applicare alcuni principi della regola empirica:

1, cerca sempre di utilizzare lo stesso cavo colorato da FINE a FINE. Io stesso commetto lo stesso "errore" in alcuni progetti in cui non lo faccio, semplicemente perché non ho abbastanza cavi maschio-maschio/maschio-femmina/femmina-femmina a portata di mano e ne collego 2 insieme solo per andare avanti con il circuito. Se non documenti correttamente il tuo lavoro, questo può portare a mal di testa anni dopo in cui devi eseguire una riparazione, aggiornare.

2, applicare un po' di colla a caldo ai connettori. In caso di utilizzo di questi cavi mm/mf/ff stile kit arduino-starter che non sono al top della qualità della linea, è abbastanza comune (specialmente se si sposta/trasporta il dispositivo) che i connettori scivolino fuori. Se sai che sarà un dispositivo per uso a lungo termine (possibilmente usarlo fino a quando non si rompe?!), allora è meglio applicare un po' di colla a caldo sia sul lato OrangePI che sul lato LCD dei connettori per tenerli insieme. Questo può essere facilmente sciolto/grattato via in seguito, se necessario.

3, Il cablaggio zero OrangePI La cattiva notizia è che il pinout Orange PI NON è lo stesso del Raspberry PI 0/1/2/3 e c'è anche differenza tra gli altri modelli Orange PI. Il modo migliore per procedere è procurarsi la libreria di cablaggio (versione Orange PI Zero). L'immagine potrebbe essere un po' confusa, ma queste erano le migliori che ho trovato. Uno è uno specchio a 180 gradi dell'altro. Sebbene l'immagine CLI non grafica possa essere più difficile da comprendere, è la più semplice.

Puoi sempre differenziare le 2 estremità delle prese considerando un'estremità come l'estremità POSITIVA con il (+3.3/+5V) e l'altra come l'estremità NEGATIVA (un GND) -> questa è l'estremità del connettore rivolta verso la porta ETHERNET.

Dalla tabella Wiring PI Zero ti servirà solo una colonna in cui il wPI si dimenticherà delle altre come se non ci fossero.

Quindi ad esempio per collegare LCD_E 15 (ovvero wPI 15!) e LCD_RS 16 (ovvero wPI 16!) contare i pin dall'estremità POSITIVA del connettore (facile da fare con una penna o un piccolo cacciavite). Questo sarà fisicamente scendendo di 4 pin e 5 pin.

4, Raggruppa. Se c'è la possibilità di mettere i pin usati uno accanto all'altro (raggruppandoli) scegli sempre quello, li fa tenere tra loro anche senza colla a caldo e anche in altri progetti quando hai 2x 4x 6x connettori molex puoi approfitta solo dei pin che sono uno accanto all'altro. Qui il meglio che puoi fare è un gruppo di 2-3 (ideale quando si utilizzano cavi jumper recuperati da vecchi PC).

Pin utilizzati per la connessione dello schermo LCD OrangePI:

//UTILIZZA I NUMERI PIN DI CABLAGGIO PI

#define LCD_E 15 //Enable Pin #define LCD_RS 16 //Registra pin select #define LCD_D4 5 //Data pin 4 #define LCD_D5 6 //Data pin 5 #define LCD_D6 10 //Data pin 6 #define LCD_D7 11 // Pin dati 7

Pin utilizzati per il controllo della retroilluminazione RGB

$G scrivi 1 0

$G scrivi 4 1 $G scrivi 7 1

Arancione PI zero pin wPI 1, 4, 7. L'unica magia che questo LCD può fare rispetto al normale LCD con retroilluminazione fissa blu o fissa verde in cui si ha un singolo catodo che deve essere abbassato a GND che ha 3 per il 3 colori. Rosso, verde e blu. Modificando la combinazione di cui uno è attivato, puoi mescolare colori diversi da questi colori di base, ma solo le estremità alte senza sfumature perché non puoi controllare la luminosità di un colore (è acceso o spento).

Miscelazione additiva dei colori: aggiungendo il rosso al verde si ottiene il giallo; aggiungendo il rosso al blu si ottiene il magenta; aggiungendo il verde al blu si ottiene il ciano; sommando tutti e tre i colori primari si ottiene il bianco.

Passaggio 3: sistema operativo

Sistema operativo
Sistema operativo

L'OrangeBOX si avvia e il kernel Armbian Linux (basato su Debian Stretch) 4.14.18-sunxi con un ambiente protetto da firewall, si connette a una VPN e attende i comandi di backup remoto dal server.

Principi di progettazione:

-Crittografia completa del disco basata su luks (il dispositivo stesso non contiene la chiave per aprire l'unità di backup. Verrà temporaneamente copiato dal server remoto nella ram /dev/shm, l'unità è stata aperta e la chiave cancellata. Al termine del backup l'azionamento si chiude e l'OrangeBox si spegne automaticamente in 1 minuto.)

-Tutti i comandi e le chiavi vengono inviati dal server remoto (il dispositivo stesso contiene solo un certificato vpn) non ha ALCUN accesso al server remoto anche se ssh da questo dispositivo è protetto da firewall

-I filesystem locali non sono crittografati per essere in grado di avviarsi ma non contengono nulla di utile e poiché l'uplink VPN è altamente limitato dall'altra parte anche con la completa perdita del dispositivo un utente malintenzionato non può fare nulla

Scarica Armbian Stretch da

Metti in funzione il sistema:

apt-get update && apt-get upgrade

apt-get install sysvinit-core sysvinit-utils

Modifica /etc/inittab, tutte le console possono essere disabilitate poiché la scatola verrà utilizzata come headless. Commenta la seguente sezione:

#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

Riavvia la tua scatola e rimuovi systemd per avere un vero sistema open source senza bloatware.

apt-get remove --purge --auto-remove systemd

Installa alcuni pacchetti

apt-get install cryptsetup vim htop rsync screen gcc make git

Installa la libreria di cablaggio

cd /usr/src

git clone https://github.com/xpertsavenue/WiringOP-Zero.git cd WiringOP-Zero chmod +x./build./build

Crea utente arancione per il display lcd

groupadd -g 1000 arancia

useradd -m -d /home/orange -s /bin/bash -u 1000 -g orange orange

Il cane da guardia che non veglia su di te

apt-get install watchdog

Guardando /etc/default/watchdog # Avvia watchdog all'avvio? 0 o 1 run_watchdog=1 # Avvia wd_keepalive dopo aver fermato il watchdog? 0 o 1 run_wd_keepalive=1 # Carica il modulo prima di avviare il watchdog watchdog_module="none" # Specifica qui le opzioni aggiuntive del watchdog (vedi manpage).

Guardando /etc/watchdog.conf

# Almeno abilita questi

carico massimo-1 = 24 carico massimo-5 = 18 carico massimo-15 = 12

/etc/init.d/watchdog start

Dovrebbero esserci almeno 1 thread del kernel e 1 processo:

radice 42 0.0 0.0 0 0 ? I< 10:50 0:00 [watchdogd] radice 14613 0.0 0.2 1432 1080 ? SL 13:31 0:00 /usr/sbin/watchdog

Test:

Assicurati di interrompere tutto e di eseguire una sincronizzazione && sincronizzazione && sincronizzazione per scrivere il resto dei dati sul disco. Quindi come problema di root:

echo 1 > /dev/watchdog

Dopo alcuni secondi la macchina dovrebbe riavviarsi.

Come recita il manuale:

o La tabella dei processi è piena?

o C'è abbastanza memoria libera? o C'è abbastanza memoria allocabile? o Alcuni file sono accessibili? o Alcuni file sono stati modificati entro un determinato intervallo? o Il carico di lavoro medio è troppo elevato? o Si è verificato un overflow della tabella dei file? o Un processo è ancora in esecuzione? Il processo è specificato da un file pid. o Alcuni indirizzi IP rispondono al ping? o Le interfacce di rete ricevono traffico? o La temperatura è troppo alta? (Dati di temperatura non sempre disponibili.) o Eseguire un comando definito dall'utente per eseguire test arbitrari. o Eseguire uno o più comandi di test/riparazione trovati in /etc/watchdog.d. Questi comandi vengono chiamati con l'argomento test o repair. Se uno di questi controlli fallisce, il watchdog causerà un arresto. Se uno di questi test, tranne il binario definito dall'utente, dura più di un minuto, anche la macchina verrà riavviata.

Questo watchdog potrebbe funzionare bene sulle normali architetture x86 ma su schede basate su ARM come Raspberry PI, Orange PI mi ha deluso innumerevoli volte. Il sistema può entrare in stati di sospensione in cui anche il watchdog è sospeso. Configuriamolo comunque, forse verrà migliorato con un aggiornamento apt-get nel corso degli anni:(

Passaggio 4: progettazione del software

Progettazione software
Progettazione software

Il processo di backup stesso è basato su rsync (il miglior strumento di backup mai inventato) i dati vengono inviati dal SERVER-> OrangeBOX.

L'estrazione dei dati da rsync è stata l'unica parte impegnativa del progetto per avere una barra di avanzamento del backup stampata sul display LCD.

C'erano 3 possibili modi per calcolare l'avanzamento del backup:

1, utilizzando formule come https://wintelguy.com/transfertimecalc.pl per determinare il tempo approssimativo che il trasferimento può richiedere

Tempo di trasferimento (g:h:m:s): 0:02:44:00

Per confronto: tempo stimato per trasferire file da 123 GB su diversi collegamenti di rete (d:h:m:s): linea T1/DS1 (1.544 Mbps) - 7:09:01:46 Ethernet (10 Mbps) - 1:03: 20:00 Fast Ethernet (100 Mbps) - 0:02:44:00 Gigabit Ethernet (1000 Mbps) - 0:00:16:24 10 Gigabit Ethernet (10 Gbps) - 0:00:01:38

Se rsync termina, segnala allo script di interrompere il calcolo. Questo metodo è solo approssimativo e non affidabile, inoltre la velocità del collegamento non è fissa, può rallentare, accelerare di nuovo. Questo è solo un calcolo teorico.

2, eseguendo i controlli delle dimensioni sulla directory per determinare quanti dati abbiamo già sincronizzato. Può diventare molto lento con centinaia di piccoli file di GB (sebbene du -s in Linux esegua un po' di memorizzazione nella cache se lo si esegue nuovamente)

Host A -> Dati del server di cui eseguire il backup Dir dati: 235GB

Host B -> Dati client Orange box che abbiamo in questo momento Dir dati: 112GB

Il delta è di 123 GB.

3, Se il filesystem è dedicato come nel nostro caso /dev/mapper/backup, possiamo sfruttare l'indicatore di utilizzo complessivo del filesystem per determinare come sta procedendo il nostro backup e questo è davvero dannatamente veloce. In questo caso non abbiamo nemmeno bisogno di reindirizzare lo stdout rsync da nessuna parte, basta eseguire un dry rsync, attendere fino al completamento, calcolare il delta in byte e fare un controllo incrociato con lo spazio libero che abbiamo sull'unità di backup e voilà possiamo ora fai un bel grafico a barre. Questo era il metodo che ho scelto ed ecco il mio script per questo:

#!/bin/bash

# Calcolatore di avanzamento del backup per OrangeBOX di NLD # Versione: 0.2 (2018/03/05) # # Eseguilo come utente non privilegiato da cron # * * * * * /home/orange/backup_progress.sh &> /dev/null # # Questo script è responsabile solo della visualizzazione dei dati sull'LCD, comunica # indirettamente con il programma principale tramite i file di posizione e di blocco. BACKUP_DRIVE="/dev/mapper/backup" VFILE="$HOME/start.pos" # utilizzo del disco all'inizio del backup TFILE="$HOME/trans.size" # dimensione complessiva del trasferimento precalcolata BFILE="$HOME/ backup.lck" # determina lo stato iniziato FFILE="$HOME/backup.fin" # determina lo stato finito LFILE1="$HOME/lcd1.bar" # Dati dell'indicatore di avanzamento LCD LFILE2="$HOME/lcd2.bar" # Progresso LCD indicatore dati SHUTDOWN="1" # Se 1 avvierà un altro script che chiuderà il box alla fine del backup BACKUP_CURRENT="0" # Deve essere inizializzato ma verrà calcolato # Dimensione dell'unità in byte (secondaria check) LCD="sudo /bin/lcd" function 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 (impostato all'avvio da bootup_display.sh). Nessun backup è in corso, NON rovinare il # LCD di stato. Visualizza solo l'avanzamento in caso di backup in corso => Nessun file di avvio E Nessun file fin = esci se [! -f $BFILE] && [! -f $FILO]; quindi exit 1 fi # Se il backup è terminato, questo script lo visualizzerà e rimuoverà i blocchi # per non poter essere eseguito di nuovo fino all'avvio successivo. if [-f $FILO]; then verde $LCD " Backup " "** Completato **" echo "Backup completato" rm -rf $FILOB $FILOFILO $FILO $FILO1 $FILO2 $FILOV # Il backup ha terminato la pulizia if [$SPEGNIMENTO == "1"]; then echo "Executing shutdown script…" /home/orange/shutdown.sh & fi exit 0 fi # Da questo punto lo script viene eseguito SOLO se c'è un backup IN CORSO # quindi tutti gli errori verranno stampati sul display LCD e causeranno lo script # per abortire, tuttavia, non rimuoverà il file backup.lck, quindi entrerà # qui più e più volte e valuterà le condizioni. is_mount $BACKUP_DRIVE if [$status -ne 0]; poi rosso $LCD "ERR: Unità di backup" "non è montata!" echo "Unità di backup non montata" exit 1 fi if [! -s $FILE]; poi rosso $LCD "ERR: transfile" "è vuoto" echo "Il file di calcolo delle dimensioni di trasporto è vuoto." exit 1 fi BACKUP_OVERALL=$(head -1 $TFILE |tr -d '\n') if [-z $BACKUP_OVERALL]; then red $LCD "ERR: Rilettura della dimensione" "dal server non valida" echo "La rilettura della dimensione complessiva del backup non è valida 1" exit 1 fi if !

Sebbene il codice sia semplice, ecco una descrizione di cosa fa:

1, se BFILE o FFILE non esiste (che è lo stato dopo un avvio azzerato) che indica che non esiste un processo di backup, quindi NON fare nulla, basta uscire. In questo modo puoi rappresentare graficamente tutte le informazioni che desideri sull'avvio come il nome host, l'ip, il tempo di attività ecc. E non verrà incasinato.

2, passiamo alla sezione is_mount $BACKUP_DRIVE. Solo un promemoria l'unico modo in cui siamo arrivati qui è che è stato avviato un backup in modo che esista il BFILE. Ora il codice esegue solo vari controlli di errore come se l'unità di backup fosse montata? La dimensione complessiva di ciò che stiamo per eseguire il backup supera l'unità? o altri errori. Ricorda che questo è un programma solo DISPLAY anche se la dimensione supera i backup non interromperà nulla.

3, OK tutti i controlli di errore hanno cancellato il tempo per calcolare il grafico della percentuale. Innanzitutto lo script prende una "istantanea" dello spazio utilizzato in byte sul filesystem di backup in questo momento e lo memorizza in VFILE. Qual è lo scopo di questo: uno script bash è senza stato, perde dati tra le esecuzioni, quindi se vuoi "ricordare" alcuni dati dell'esecuzione precedente devi memorizzarli da qualche parte. Nel nostro caso questo è solo un semplice file di testo. Per semplificare, diciamo che il nostro START_POS è 1 GB (dati che abbiamo), quello di cui vogliamo fare il backup è +2 GB e la capacità complessiva dell'unità è 10 GB.

4, la prossima volta che lo script esegue, il VFILE esiste e questo verrà riletto (quindi sappiamo qual era la posizione iniziale nel caso in cui l'unità non fosse vuota) per calcolare BACKUP_CURRENT che è essenzialmente un delta dello spazio utilizzato in questo momento sull'unità di backup meno la posizione iniziale ciò che abbiamo salvato nel VFILE nell'ultimo round (di nuovo questi sono i dati che avevamo sull'unità quando è iniziato il backup). Lo script funziona internamente con i byte ma per semplificare dopo mezz'ora abbiamo eseguito il backup di 500 MB di dati, quindi la formula sarebbe BACKUP_CURRENT = 1,5 GB - 1 GB (stato iniziale) => che ci restituisce esattamente i dati reali 500 MB, cioè quello che abbiamo sostenuto finora. Puoi vedere che senza tenere traccia di quali erano i dati originali all'inizio del backup, questo calcolo delle dimensioni fallirebbe perché vedrebbe che lo spazio utilizzato in questo momento è 1,5 GB senza sapere che i dati di 1 giga erano presenti sul disco per tutto il tempo proveniente da un backup precedente, quindi si presume che il server ci abbia inviato dati da 1,5 GB anziché da 500 MB.

5, verrà letto BACKUP_OVERALL, questi dati sono stati calcolati dal server quando ha eseguito il dry rsync iniziale (quindi si tratta di un'origine dati esterna contenente la quantità di byte di cui verrà eseguito il backup da Server-> OrangeBOX). Questo valore verrà confrontato con lo spazio LIBERO complessivo sul disco al momento e se lo supera verrà visualizzato un messaggio di errore sull'LCD e lo script interromperà l'esecuzione. Ricorda di nuovo che tutto ciò che fa questo script è SOLO visualizzare, non interferisce con il processo di backup. Se ripulisci i file sul disco o la quantità di file cambia in remoto e quindi BACKUP_OVERALL cambia a un certo punto, procederà.

6, Finalmente abbiamo finito con i controlli di secondo livello è ora di mostrare qualcosa. Lo script visualizza i dati sia sulla console che sull'LCD utilizzando una semplice app C. Lo sfondo diventa BLU ad indicare che il backup è finalmente iniziato e l'avanzamento viene calcolato dalla seguente formula PROGRESS=$((($BACKUP_CURRENT * 100) / $BACKUP_OVERALL)). Questo è un calcolo percentuale di base che prendiamo l'importo corrente, nel nostro esempio 0,5 GB*100/2 GB = 25%.

7, i numeri vengono anche convertiti da byte a byte Mega/Giga e lo schermo viene visualizzato automaticamente in MB se è inferiore a 1 GB.

8, Una cosa rimasta per mappare questo nel nostro caso è il 25% su un LCD a 20 colonne. Sarebbe 25 * 20 / 100 = 5 nel nostro esempio. Attualmente è implementato il refresh con il programma LCD che ogni volta che chiami il programma ridisegna l'intero schermo. Quindi in questo caso verrebbe eseguito un ciclo for 5 volte per disegnare 5 hashmark # sullo schermo, questo si presenterebbe come un brutto sfarfallio in ogni round, quindi invece scrivo i dati della barra di avanzamento calcolati su LFILE1 e 2, che in questo caso dopo i 5 round conterrebbero ##### e questo viene riletto e visualizzato sul display LCD. Potresti mettere LFILE1 e 2 anche su ramdisk per salvare la sdcard da operazioni di scrittura extra, non ha causato alcun problema per me, lo script viene eseguito una volta ogni minuto da cron.

9, Al termine del backup, l'altro script dal server che esegue rsync toccherà FFILE (Fine File). Al ciclo successivo backup_progress.sh visualizzerà quindi che il backup è stato completato e, facoltativamente, chiamerà un altro script per spegnere OrangeBOX. Elimina i suoi file di blocco a questo punto rendendo impossibili ulteriori esecuzioni, quindi anche se non abiliti lo spegnimento il minuto successivo quando questo script viene eseguito, verrà chiuso immediatamente perché il BFILE non è presente e il FFILE non è presente. Pertanto visualizzerà il messaggio di backup completato a tempo indeterminato a meno che il backup non venga riavviato nuovamente.

Script di backup remoto (orange-remote.sh):

Sarà necessario generare una chiave ssh per il backup e una chiave per la crittografia luks per l'unità. Quando esegui manualmente il backup remoto per la prima volta, salverà l'impronta digitale dell'host delle caselle arancioni nel file hosts (da questo punto può essere eseguito automaticamente da cron).

DISK="/dev/disk/by-id/…"

Per scoprire l'identificatore del tuo disco rigido, esegui uuid, blkid o cerca semplicemente le directory /dev/disk/ corrispondenti.

Se non si desidera eseguire il backup di tutto, è possibile configurare una directory include inclusion. Questo è un processo abbastanza fastidioso perché per rsync se vuoi escludere una singola sottodirectory in profondità nella struttura devi fare:

+ /a

+ /a/b + /a/b/c + /a/b/c/d - /a/b/c/d/e + /dir2

Poiché questo script sta eseguendo comandi sull'OrangeBOX in remoto, non ha alcuna supervisione delle variabili di ritorno da quel lato, quindi uso alcuni trucchi intelligenti come il messaggio di apertura dell'unità remota su /tmp/contmsg.txt, quindi l'analisi it per vedere se ha avuto successo, in caso contrario cambia il binario rsync in non eseguibile in modo che rsync non tenti di caricare i dati nei rootf OrangePI che riempiono la scheda SD. È anche una buona pratica impostare il bit immutabile su chattr +i /mnt/backup per renderlo impossibile.

Il precalcolo delle dimensioni avviene localmente sul Server, quindi questo file deve essere inviato all'OrangeBOX nel passaggio successivo.

Il backup principale viene avviato come un ciclo per ((i=0;i<100;i++)); fallo perché in caso di connessioni Internet DSL/cavo di bassa qualità rsync può spesso interrompersi, timeout. Se viene completato correttamente, il ciclo si interromperà senza provare più iterazioni. Funziona perfettamente con buoni sistemi operativi, tuttavia se per qualche motivo la casella remota fosse Windows e l'accesso fosse negato come regolarmente su NTUSER. DAT, allora rsync restituirebbe un codice di errore e questo ciclo verrebbe eseguito 100 volte e quindi fallirebbe ancora.

Passaggio 5: chiusura e lista delle cose da fare

Chiusura e lista delle cose da fare
Chiusura e lista delle cose da fare
Chiusura e lista delle cose da fare
Chiusura e lista delle cose da fare

Il mio istruttore dimostra ancora una volta come puoi creare qualcosa di migliore, un dispositivo più personalizzabile da un computer da 10 $ da solo che batte l'inferno di Buffalo con i suoi dispositivi NAS bloccati proprietari, strano partizionamento interno, linux paralizzato di busybox con strumenti di segfaulting, gestito dal loro software Windows, firmware chiuso, documentazione e supporto scadenti e non importa quanti soldi spenderai non otterrai mai un indicatore di avanzamento che mostra il tuo backup per non parlare di quanto sia bello l'OrangeBox (ho persino usato il cavo CAT5 arancione con esso: D).

Con i mini computer che diventano sempre più potenti mantenendo la stessa linea di prezzo <100$, possiamo usarli per sempre più compiti. Poiché le porte Ethernet Gbe sono abbastanza comuni in questi giorni, in 1-2 anni la memoria su queste schede aumenterà notevolmente e potranno essere utilizzate anche per i sistemi di backup basati su ZFS.

-Indicatore di avanzamento a grana fine dal programma C (vedi WasserStation uno dei miei altri progetti). In questo momento solo # hashmark # caratteri utilizzati in modalità carattere con lcdPuts(lcd, line1), questo potrebbe essere migliorato anche quando si utilizzano LCD di caratteri per dividere 1 colonna in 5 parti e il programma C principale potrebbe semplicemente prendere un numero intero come 25 ed estrarre la barra di avanzamento correttamente o ulteriormente migliorata utilizzando un LCD grafico

-Possibilità di avere un hdd rimovibile per creare backup nuovi e nuovi e spostarli in posizioni diverse (se la casella rileva un'unità vuota, dovrebbe formattarla automaticamente con la chiave di crittografia una volta ricevuta).

-Se vuoi stampare il tuo caso con makerbot, OrangeNAS potrebbe essere interessante per te:

Consigliato: