Tabla de contenido:

OrangeBOX: Dispositivo de almacenamiento de respaldo seguro basado en OrangePI: 5 pasos
OrangeBOX: Dispositivo de almacenamiento de respaldo seguro basado en OrangePI: 5 pasos

Video: OrangeBOX: Dispositivo de almacenamiento de respaldo seguro basado en OrangePI: 5 pasos

Video: OrangeBOX: Dispositivo de almacenamiento de respaldo seguro basado en OrangePI: 5 pasos
Video: Tu propia "NUBE" de forma sencilla 2024, Noviembre
Anonim
OrangeBOX: Dispositivo de almacenamiento de respaldo seguro basado en OrangePI
OrangeBOX: Dispositivo de almacenamiento de respaldo seguro basado en OrangePI
OrangeBOX: Dispositivo de almacenamiento de respaldo seguro basado en OrangePI
OrangeBOX: Dispositivo de almacenamiento de respaldo seguro basado en OrangePI

OrangeBOX es una caja de respaldo de almacenamiento remoto todo en uno para cualquier servidor.

Su servidor puede estar infectado, corrompido, borrado y todos sus datos aún están seguros en el OrangeBOX y a quién no le gustaría una misión imposible como un dispositivo de respaldo, simplemente conecte y vea un indicador de progreso sin hacer nada más (solo espero que la magia no saldrá humo al final:)).

El OrangeBOX es mi primer proyecto, que es principalmente un software, no un truco de hardware. Básicamente es un NAS construido a medida con una pantalla LCD adjunta.

Paso 1: Piezas de hardware

Piezas de hardware
Piezas de hardware
Piezas de hardware
Piezas de hardware
Piezas de hardware
Piezas de hardware

El Orange PI zero es una computadora de placa única de código abierto. Puede ejecutar Android 4.4, Ubuntu, Debian. Utiliza el SoC AllWinner H2 y tiene 256 MB / 512 MB de DDR3 SDRAM (la versión de 256 MB es la versión estándar. Orange Pi Zero es para cualquiera que quiera comenzar a crear con tecnología, no solo consumirla. Es una herramienta simple, divertida y útil que puede usar para comenzar a tomar el control del mundo que lo rodea (https://www.orangepi.org/orangepizero/). Así que es exactamente para nosotros, sigamos adelante:)

  • Caja de metal / plástico / madera (he usado una vieja caja externa de CD-RW de Yamaha)
  • Orange PI Zero o mejor (la configuración de pines GPIO puede cambiar si usa otro modelo)
  • Pantallas LCD 2x20 RGB
  • Cualquier unidad usb SFF 3.5 / LFF 2.55
  • Sata -> adaptador usb. Tenga en cuenta que, si bien el OrangePI no impone un límite superior en la capacidad máxima de la unidad, muchos puentes USB a SATA lo hacen (2 TB máx.). El PI Zero naranja que utilizo solo tiene un puerto USB 2.0 con una tasa de transferencia efectiva de 28 MB / s como máximo. Elegí un USB3.0 (preparado para futuras actualizaciones) -> Puente SATA (no se mencionará la marca) y limita el límite, por lo que es mejor elegir un puente que haya demostrado ser compatible con unidades más grandes, como puentes basados en chips JMicron JMS567.. Haga su propia investigación antes de comprar uno. Puedo vivir con el límite de velocidad y disco duro usando una unidad sata de 2TB en este proyecto (si coloca unidades más grandes, se reconocerá, pero el sistema operativo solo verá los primeros 2TB, por lo que el resto de la capacidad será perdió).
  • Adaptador de amperaje de 12 V, 2,5 A o superior. Calcule aproximadamente 500 mA de uso normal para OPI Zero y 1,5 A pico para una unidad LFF SATA estándar. Sobredimensionar nunca está de más. En mi configuración, la fuente de alimentación de Yamaha (que podría haber suministrado corriente más que suficiente en ambos rieles de 12 + 5V) desafortunadamente explotó: (debido a ordenar el interruptor principal a GND por un segundo, así que tuve que pegar un adaptador normal, en al menos hizo que la caja fuera un par de gramos más liviana.
  • Convertidor reductor DC-DC 12V-> 5V. Usé el mismo mini dólar ajustable que con IronForge, funciona perfectamente.

Opcional

Si está dispuesto a gastar + 10 $, puede obtener el Orange Pi Plus (https://www.armbian.com/orange-pi-one-plus/), que tiene un factor de forma similar y le ofrece Gbe y SATA3. Para esto, se puede usar la biblioteca de cableado Libra PI: https://github.com/OrangePiLibra/WiringPi pero dado que el pinout GPIO es diferente, está fuera del alcance de este escrito.

También puede hacer esta compilación con el nuevo Orange PI Plus2 que tiene conector SATA y puede omitir el uso de convertidores sata-> usb junto con sus limitaciones. Si planea usar FreeBSD u otros BSD, la serie Orange PI podría no ser la mejor opción ya que su soporte de hardware es limitado (por ejemplo, necesita usar una memoria USB para arrancar). Para los BSD, el mejor consejo es utilizar Raspberry PI. Tanto el código C para la pantalla LCD como todos los scripts de shell son portables a cualquier otro sistema UNIX.

Paso 2: Diseño de hardware

Diseño de hardware
Diseño de hardware
Diseño de hardware
Diseño de hardware
Diseño de hardware
Diseño de hardware

La caja de Yamaha era suficiente para almacenar todo esto, no tendría suficiente espacio para una PC Orange PI o una placa de factor de forma Raspi normal.

El Ethernet se sacó con un extensor en la parte posterior de la caja. Recuerda que el Orange PI zero solo tiene una interfaz Ethernet de 100mbit / s si quieres más rápido necesitarás usar otra placa como Asus Tinkerboard / RPI3B + / Otros modelos Orange PI.

La salida de PIN incorrecto es el único error que puede cometer en este proyecto, por lo que vale la pena aplicar algunos principios de la regla del pulgar:

1, intente siempre usar el mismo cable de color de FINAL a FINAL. Yo mismo cometo el mismo "error" en algunos proyectos en los que no lo hago, simplemente porque no tengo suficientes cables macho-macho / macho-hembra / hembra-hembra a mano y conecto 2 para continuar. el circuito. Si no documenta correctamente su trabajo, esto puede provocar dolores de cabeza años después, cuando tenga que hacer una reparación, una actualización.

2, aplique un poco de pegamento caliente a los conectores. En caso de utilizar estos cables mm / mf / ff de estilo arduino-starter kit que no son de la mejor calidad, es bastante común (especialmente si se mueve / transporta el dispositivo) que los conectores se salgan. Si sabe que será un dispositivo de uso a largo plazo (¡¿posiblemente usarlo hasta que se rompa?!), Entonces es mejor aplicar un poco de pegamento caliente tanto en el lado OrangePI como en el lado LCD de los conectores para mantenerlos juntos. Esto se puede derretir / raspar fácilmente más adelante si es necesario.

3. El cableado cero OrangePI La mala noticia es que el pinout Orange PI NO es el mismo que el Raspberry PI 0/1/2/3 e incluso hay una diferencia entre otros modelos Orange PI. La mejor manera de hacerlo es obtener la biblioteca de cableado (versión Orange PI Zero). La imagen puede ser un poco confusa, pero estos fueron los mejores que pude encontrar. Uno es un espejo de 180 grados del otro. Aunque la imagen no gráfica CLI puede ser más difícil de comprender, es la más sencilla.

Siempre puede diferenciar los 2 extremos de los enchufes considerando un extremo como el extremo POSITIVO con el (+ 3.3 / + 5V) y el otro como el extremo NEGATIVO (un GND) -> este es el extremo del conector que mira hacia el puerto ETHERNET.

De la tabla Wiring PI Zero, solo necesitará una columna para que el wPI se olvide de las otras como si no estuvieran allí.

Entonces, por ejemplo, para conectar el LCD_E 15 (¡es decir, wPI 15!) Y LCD_RS 16 (¡es decir, wPI 16!), Cuente los pines del extremo POSITIVO del conector (fácil de hacer con un bolígrafo o un destornillador pequeño). Eso será físicamente bajar 4 pines y 5 pines.

4, Agrupar. Si existe la posibilidad de colocar los pines usados uno al lado del otro (agrupándolos), elija siempre eso, hace que se mantengan unidos incluso sin pegamento caliente y también en otros proyectos cuando tiene conectores molex 2x 4x 6x puede Aproveche que los pines están uno al lado del otro. Aquí, lo mejor que puede hacer es un grupo de 2-3 (ideal cuando se utilizan cables de puente recuperados de PC antiguas).

Pines utilizados para la conexión de la pantalla LCD OrangePI:

// USE NÚMEROS DE PIN WIRINGPI

#define LCD_E 15 // Habilitar pin #define LCD_RS 16 // Registro de selección de pin #define LCD_D4 5 // Pin de datos 4 #define LCD_D5 6 // Pin de datos 5 #define LCD_D6 10 // Pin de datos 6 #define LCD_D7 11 // Pin de datos 7

Pines utilizados para el control de la luz de fondo RGB

$ G escribe 1 0

$ G escribe 4 1 $ G escribe 7 1

Naranja PI zero wPI pines 1, 4, 7. La única magia que puede hacer esta pantalla LCD en comparación con la pantalla LCD de luz de fondo azul fija o verde fija estándar en la que tiene un solo cátodo que debe bajarse a GND es que tiene 3 para el 3 colores. Rojo, verde y azul. Al cambiar la combinación de cuál está encendido, puede mezclar diferentes colores de estos colores base, pero solo los extremos altos no tienen sombras porque no puede controlar el brillo de un color (está encendido o apagado).

Mezcla de colores aditivos: la adición de rojo a verde produce amarillo; agregar rojo al azul produce magenta; la adición de verde a azul produce cian; la suma de los tres colores primarios juntos produce el blanco.

Paso 3: sistema operativo

Sistema operativo
Sistema operativo

El OrangeBOX arranca y Armbian Linux (basado en Debian Stretch) 4.14.18-sunxi kernel con un entorno seguro con cortafuegos, se conecta a una VPN y espera los comandos de copia de seguridad remota del servidor.

Criterios de diseño:

-Cifrado de disco completo basado en luks (el dispositivo en sí no contiene la clave para abrir la unidad de respaldo. Se copiará temporalmente desde el servidor remoto al ram / dev / shm, la unidad se abrirá y la clave se borrará. Una vez finalizada la copia de respaldo la unidad se cierra y el OrangeBox se apaga automáticamente en 1 minuto).

-Todos los comandos y claves se envían desde el servidor remoto (el dispositivo en sí solo contiene un certificado vpn) no tiene NINGÚN acceso al servidor remoto, incluso ssh desde este dispositivo está protegido contra el fuego

-Los sistemas de archivos locales no están cifrados para poder arrancar, pero no contienen nada útil y, dado que el enlace ascendente de VPN está muy restringido en el otro extremo, incluso con la pérdida completa del dispositivo, el atacante no puede hacer nada.

Descargue el Armbian Stretch de

Ponga el sistema en funcionamiento:

apt-get update && apt-get upgrade

apt-get install sysvinit-core sysvinit-utils

Edite / etc / inittab, toda la consola se puede deshabilitar ya que la caja se usará como headless. Comente la siguiente sección:

# 1: 2345: reaparición: / 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: reaparición: / sbin / getty 38400 tty6

Reinicie su caja y elimine systemd para tener un sistema libre de bloatware de código abierto real.

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

Instalar algunos paquetes

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

Instale la biblioteca de cableado

cd / usr / src

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

Crear usuario naranja para la pantalla lcd

groupadd -g 1000 naranja

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

El perro guardián que no te cuida

apt-get install perro guardián

Mirando / etc / default / watchdog # ¿Iniciar watchdog en el momento del arranque? 0 o 1 run_watchdog = 1 # ¿Iniciar wd_keepalive después de detener el perro guardián? 0 o 1 run_wd_keepalive = 1 # Cargue el módulo antes de iniciar el perro guardián watchdog_module = "none" # Especifique opciones adicionales del perro guardián aquí (consulte la página de manual).

Mirando /etc/watchdog.conf

# Al menos habilita estos

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

/etc/init.d/watchdog start

Debe haber al menos 1 hilo de kernel y 1 proceso:

raíz 42 0.0 0.0 0 0? I <10:50 0:00 [watchdogd] root 14613 0.0 0.2 1432 1080? SL 13:31 0:00 / usr / sbin / perro guardián

Pruebas:

Asegúrese de detener todo y sincronizar && sync && sync para escribir el resto de los datos en el disco. Entonces, como problema raíz:

echo 1> / dev / perro guardián

Después de unos segundos, la máquina debería reiniciarse.

Como dice el manual:

o ¿Está llena la mesa de proceso?

o ¿Hay suficiente memoria libre? o ¿Hay suficiente memoria asignable? o ¿Se puede acceder a algunos archivos? o ¿Han cambiado algunos archivos dentro de un intervalo determinado? o ¿La carga de trabajo promedio es demasiado alta? o ¿Se ha producido un desbordamiento de la tabla de archivos? o ¿Todavía se está ejecutando un proceso? El proceso se especifica mediante un archivo pid. o ¿Responden algunas direcciones IP al ping? o ¿Reciben tráfico las interfaces de red? o ¿La temperatura es demasiado alta? (Los datos de temperatura no siempre están disponibles). O Ejecute un comando definido por el usuario para realizar pruebas arbitrarias. o Ejecute uno o más comandos de prueba / reparación que se encuentran en /etc/watchdog.d. Estos comandos se llaman con el argumento prueba o reparación. Si alguna de estas comprobaciones falla, el perro guardián provocará un apagado. Si alguna de estas pruebas, excepto el binario definido por el usuario, dura más de un minuto, la máquina también se reiniciará.

Este perro guardián podría funcionar bien en las arquitecturas x86 normales, pero en placas basadas en ARM como Raspberry PI, Orange PI me falló innumerables veces. El sistema puede entrar en estados de suspensión en los que incluso el perro guardián está bloqueado. Configurémoslo de todos modos, tal vez se mejore con una actualización de apt-get a lo largo de los años:(

Paso 4: Diseño de software

Diseño de software
Diseño de software

El proceso de copia de seguridad en sí está basado en rsync (la mejor herramienta de copia de seguridad jamás inventada). Los datos se envían desde SERVER-> OrangeBOX.

Extraer los datos de rsync fue la única parte desafiante del proyecto para tener una barra de progreso sobre la copia de seguridad impresa en la pantalla LCD.

Había 3 formas posibles de calcular el progreso de la copia de seguridad:

1, utilizando fórmulas como https://wintelguy.com/transfertimecalc.pl para determinar el tiempo aproximado que puede tardar la transferencia

Tiempo de transferencia (d: h: m: s): 0: 02: 44: 00

A modo de comparación: tiempo estimado para transferir archivos de 123 GB a través de diferentes enlaces de red (d: h: m: s): línea 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 el rsync finaliza, indica al script que detenga el cálculo. Este método es solo aproximado y no confiable, además, la velocidad del enlace no es fija, puede ralentizarse y volverse a acelerar. Este es solo un cálculo teórico.

2, Hacer comprobaciones de tamaño en el directorio para determinar cuántos datos ya sincronizamos. Puede volverse muy lento con cientos de GB de archivos pequeños (aunque du -s en Linux hace algo de almacenamiento en caché si lo vuelve a ejecutar)

Host A -> Datos del servidor para respaldar Dirección de datos: 235GB

Host B -> Datos del cliente de caja naranja que tenemos ahora Directorio de datos: 112GB

El delta es 123 GB.

3, si el sistema de archivos está dedicado, como en nuestro caso / dev / mapper / backup, podemos aprovechar el indicador de uso general del sistema de archivos para determinar cómo está progresando nuestra copia de seguridad y esto es muy rápido. En este caso, ni siquiera necesitamos canalizar el rsync stdout en cualquier lugar, simplemente ejecute un rsync seco, espere hasta que se complete, calcule el delta en bytes y verifique esto con el espacio libre que tenemos en la unidad de respaldo y listo, podemos ahora haz un buen gráfico de barras. Este fue el método que elegí y aquí está mi script para ello:

#! / bin / bash

# Calculadora de progreso de copia de seguridad para OrangeBOX de NLD # Versión: 0.2 (2018-03-05) # # Ejecutarlo como usuario sin privilegios desde cron # * * * * * /home/orange/backup_progress.sh &> / dev / null # # Este script es responsable solo de mostrar datos en la pantalla LCD, se comunica # con el programa principal indirectamente a través de archivos de posición y bloqueo. BACKUP_DRIVE = "/ dev / mapper / backup" VFILE = "$ HOME / start.pos" # uso del disco al comienzo de la copia de seguridad TFILE = "$ HOME / trans.size" # tamaño total de transferencia precalculado BFILE = "$ HOME / backup.lck "# determina el estado de inicio FFILE =" $ HOME / backup.fin "# determina el estado finalizado LFILE1 =" $ HOME / lcd1.bar "# Datos del indicador de progreso del LCD LFILE2 =" $ HOME / lcd2.bar "# Progreso del LCD indicador de datos SHUTDOWN = "1" # Si es 1, iniciará otro script que cerrará el cuadro al final de la copia de seguridad BACKUP_CURRENT = "0" # Debe inicializarse pero se calculará DRIVE_SIZE = "" # Tamaño de la unidad en bytes (secundario check) LCD = "sudo / bin / lcd" función 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} # Borrar estado (establecido en el arranque por bootup_display.sh). No hay ninguna copia de seguridad en curso, NO estropee el # LCD de estado. Solo muestra el progreso en caso de que haya una copia de seguridad en curso => No hay archivo de inicio Y No hay archivo de fin = salir si [! -f $ BFILE] && [! -f $ ARCHIVO]; luego salga 1 fi # Si la copia de seguridad finalizó, este script lo mostrará y eliminará los bloqueos # para no poder ejecutarse nuevamente hasta la próxima iniciación. if [-f $ ARCHIVO]; luego verde $ LCD "Copia de seguridad" "** Completada **" echo "Copia de seguridad completada" rm -rf $ BFILE $ TFILE $ FFILE $ LFILE1 $ LFILE2 $ VFILE # La copia de seguridad terminó de limpiar si [$ SHUTDOWN == "1"]; luego repita "Ejecutando el script de apagado …" /home/orange/shutdown.sh & fi exit 0 fi # A partir de este punto, el script SOLO se ejecuta si hay una copia de seguridad CONTINUA # por lo tanto, todos los errores se imprimirán en la pantalla LCD y causarán el script # para abortar, sin embargo, no eliminará el archivo backup.lck, por lo que entrará aquí # una y otra vez y evaluará las condiciones. is_mount $ BACKUP_DRIVE if [$ status -ne 0]; luego $ LCD rojo "ERR: Unidad de respaldo" "¡no está montada!" echo "La unidad de respaldo no está montada" exit 1 fi si [! -s $ TFILE]; luego el $ LCD rojo "ERR: transfile" "está vacío" echo "El archivo de cálculo del tamaño de transporte está vacío." salir 1 fi BACKUP_OVERALL = $ (head -1 $ TFILE | tr -d '\ n') if [-z $ BACKUP_OVERALL]; luego rojo $ LCD "ERR: Readback de tamaño" "del servidor no válido" echo "La lectura de tamaño total de la copia de seguridad no es válida 1" exit 1 fi if!

Aunque el código es simple, aquí hay una descripción de lo que hace:

1, si el BFILE o FFILE no existe (que es el estado después de un inicio claro), eso indica que no hay un proceso de copia de seguridad, así que NO haga nada, simplemente salga. De esta manera, puede graficar cualquier información interesante que desee con respecto al arranque, como el nombre de host, la ip, el tiempo de actividad, etc., y no se estropeará.

2, saltemos a la sección is_mount $ BACKUP_DRIVE. Solo un recordatorio, la única forma en que llegamos aquí es que se inició una copia de seguridad para que exista BFILE. Ahora el código simplemente realiza varias comprobaciones de error, como ¿está montada la unidad de respaldo ?, ¿el tamaño total de lo que estamos a punto de respaldar excede la unidad? u otros errores. Recuerde que este es un programa de sólo DISPLAY, incluso si el tamaño excede las copias de seguridad, no abortará nada.

3, OK, todas las comprobaciones de error despejaron el tiempo para calcular el gráfico de porcentaje. Primero, el script toma una "instantánea" del espacio usado en bytes en el sistema de archivos de respaldo en este momento y lo almacena en VFILE. ¿Cuál es el propósito de esto? Un script bash no tiene estado, pierde datos entre ejecuciones, por lo que si desea "recordar" algunos datos de la ejecución anterior, debe almacenarlos en algún lugar. En nuestro caso, esto es solo un archivo de texto simple. Para simplificarlo, digamos que nuestro START_POS es 1GB (datos que tenemos), lo que queremos respaldar es + 2GB y la capacidad total del disco es 10GB.

4, la próxima vez que se ejecute el script, el VFILE existirá y se leerá (para que sepamos cuál era la posición de inicio en caso de que la unidad no estuviera vacía) para calcular el BACKUP_CURRENT, que es esencialmente un delta del espacio utilizado en este momento. en la unidad de respaldo menos la posición de inicio lo que hemos guardado en el VFILE en la última ronda (nuevamente, estos son los datos que teníamos en la unidad cuando comenzó la copia de seguridad). El script funciona internamente con bytes, pero para simplificarlo después de media hora hicimos una copia de seguridad de 500 MB de datos, entonces la fórmula sería BACKUP_CURRENT = 1.5GB - 1GB (estado inicial) => que nos devuelve exactamente los datos reales 500 MB, es decir lo que respaldamos hasta ahora. Puede ver que sin realizar un seguimiento de los datos originales al comienzo de la copia de seguridad, este cálculo de tamaño fallaría porque vería que el espacio utilizado en este momento es de 1,5 GB sin saber que 1 gig de datos estuvo allí en el disco todo el tiempo. procedente de una copia de seguridad anterior, por lo que se supondría que el servidor nos ha enviado 1,5 GB de datos en lugar de 500 MB.

5, se leerá BACKUP_OVERALL, estos datos fueron calculados por el servidor cuando realizó el rsync seco inicial (por lo que esta es una fuente de datos externa que contiene la cantidad de bytes que se respaldarán desde Server-> OrangeBOX). Este valor se comparará con el espacio LIBRE total del disco en ese momento y, si lo supera, se mostrará un mensaje de error en la pantalla LCD y el script detendrá la ejecución. Recuerde nuevamente que todo lo que hace este script es mostrar SOLAMENTE, no interfiere con el proceso de respaldo. Si limpia archivos en el disco o la cantidad de archivos cambia de forma remota y, por lo tanto, BACKUP_OVERALL cambia en un punto, continuará.

6, finalmente hemos terminado con las comprobaciones de segundo nivel, es hora de mostrar algo. La secuencia de comandos muestra los datos en la consola y en la pantalla LCD mediante una aplicación C simple. El fondo cambia a AZUL, lo que indica que la copia de seguridad finalmente comenzó y el progreso se calcula mediante la siguiente fórmula PROGRESS = $ ((($ BACKUP_CURRENT * 100) / $ BACKUP_OVERALL)). Este es un cálculo de porcentaje básico que tomamos la cantidad actual, en nuestro ejemplo 0.5GB * 100 / 2GB = 25%.

7. Los números también se convierten de bytes a bytes Mega / Giga y la pantalla se muestra automáticamente en MB si es inferior a 1 GB.

8. Una cosa que queda para mapear esto en nuestro caso es el 25% en una pantalla LCD de 20 columnas. Eso sería 25 * 20/100 = 5 en nuestro ejemplo. Actualmente está implementada la actualización con el programa LCD que cada vez que llames al programa volverá a dibujar toda la pantalla. Entonces, en este caso, se ejecutaría un bucle for 5 veces para dibujar 5 marcas de hash # en la pantalla, esto se mostraría como un parpadeo feo en cada ronda, así que en su lugar escribo los datos de la barra de progreso calculada en LFILE1 y 2, que en este caso después las 5 rondas contendrían ##### y esto se vuelve a leer y se muestra en la pantalla LCD. También puede poner LFILE1 y 2 en ramdisk para guardar la sdcard de operaciones de escritura adicionales, no me causó ningún problema, el script se ejecuta una vez cada minuto desde cron.

9. Cuando finalice la copia de seguridad, el otro script del servidor que ejecuta rsync tocará el FFILE (Finish File). En el siguiente ciclo, backup_progress.sh mostrará que la copia de seguridad se completó y, opcionalmente, llamará a otro script para apagar el OrangeBOX. Elimina sus archivos de bloqueo en este punto, lo que hace que sea imposible realizar más ejecuciones, por lo que incluso si no habilita el apagado en el minuto siguiente cuando se ejecuta este script, se cerrará de inmediato porque el BFILE no está allí y el FFILE no está allí. Por lo tanto, mostrará el mensaje de copia de seguridad completada de forma indefinida a menos que la copia de seguridad se reinicie de nuevo.

Script de copia de seguridad remota (orange-remote.sh):

Deberá generar una clave ssh para la copia de seguridad y una clave para el cifrado luks de la unidad. Cuando ejecute la copia de seguridad remota manualmente por primera vez, guardará la huella digital del host de las casillas naranjas en el archivo de hosts (desde este punto, puede ejecutarse automáticamente mediante cron).

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

Para averiguar el identificador de su disco duro, ejecute uuid, blkid o simplemente busque los directorios / dev / disk / correspondientes.

Se puede configurar una exclusión de inclusión de directorio si no desea hacer una copia de seguridad de todo. Este es un proceso bastante molesto porque para rsync, si desea excluir un solo subdirectorio en lo profundo de la estructura, debe hacer:

+ / a

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

Dado que este script está ejecutando comandos en OrangeBOX de forma remota, no tiene supervisión de las variables de retorno desde ese lado, por lo tanto, uso algunos trucos inteligentes, como que generará el mensaje de abrir la unidad remota en /tmp/contmsg.txt, luego analizar para ver si tuvo éxito, si no, cambia el binario rsync a no ejecutable para que rsync no intente cargar datos a los rootfs de OrangePI llenando la tarjeta SD. También es una buena práctica establecer el bit inmutable en chattr + i / mnt / backup para que esto sea imposible.

El cálculo previo del tamaño se realiza localmente en el servidor, por lo que este archivo debe enviarse al OrangeBOX en el siguiente paso.

La copia de seguridad principal se inicia como un bucle para ((i = 0; i <100; i ++)); Hacerlo porque en el caso de conexiones a Internet DSL / Cable de baja calidad, rsync a menudo puede romperse, se agota el tiempo de espera. Si se completa correctamente, el ciclo se interrumpirá sin intentar más iteraciones. Esto funciona perfectamente con buenos sistemas operativos, sin embargo, si por alguna razón la caja remota fuera Windows y se denegara el acceso como regularmente en NTUSER. DAT, entonces rsync devolvería un código de error y este bucle se ejecutaría 100 veces y luego aún fallaría.

Paso 5: Cierre y lista de tareas pendientes

Cierre y lista de tareas pendientes
Cierre y lista de tareas pendientes
Cierre y lista de tareas pendientes
Cierre y lista de tareas pendientes

Mi instructable demuestra una vez más cómo puede crear algo mejor, un dispositivo más personalizable desde una computadora de $ 10 por su cuenta que supera a Buffalo con sus dispositivos NAS bloqueados patentados, particiones internas extrañas, Linux paralizado de busybox con herramientas de segfaulting, administrado por su software de Windows, firmware cerrado, mala documentación y soporte y no importa cuánto dinero gaste, nunca obtendrá un indicador de progreso que muestre su copia de seguridad sin mencionar lo genial que se ve el OrangeBox (incluso uso un cable CAT5 naranja con él: D).

Con las mini computadoras cada vez más poderosas mientras mantienen la misma línea de precio <100 $, podemos usarlas para más y más tareas. Como los puertos Ethernet de Gbe son bastante comunes en estos días, en 1 o 2 años, la memoria en estas placas aumentará drásticamente y también se pueden usar para sistemas de respaldo basados en ZFS.

-Indicador de progreso de grano fino por el programa C (ver WasserStation uno de mis otros proyectos). En este momento, solo se usan # hashmark # caracteres en el modo de caracteres con lcdPuts (lcd, line1), esto podría mejorarse incluso cuando se usan pantallas LCD de caracteres para dividir 1 columna en 5 partes y el programa C principal podría simplemente tomar un número entero como 25 y extraer la barra de progreso correctamente o mejorada mediante el uso de una pantalla LCD gráfica

-Posibilidad de tener un disco duro extraíble para crear copias de seguridad nuevas y nuevas y moverlas a diferentes ubicaciones (si la caja detecta una unidad vacía, debe formatearla automáticamente con la clave de cifrado una vez que se haya recibido).

-Si desea imprimir su propio estuche con makerbot, OrangeNAS puede ser interesante para usted:

Recomendado: