Table des matières:

OrangeBOX : Périphérique de stockage de sauvegarde sécurisé basé sur OrangePI : 5 étapes
OrangeBOX : Périphérique de stockage de sauvegarde sécurisé basé sur OrangePI : 5 étapes

Vidéo: OrangeBOX : Périphérique de stockage de sauvegarde sécurisé basé sur OrangePI : 5 étapes

Vidéo: OrangeBOX : Périphérique de stockage de sauvegarde sécurisé basé sur OrangePI : 5 étapes
Vidéo: Stockage local - sauvegarder et partager ses fichiers en réseau et sur Internet 2024, Novembre
Anonim
OrangeBOX: périphérique de stockage de sauvegarde sécurisé basé sur OrangePI
OrangeBOX: périphérique de stockage de sauvegarde sécurisé basé sur OrangePI
OrangeBOX: périphérique de stockage de sauvegarde sécurisé basé sur OrangePI
OrangeBOX: périphérique de stockage de sauvegarde sécurisé basé sur OrangePI

L'OrangeBOX est une boîte de sauvegarde à distance tout-en-un pour tous les serveurs.

Votre serveur peut être infecté, corrompu, effacé et toutes vos données sont toujours sécurisées sur l'OrangeBOX et qui n'aimerait pas une mission impossible comme périphérique de sauvegarde que vous venez de brancher et voir un indicateur de progression sans rien faire de plus (juste espérer que la magie la fumée ne sortira pas à la fin:)).

L'OrangeBOX est mon premier projet qui est principalement un logiciel, pas un hack matériel. Il s'agit essentiellement d'un NAS construit sur mesure avec un écran LCD connecté.

Étape 1: pièces matérielles

Pièces de quincaillerie
Pièces de quincaillerie
Pièces de quincaillerie
Pièces de quincaillerie
Pièces de quincaillerie
Pièces de quincaillerie

L'Orange PI zero est un ordinateur monocarte open source. Il peut exécuter Android 4.4, Ubuntu, Debian. Il utilise le SoC AllWinner H2 et dispose de 256 Mo/512 Mo de SDRAM DDR3 (la version 256 Mo est la version standard. Orange Pi Zero est destiné à tous ceux qui souhaitent commencer à créer avec la technologie - pas seulement à la consommer. C'est un outil simple, amusant et utile que vous peut utiliser pour commencer à prendre le contrôle du monde qui vous entoure (https://www.orangepi.org/orangepizero/). C'est donc exactement pour nous, allons-y:)

  • Boitier métal/plastique/bois (j'ai utilisé un vieux boitier cd-rw externe Yamaha)
  • Orange PI Zero ou mieux (le brochage GPIO peut changer si vous utilisez un autre modèle)
  • Écrans LCD 2x20 RVB
  • Tout lecteur USB SFF 3.5/LFF 2.55
  • Sata -> adaptateur USB. Gardez à l'esprit que bien que l'OrangePI n'impose pas de limite supérieure à la capacité maximale du disque, de nombreux ponts USB vers SATA le font (2 To max). Le PI Zero orange que j'utilise n'a qu'un seul port USB 2.0 avec un taux de transfert effectif de 28 Mo/s max. J'ai choisi un USB3.0 (préparé pour les futures mises à niveau) -> pont SATA (la marque ne sera pas mentionnée) et il plafonne la limite, il est donc préférable de choisir un pont qui prend en charge des disques plus gros tels que les ponts à puce JMicron JMS567. Faites vos propres recherches avant d'en acheter un. Je peux vivre avec la limite de vitesse et de disque dur en utilisant un disque SATA de 2 To dans ce projet (si vous mettez des disques plus gros, il sera reconnu mais le système d'exploitation n'en verra que les 2 premiers To, donc le reste de la capacité sera perdu).
  • Adaptateur d'ampli 12V 2,5 A ou supérieur. Calculez environ 500 mA d'utilisation normale pour l'OPI Zero et 1,5 A de crête pour un lecteur SATA LFF standard. Le surdimensionnement ne fait jamais de mal. Dans ma configuration, le bloc d'alimentation Yamaha (ce qui aurait pu fournir plus qu'assez de courant sur les deux rails 12 + 5 V) a malheureusement explosé: (en raison du tri de l'interrupteur principal sur GND pendant une seconde, j'ai donc dû coller un adaptateur ordinaire, à au moins, cela a allégé la boîte de quelques grammes.
  • Convertisseur Buck DC-DC 12V->5V. J'ai utilisé le même mini buck réglable qu'avec IronForge, fonctionne parfaitement.

Optionnel

Si vous êtes prêt à dépenser + 10 $, vous pouvez obtenir l'Orange Pi Plus (https://www.armbian.com/orange-pi-one-plus/) qui a un facteur de forme similaire et vous offre Gbe et SATA3. Pour cela, la bibliothèque de câblage Libra PI peut être utilisée: https://github.com/OrangePiLibra/WiringPi mais comme le brochage GPIO est différent, il n'entre pas dans le cadre de cette écriture.

Vous pouvez également effectuer cette construction avec le nouveau Orange PI Plus2 doté d'un connecteur SATA et vous pouvez ignorer l'utilisation de convertisseurs sata-> usb avec leurs limitations. Si vous prévoyez d'utiliser FreeBSD ou d'autres BSD, la série Orange PI n'est peut-être pas le meilleur choix car leur support matériel est limité (par exemple, vous devez utiliser une clé USB pour démarrer). Pour les BSD, c'est le meilleur conseil d'utiliser Raspberry PI. Le code C de l'écran LCD et tous les scripts shell sont portables sur tout autre système UNIX.

Étape 2: Conception du matériel

Conception de matériel
Conception de matériel
Conception de matériel
Conception de matériel
Conception de matériel
Conception de matériel

La boîte Yamaha était juste suffisante pour stocker tout cela, elle n'aurait pas assez d'espace pour un PC Orange PI ou une carte de facteur de forme Raspi ordinaire.

L'Ethernet a été sorti avec une rallonge à l'arrière de la boîte. N'oubliez pas que l'Orange PI zero n'a qu'une interface Ethernet 100mbit/s si vous voulez plus de rapidité, vous devrez utiliser une autre carte comme Asus Tinkerboard/RPI3B+/Other Orange PI models.

Wrong PIN Out est la seule et unique erreur que vous puissiez commettre dans ce projet, il vaut donc la peine d'appliquer quelques principes de base:

1, essayez toujours d'utiliser le même câble de couleur d'END à END. Je commet moi-même la même "erreur" dans certains projets où je ne le fais pas, simplement parce que je n'ai pas assez de câbles mâle-mâle/mâle-femelle/femelle-femelle sous la main et j'en patche 2 juste pour continuer le circuit. Si vous ne documentez pas correctement votre travail, cela peut entraîner des maux de tête des années plus tard où vous devez effectuer une réparation, une mise à niveau.

2, appliquez de la colle chaude sur les connecteurs. En cas d'utilisation de ces câbles mm/mf/ff de style kit de démarrage arduino qui ne sont pas de qualité supérieure, il est assez courant (surtout si vous déplacez/transportez l'appareil) que les connecteurs glissent. Si vous savez que ce sera un appareil à utiliser à long terme (peut-être à utiliser jusqu'à ce qu'il se casse ?!), alors il est préférable d'appliquer un peu de colle chaude à la fois sur le côté OrangePI et LCD des connecteurs pour les maintenir ensemble. Cela peut être facilement fondu/rayé plus tard si nécessaire.

3, Le câblage zéro OrangePI La mauvaise nouvelle est que le brochage Orange PI n'est PAS le même que le Raspberry PI 0/1/2/3 et il y a même une différence entre les autres modèles Orange PI. La meilleure façon de procéder est d'obtenir la bibliothèque de câblage (version Orange PI Zero). L'image peut être un peu déroutante, mais ce sont les meilleures que j'ai pu trouver. L'un est un miroir à 180 degrés de l'autre. Bien que l'image CLI non graphique puisse être plus difficile à comprendre, c'est la plus simple.

Vous pouvez toujours différencier les 2 extrémités des prises en considérant une extrémité comme l'extrémité POSITIVE avec le (+3,3/+5V) et l'autre comme l'extrémité NÉGATIVE (une GND) -> c'est l'extrémité du connecteur face au port ETHERNET.

Dans le tableau Wiring PI Zero, vous n'aurez besoin que d'une colonne, le wPI oublie les autres comme s'ils ne seraient pas là.

Ainsi par exemple pour connecter le LCD_E 15 (c'est-à-dire le wPI 15 !) et le LCD_RS 16 (c'est-à-dire le wPI 16 !), comptez les broches de l'extrémité POSITIVE du connecteur (facile à faire avec un stylo ou un petit tournevis). Cela descendra physiquement de 4 broches et 5 broches.

4, groupe vers le haut. S'il y a une possibilité de mettre les broches utilisées les unes à côté des autres (les regrouper), choisissez toujours cela, cela les fait tenir les unes par les autres même sans colle chaude et aussi dans d'autres projets lorsque vous avez 2x 4x 6x connecteurs molex, vous pouvez profitez simplement que les broches soient côte à côte. Ici, le mieux que vous puissiez faire est un groupe de 2-3 (idéal lorsque vous utilisez des câbles de démarrage récupérés d'anciens PC).

Broches utilisées pour la connexion de l'écran LCD OrangePI:

//UTILISER LES NUMÉROS DE PIN WIRINGPI

#define LCD_E 15 //Activer la broche #define LCD_RS 16 //Enregistrer la broche de sélection #define LCD_D4 5 //Data broche 4 #define LCD_D5 6 //Data broche 5 #define LCD_D6 10 //Data broche 6 #define LCD_D7 11 // Broche de données 7

Broches utilisées pour le contrôle du rétroéclairage RVB

$G écrire 1 0

$G écrire 4 1 $G écrire 7 1

Orange PI zéro wPI broches 1, 4, 7. La seule magie que cet écran LCD peut faire par rapport à l'écran LCD à rétroéclairage bleu ou vert fixe standard où vous avez une seule cathode qui doit être abaissée à GND qu'il a 3 pour le 3 couleurs. Rouge, vert et bleu. En changeant la combinaison dont l'une est activée, vous pouvez mélanger différentes couleurs à partir de ces couleurs de base, mais uniquement les hautes extrémités sans nuances car vous ne pouvez pas contrôler la luminosité d'une couleur (elle est activée ou désactivée).

Mélange additif de couleur: l'ajout de rouge au vert donne du jaune; l'ajout de rouge au bleu donne du magenta; l'ajout de vert au bleu donne du cyan; l'addition des trois couleurs primaires donne du blanc.

Étape 3: Système d'exploitation

Système opérateur
Système opérateur

L'OrangeBOX démarre et le noyau Armbian Linux (basé sur Debian Stretch) 4.14.18-sunxi avec un environnement sécurisé pare-feu, se connecte à un VPN et attend les commandes de sauvegarde à distance du serveur.

Principes de conception:

-Cryptage complet du disque basé sur luks (le périphérique lui-même ne contient pas la clé pour ouvrir le lecteur de sauvegarde. Il sera temporairement copié du serveur distant vers le ram /dev/shm, le lecteur ouvert et la clé effacée. Une fois la sauvegarde terminée le variateur s'est fermé et l'OrangeBox s'éteint automatiquement en 1 minute.)

-Toutes les commandes et clés sont envoyées depuis le serveur distant (l'appareil lui-même ne contient qu'un certificat vpn), il n'a AUCUN accès au serveur distant, même ssh à partir de cet appareil est protégé par un pare-feu

-Les systèmes de fichiers locaux non cryptés pour pouvoir démarrer mais ne contiennent rien d'utile et comme la liaison montante VPN est fortement restreinte à l'autre extrémité même avec la perte complète de l'appareil, un attaquant ne peut rien faire

Téléchargez le tronçon Armbian sur

Mettez le système en marche:

apt-get update && apt-get upgrade

apt-get install sysvinit-core sysvinit-utils

Editez le /etc/inittab, toute la console peut être désactivée car la box sera utilisée comme headless. Commentez la section suivante:

#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

Redémarrez votre box et supprimez systemd pour avoir un vrai système open source sans bloatware.

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

Installer certains paquets

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

Installer la bibliothèque wirepi

cd /usr/src

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

Créer un utilisateur orange pour l'écran LCD

groupadd -g 1000 orange

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

Le chien de garde qui ne veille pas sur vous

apt-get install chien de garde

En regardant /etc/default/watchdog # Démarrer le chien de garde au démarrage ? 0 ou 1 run_watchdog=1 # Démarrer wd_keepalive après avoir arrêté le chien de garde ? 0 ou 1 run_wd_keepalive=1 # Charger le module avant de démarrer watchdog watchdog_module="none" # Spécifier des options de watchdog supplémentaires ici (voir page de manuel).

En regardant /etc/watchdog.conf

# Activez au moins ces

max-load-1 = 24 max-load-5 = 18 max-load-15 = 12

/etc/init.d/watchdog start

Il doit y avoir au moins 1 thread noyau et 1 processus:

racine 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

Essai:

Assurez-vous de tout arrêter et de faire une synchronisation && sync && sync pour écrire le reste des données sur le disque. Puis en tant que problème racine:

echo 1 > /dev/chien de garde

Après quelques secondes, la machine devrait redémarrer.

Comme le dit le manuel:

o La table de processus est-elle pleine ?

o Y a-t-il suffisamment de mémoire libre ? o Y a-t-il suffisamment de mémoire allouable ? o Certains fichiers sont-ils accessibles ? o Certains fichiers ont-ils changé dans un intervalle donné ? o La charge de travail moyenne est-elle trop élevée ? o Un débordement de la table des fichiers s'est-il produit ? o Un processus est-il toujours en cours d'exécution ? Le processus est spécifié par un fichier pid. o Certaines adresses IP répondent-elles au ping ? o Les interfaces réseau reçoivent-elles du trafic ? o La température est-elle trop élevée ? (Les données de température ne sont pas toujours disponibles.) o Exécutez une commande définie par l'utilisateur pour effectuer des tests arbitraires. o Exécutez une ou plusieurs commandes de test/réparation trouvées dans /etc/watchdog.d. Ces commandes sont appelées avec l'argument test ou repair. Si l'une de ces vérifications échoue, le chien de garde provoquera un arrêt. Si l'un de ces tests, à l'exception du binaire défini par l'utilisateur, dure plus d'une minute, la machine sera également redémarrée.

Ce chien de garde a peut-être bien fonctionné sur les architectures x86 classiques, mais sur les cartes basées sur ARM telles que les Raspberry PI, les Orange PI, il m'a échoué d'innombrables fois. Le système peut entrer dans des états de blocage où même le chien de garde est bloqué. Configurons-le de toute façon peut-être qu'il sera amélioré avec une mise à niveau apt-get au fil des ans:(

Étape 4: Conception du logiciel

Conception de logiciels
Conception de logiciels

Le processus de sauvegarde lui-même est basé sur rsync (le meilleur outil de sauvegarde jamais inventé), les données sont transmises depuis le SERVER-> OrangeBOX.

L'extraction des données de rsync était la seule partie difficile du projet à avoir une barre de progression sur la sauvegarde imprimée sur l'écran LCD.

Il y avait 3 façons possibles de calculer la progression de la sauvegarde:

1, en utilisant des formules telles que https://wintelguy.com/transfertimecalc.pl pour déterminer le temps approximatif que le transfert peut prendre

Heure de transfert (j:h:m:s): 0:02:44:00

A titre de comparaison: Temps estimé pour transférer le fichier 123 Go sur différentes liaisons réseau (d:h:m:s): ligne 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

Si le rsync se termine, il signale au script d'arrêter le calcul. Cette méthode n'est qu'approximative et non fiable, de plus la vitesse de la liaison n'est pas fixe, elle peut ralentir, accélérer à nouveau. Ce n'est qu'un calcul théorique.

2, effectuer des vérifications de taille sur le répertoire pour déterminer la quantité de données que nous avons déjà synchronisée. Peut devenir très lent avec des centaines de Go de petits fichiers (bien que du -s sous Linux fasse un peu de cache si vous le réexécutez)

Hôte A -> Données du serveur à sauvegarder Rép. données: 235 Go

Hôte B -> Données client Orange box que nous avons en ce moment Dir des données: 112 Go

Le delta est de 123 Go.

3, si le système de fichiers est dédié comme dans notre cas /dev/mapper/backup, nous pouvons profiter de l'indicateur d'utilisation globale du système de fichiers pour déterminer comment progresse notre sauvegarde et c'est vraiment très rapide. Dans ce cas, nous n'avons même pas besoin de diriger la sortie standard rsync n'importe où, exécutez simplement un rsync sec, attendez qu'il se termine, calculez le delta en octets et recoupez-le avec l'espace libre que nous avons sur le lecteur de sauvegarde et le tour est joué maintenant faire un joli graphique à barres. C'est la méthode que j'ai choisie et voici mon script pour cela:

#!/bin/bash

# Calculateur de progression de sauvegarde pour OrangeBOX par NLD # Version: 0.2 (2018-03-05) # # Exécutez-le en tant qu'utilisateur non privilégié depuis cron # * * * * * /home/orange/backup_progress.sh &> /dev/null # # Ce script n'est responsable que de l'affichage des données sur l'écran LCD, il communique # avec le programme principal indirectement via les fichiers de position et de verrouillage. BACKUP_DRIVE="/dev/mapper/backup" VFILE="$HOME/start.pos" # utilisation du disque au début de la sauvegarde TFILE="$HOME/trans.size" # taille globale de transfert précalculée BFILE="$HOME/ backup.lck" # détermine l'état de démarrage FFILE="$HOME/backup.fin" # détermine l'état terminé LFILE1="$HOME/lcd1.bar" # Données de l'indicateur de progression LCD LFILE2="$HOME/lcd2.bar" # Progression LCD indicateur de données SHUTDOWN="1" # Si 1, il lancera un autre script qui fermera la boîte à la fin de la sauvegarde BACKUP_CURRENT="0" # Doit être initialisé mais sera calculé # Taille du lecteur en octets (secondaire 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 } # État clair (défini au démarrage par bootup_display.sh). Aucune sauvegarde n'est en cours, ne gâchez PAS l'écran LCD d'état #. N'afficher la progression qu'en cas de sauvegarde en cours => Pas de fichier de démarrage ET Pas de fichier fin = quitter si [! -f $BFILE] && [! -f $FFILE]; then exit 1 fi # Si la sauvegarde est terminée, ce script l'affichera et enlèvera les verrous # pour ne plus pouvoir s'exécuter avant la prochaine initiation. if [-f $FFILE]; puis vert $LCD " Sauvegarde " " ** Terminé **" echo "Sauvegarde terminée" rm -rf $BFILE $TFILE $FFILE $LFILE1 $LFILE2 $VFILE # La sauvegarde a terminé le nettoyage if [$SHUTDOWN == "1"]; then echo "Executing shutdown script…" /home/orange/shutdown.sh & fi exit 0 fi # A partir de ce point, le script s'exécute UNIQUEMENT s'il y a une sauvegarde EN COURS # donc toutes les erreurs seront imprimées sur l'écran LCD et provoqueront le script # pour abandonner, mais cela ne supprimera pas le fichier backup.lck, il ira donc ici # encore et encore et évaluera les conditions. is_mount $BACKUP_DRIVE if [$status -ne 0]; puis le rouge $LCD "ERR: Le lecteur de sauvegarde" "n'est pas monté!" echo "Le lecteur de sauvegarde n'est pas monté" exit 1 fi if [! -s $IMPT]; puis rouge $LCD "ERR: transfile" "est vide" echo "Le fichier de calcul de la taille du transport est vide." exit 1 fi BACKUP_OVERALL=$(head -1 $TFILE |tr -d '\n') if [-z $BACKUP_OVERALL]; puis rouge $LCD "ERR: Size readback" "from server invalid" echo "Backup global size readback is invalid 1" exit 1 fi if !

Bien que le code soit simple, voici une description de ce qu'il fait:

1, si le BFILE ou le FFILE n'existe pas (ce qui est l'état après un démarrage clair), cela indique qu'il n'y a pas de processus de sauvegarde, alors ne faites rien, quittez. De cette façon, vous pouvez représenter graphiquement toutes les informations intéressantes que vous souhaitez concernant le démarrage, telles que le nom d'hôte, l'adresse IP, la disponibilité, etc.

2, Passons à la section is_mount $BACKUP_DRIVE. Juste un rappel, la seule façon dont nous sommes arrivés ici est qu'une sauvegarde a été lancée afin que le BFILE existe. Maintenant, le code effectue simplement diverses vérifications d'erreurs telles que le lecteur de sauvegarde est-il monté ?, la taille globale de ce que nous allons sauvegarder dépasse-t-elle le lecteur ? ou d'autres erreurs. N'oubliez pas qu'il s'agit d'un programme DISPLAY uniquement, même si la taille dépasse les sauvegardes, il n'abandonnera rien.

3, OK toutes les vérifications d'erreurs ont effacé le temps pour calculer le graphique en pourcentage. Tout d'abord, le script prend un "instantané" de l'espace utilisé en octets sur le système de fichiers de sauvegarde en ce moment et le stocke dans VFILE. Quel est le but de ceci: un script bash est sans état, il perd des données entre les exécutions, donc si vous voulez « vous souvenir » de certaines données de l'exécution précédente, vous devez les stocker quelque part. Dans notre cas, il ne s'agit que d'un simple fichier texte. Pour faire simple, disons que notre START_POS est de 1 Go (données dont nous disposons), ce que nous voulons sauvegarder est de +2 Go et la capacité globale du disque est de 10 Go.

4, la prochaine fois que le script s'exécutera, le VFILE existera et celui-ci sera relu (donc nous savons quelle était la position de départ au cas où le lecteur n'était pas vide) pour calculer le BACKUP_CURRENT qui est essentiellement un delta de l'espace utilisé en ce moment sur le lecteur de sauvegarde moins la position de départ ce que nous avons enregistré dans le VFILE lors du dernier tour (encore une fois, ce sont les données que nous avions sur le lecteur lorsque la sauvegarde a commencé). Le script fonctionne en interne avec des octets mais pour simplifier les choses après une demi-heure, nous avons sauvegardé 500 Mo de données, la formule serait BACKUP_CURRENT = 1,5 Go - 1 Go (état initial) => ce qui nous redonne exactement les données réelles 500 Mo, c'est-à-dire ce que nous avons sauvegardé jusqu'à présent. Vous pouvez voir que sans garder une trace de ce qu'étaient les données d'origine au début de la sauvegarde, ce calcul de taille échouerait car il verrait que l'espace utilisé actuellement est de 1,5 Go sans savoir que 1 Go de données était là sur le disque tout au long provenant d'une sauvegarde précédente, cela supposerait donc que le serveur nous a envoyé 1,5 Go de données au lieu de 500 Mo.

5, BACKUP_OVERALL sera lu, ces données ont été calculées par le serveur lors de la synchronisation sèche initiale (il s'agit donc d'une source de données externe contenant le nombre d'octets qui seront sauvegardés à partir de Server-> OrangeBOX). Cette valeur sera comparée à l'espace libre global sur le disque pour le moment et si elle la dépasse, un message d'erreur s'affichera sur l'écran lcd et le script arrêtera l'exécution. Rappelez-vous encore que tout ce que fait ce script est d'afficher UNIQUEMENT, il n'interfère pas avec le processus de sauvegarde. Si vous nettoyez des fichiers sur le disque ou que la quantité de fichiers change à distance et que, par conséquent, BACKUP_OVERALL change à un moment donné, cela se poursuivra.

6, Enfin, nous avons terminé avec les vérifications de deuxième niveau, il est temps d'afficher quelque chose. Le script affiche à la fois les données sur la console et sur l'écran LCD à l'aide d'une simple application C. L'arrière-plan passe au BLEU indiquant que la sauvegarde a finalement commencé et la progression calculée par la formule suivante PROGRESS=$((($BACKUP_CURRENT * 100) / $BACKUP_OVERALL)). Il s'agit d'un calcul de pourcentage de base, nous prenons le montant actuel, dans notre exemple 0,5 Go*100/2 Go = 25 %.

7, les nombres sont également convertis d'octets en octets Mega/Giga et l'écran s'affiche automatiquement en Mo s'il est inférieur à 1 Go.

8, Une chose qui reste à cartographier dans notre cas est le 25% sur un écran LCD à 20 colonnes. Ce serait 25 * 20 / 100 = 5 dans notre exemple. Actuellement, le rafraîchissement avec le programme LCD est implémenté et chaque fois que vous appelez le programme, il redessine tout l'écran. Donc, dans ce cas, il exécuterait une boucle for 5 fois pour dessiner 5 hashmarks # sur l'écran, cela apparaîtrait comme un scintillement laid à chaque tour. les 5 tours contiendraient ##### et ceci est relu et affiché sur l'écran LCD. Vous pouvez également mettre LFILE1 et 2 sur ramdisk pour sauver la carte SD des opérations d'écriture supplémentaires, cela ne m'a posé aucun problème, le script s'exécute une fois par minute à partir de cron.

9, une fois la sauvegarde terminée, l'autre script du serveur qui exécute rsync touchera le FFILE (Fichier de finition). À la prochaine boucle backup_progress.sh affichera alors que la sauvegarde est terminée et appelle éventuellement un autre script pour arrêter l'OrangeBOX. Il supprime ses fichiers de verrouillage à ce stade, rendant les exécutions impossibles, donc même si vous n'activez pas l'arrêt la minute suivante lorsque ce script s'exécute, il se fermera immédiatement car le BFILE n'est pas là et le FFILE n'est pas là. Par conséquent, il affichera le message de sauvegarde terminée indéfiniment à moins que la sauvegarde ne soit redémarrée.

Script de sauvegarde à distance (orange-remote.sh):

Vous devrez générer une clé ssh pour la sauvegarde et une clé pour le cryptage luks pour le lecteur. Lorsque vous exécutez la sauvegarde à distance manuellement pour la première fois, elle enregistre l'empreinte de l'hôte des boîtes orange dans le fichier hosts (à partir de ce point, elle peut être exécutée automatiquement par cron).

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

Pour connaître votre identifiant de disque dur, exécutez uuid, blkid ou recherchez simplement les répertoires /dev/disk/ correspondants.

Un répertoire d'exclusion peut être configuré si vous ne souhaitez pas tout sauvegarder. C'est un processus assez ennuyeux car pour rsync, si vous souhaitez exclure un seul sous-répertoire profondément dans la structure, vous devez faire:

+ /a

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

Étant donné que ce script exécute des commandes sur l'OrangeBOX à distance, il n'a aucune surveillance des variables de retour de ce côté, donc j'utilise quelques astuces intelligentes telles qu'il affichera le message d'ouverture du lecteur distant dans /tmp/contmsg.txt, puis analyse pour voir si cela a réussi, sinon, il change le binaire rsync en non exécutable afin que le rsync n'essaie pas de télécharger des données vers le rootfs OrangePIs en remplissant la carte SD. Également une bonne pratique pour définir le bit immuable sur chattr +i /mnt/backup pour rendre cela impossible.

Le précalcul de la taille s'effectue localement sur le serveur, ce fichier doit donc être envoyé à l'OrangeBOX à l'étape suivante.

La sauvegarde principale est initiée en boucle pour ((i=0;i<100;i++)); faire parce qu'en cas de connexions Internet DSL/câble de mauvaise qualité, rsync peut souvent s'interrompre, expirer. S'il se termine avec succès, la boucle sera interrompue sans essayer plus d'itérations. Cela fonctionne parfaitement avec de bons systèmes d'exploitation, mais si pour une raison quelconque, le boîtier distant était Windows et que l'accès était refusé comme régulièrement sur NTUSER. DAT, rsync renverrait un code d'erreur et cette boucle s'exécuterait 100 fois, puis échouerait toujours.

Étape 5: Fermeture et liste de tâches

Fermeture et liste de tâches
Fermeture et liste de tâches
Fermeture et liste de tâches
Fermeture et liste de tâches

Mon instructable montre une fois de plus comment vous pouvez créer vous-même quelque chose de meilleur et de plus personnalisable à partir d'un ordinateur à 10 $ qui bat l'enfer de Buffalo avec ses périphériques NAS verrouillés propriétaires, un partitionnement interne étrange, un linux paralysé avec des outils de segmentation, gérés par leur logiciel Windows, firmware fermé, mauvaise documentation et support et peu importe combien d'argent vous dépenserez, vous n'obtiendrez jamais d'indicateur de progression montrant votre sauvegarde sans parler de l'aspect cool de l'OrangeBox (j'utilise même un câble CAT5 orange avec:D).

Les mini-ordinateurs devenant de plus en plus puissants tout en maintenant le même prix < 100$, nous pouvons les utiliser pour de plus en plus de tâches. Comme les ports Ethernet Gbe sont assez courants de nos jours dans un à deux ans, la mémoire sur ces cartes augmentera considérablement et ils peuvent également être utilisés pour les systèmes de sauvegarde basés sur ZFS.

-Indicateur de progression à grain fin par le programme C (voir WasserStation un de mes autres projets). À l'heure actuelle, seulement # hashmark # caractères utilisés en mode caractère avec lcdPuts (lcd, line1), cela pourrait être amélioré même en utilisant des écrans LCD de caractères pour diviser 1 colonne en 5 parties et le programme C principal pourrait simplement prendre un entier comme 25 et tirer la barre de progression correctement ou encore améliorée en utilisant un écran LCD graphique

-Possibilité d'avoir un disque dur amovible pour créer de nouvelles et nouvelles sauvegardes et les déplacer vers différents emplacements (si la box détecte un lecteur vide alors elle doit le formater automatiquement avec la clé de cryptage une fois qu'elle a été reçue).

-Si vous souhaitez imprimer votre propre boîtier avec makerbot, l'OrangeNAS pourrait vous intéresser:

Conseillé: