Índice:
- Etapa 1: peças de hardware
- Etapa 2: Design de Hardware
- Etapa 3: sistema operacional
- Etapa 4: Design de software
- Etapa 5: Encerramento e lista de tarefas
Vídeo: OrangeBOX: Dispositivo de armazenamento de backup seguro baseado em OrangePI: 5 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:38
O OrangeBOX é uma caixa de backup de armazenamento remoto tudo-em-um para qualquer servidor.
Seu servidor pode ser infectado, corrompido, apagado e todos os seus dados ainda estão seguros no OrangeBOX e quem não gostaria de uma missão impossível como um dispositivo de backup que você acabou de conectar e ver um indicador de progresso sem fazer nada mais (espere a mágica a fumaça não vai sair no final:)).
O OrangeBOX é meu primeiro projeto que é principalmente um software, não um hack de hardware. É basicamente um NAS personalizado com um LCD conectado.
Etapa 1: peças de hardware
O Orange PI zero é um computador de placa única de código aberto. Ele pode rodar Android 4.4, Ubuntu, Debian. Ele usa o AllWinner H2 SoC e tem 256 MB / 512 MB DDR3 SDRAM (a versão de 256 MB é a versão padrão. Orange Pi Zero é para quem quer começar a criar com tecnologia - não apenas consumi-la. É uma ferramenta simples, divertida e útil para você pode usar para começar a assumir o controle do mundo ao seu redor (https://www.orangepi.org/orangepizero/). Portanto, é exatamente para nós, vamos em frente:)
- Caixa de metal / plástico / madeira (usei uma velha caixa externa de cd-rw da Yamaha)
- Laranja PI Zero ou melhor (a pinagem GPIO pode mudar se você usar outro modelo)
- 2x20 telas LCD RGB
- Qualquer unidade USB SFF 3.5 / LFF 2.55
- Sata -> adaptador USB. Lembre-se de que, embora o OrangePI não imponha um limite superior na capacidade máxima do disco, muitas pontes USB para SATA o fazem (2 TB no máximo). O PI Zero I laranja usa apenas uma única porta USB 2.0 com taxa de transferência efetiva de 28 MB / s máx. Eu escolhi um USB3.0 (preparado para atualizações futuras) -> ponte SATA (a marca não será mencionada) e ele limita o limite, então é melhor escolher uma ponte que comprovadamente suporta unidades maiores, como pontes baseadas no chip JMicron JMS567. Faça sua própria pesquisa antes de comprar um. Posso viver com a velocidade e o limite do disco rígido usando um drive sata de 2 TB neste projeto (se você colocar drives maiores, ele será reconhecido, mas o sistema operacional só verá os primeiros 2 TB dele, então o resto da capacidade será perdido).
- Adaptador de amplificador de 12 V 2,5 A ou superior. Calcule o uso normal de 500mA para o OPI Zero e 1,5A de pico para um drive LFF SATA padrão. Superdimensionar nunca é demais. Na minha configuração, a fonte de alimentação Yamaha (que poderia fornecer corrente mais do que suficiente em ambos os trilhos 12 + 5V), infelizmente explodiu: (devido à classificação do interruptor principal para GND por um segundo, então eu tive que colar um adaptador regular, em pelo menos, tornava a caixa alguns gramas mais leve.
- Conversor Buck DC-DC 12V-> 5V. Usei o mesmo mini fanfarrão ajustável do IronForge, funciona perfeitamente.
Opcional
Se você está disposto a gastar + 10 $, então você pode obter o Orange Pi Plus (https://www.armbian.com/orange-pi-one-plus/), que é um fator de forma semelhante e oferece Gbe e SATA3. Para isso, a biblioteca de conexões Libra PI pode ser usada: https://github.com/OrangePiLibra/WiringPi, mas como a pinagem GPIO é diferente, ela está fora do escopo deste escrito.
Você também pode fazer isso com o novo Orange PI Plus2 que tem um conector SATA e pode pular o uso de conversores sata-> usb com suas limitações. Se você planeja usar FreeBSD ou outros BSDs, a série Orange PI pode não ser a melhor escolha, já que seu suporte a hardware é limitado (por exemplo, você precisa usar um pendrive para inicializar). Para BSDs, o melhor conselho é usar Raspberry PI. Tanto o código C para o LCD quanto todos os scripts de shell são portáveis para qualquer outro sistema UNIX.
Etapa 2: Design de Hardware
A caixa da Yamaha era apenas o suficiente para armazenar tudo isso, ela não teria espaço suficiente para um Orange PI PC ou uma placa de fator de forma regular Raspi.
A Ethernet foi trazida com um extensor na parte de trás da caixa. Lembre-se de que o Orange PI zero só tem interface Ethernet de 100mbit / s, se você quiser mais rápido, precisará usar outra placa, como Asus Tinkerboard / RPI3B + / Outros modelos Orange PI.
PIN errado é o único erro que você pode cometer neste projeto, portanto, vale a pena aplicar alguns princípios básicos:
1, sempre tente usar o cabo da mesma cor de END para END. Eu mesmo cometo o mesmo "erro" em alguns projetos em que não, simplesmente porque não tenho cabos macho-macho / macho-fêmea / fêmea-fêmea longos disponíveis e eu conserto 2 juntos apenas para continuar com o circuito. Se você não documentar adequadamente seu trabalho, isso pode levar a dores de cabeça anos depois, quando você precisa fazer um reparo ou atualização.
2, aplique um pouco de cola quente nos conectores. No caso de usar esses cabos mm / mf / ff do estilo do kit inicial arduino que não são de alta qualidade, é bastante comum (especialmente se você mover / transportar o dispositivo) que os conectores escorreguem. Se você sabe que será um dispositivo de uso de longo prazo (possivelmente usará até quebre ?!), então é melhor aplicar um pouco de cola quente tanto no OrangePI quanto no lado LCD dos conectores para mantê-los juntos. Isso pode ser facilmente derretido / riscado mais tarde, se necessário.
3, A fiação zero OrangePI A má notícia é que a pinagem Orange PI NÃO é a mesma que a Raspberry PI 0/1/2/3 e há até mesmo diferença entre outros modelos Orange PI. A melhor maneira de fazer isso é obter a biblioteca de fiação (versão Orange PI Zero). A imagem pode ser um pouco confusa, mas esses foram os melhores que pude encontrar. Um é um espelho de 180 graus do outro. Embora a imagem não gráfica CLI possa ser mais difícil de compreender, é a mais direta.
Você sempre pode diferenciar a extremidade 2 dos soquetes, considerando uma extremidade como a extremidade POSITIVA com (+ 3.3 / + 5V) e a outra como a extremidade NEGATIVA (um GND) -> esta é a extremidade do conector voltado para a porta ETHERNET.
Na tabela Wiring PI Zero, você só precisará de uma coluna para que o wPI esqueça as outras como se elas não estivessem lá.
Por exemplo, para conectar o LCD_E 15 (ou seja, wPI 15!) E LCD_RS 16 (ou seja, wPI 16!) Conte os pinos da extremidade POSITIVA do conector (fácil de fazer com uma caneta ou chave de fenda pequena). Isso vai descer fisicamente 4 pinos e 5 pinos.
4, Grupo para cima. Se houver a possibilidade de colocar pinos usados próximos um do outro (agrupando-os) sempre opte por isso, faz com que se prendam um ao outro mesmo sem cola quente e também em outros projetos quando você tem 2x 4x 6x conectores molex que você pode apenas aproveite os pinos estando próximos um do outro. Aqui, o melhor que você pode fazer é um grupo de 2-3s (ideal ao usar cabos de jumper recuperados de PCs antigos).
Pinos usados para conexão da tela LCD OrangePI:
// USE NÚMEROS DE PIN WIRINGPI
#define LCD_E 15 // Habilitar pino #define LCD_RS 16 // Registro selecionar pino #define LCD_D4 5 // Pino de dados 4 #define LCD_D5 6 // Pino de dados 5 #define LCD_D6 10 // Pino de dados 6 #define LCD_D7 11 // Pino de dados 7
Pinos usados para controle de luz de fundo RGB
$ G escrever 1 0
$ G escrever 4 1 $ G escrever 7 1
Laranja PI zero wPI pinos 1, 4, 7. A única mágica que este LCD pode fazer em comparação com o LCD de retroiluminação normal fixo azul ou verde, onde você tem um único cátodo que precisa ser puxado para baixo até GND que tem 3 para o 3 cores. Vermelho, verde e azul. Ao alterar a combinação de qual está LIGADO, você pode misturar cores diferentes dessas cores básicas, mas apenas as pontas altas, sem sombras, porque você não pode controlar o brilho de uma cor (está ativado ou desativado).
Mistura de cor aditiva: adicionar vermelho a verde resulta em amarelo; adicionar vermelho ao azul resulta em magenta; adicionar verde a azul resulta em ciano; adicionar todas as três cores primárias juntas resulta em branco.
Etapa 3: sistema operacional
O OrangeBOX inicializa e o kernel Armbian linux (baseado no Debian Stretch) 4.14.18-sunxi com um ambiente seguro com firewall, se conecta a uma VPN e aguarda os comandos de backup remoto do servidor.
Princípios de design:
- Criptografia de disco totalmente baseada em luks (o dispositivo em si não contém a chave para abrir a unidade de backup. Ela será copiada temporariamente do servidor remoto para a ram / dev / shm, a unidade será aberta e a chave apagada. Após a conclusão do backup a unidade é fechada e o OrangeBox é desligado automaticamente em 1 minuto.)
- Todos os comandos e chaves são enviados do servidor remoto (o próprio dispositivo contém apenas um certificado vpn), ele não tem NENHUM acesso ao servidor remoto, mesmo o ssh deste dispositivo está protegido por firewall
-Os sistemas de arquivos locais não criptografados para serem capazes de inicializar, mas não contêm nada de útil e, uma vez que o uplink da VPN é altamente restrito na outra extremidade, mesmo com a perda completa do dispositivo, um invasor não pode fazer nada
Baixe o Armbian Stretch em
Coloque o sistema em funcionamento:
apt-get update && apt-get upgrade
apt-get install sysvinit-core sysvinit-utils
Edite o / etc / inittab, todo o console pode ser desabilitado já que a caixa será usada como headless. Comente a seguinte seção:
# 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
Reinicie sua máquina e remova o systemd para ter um verdadeiro sistema livre de bloatware de código aberto.
apt-get remove --purge --auto-remove systemd
Instale alguns pacotes
apt-get install cryptsetup vim htop rsync tela gcc make git
Instale a biblioteca wiringpi
cd / usr / src
git clone https://github.com/xpertsavenue/WiringOP-Zero.git cd WiringOP-Zero chmod + x./build./build
Criar usuário laranja para o display LCD
groupadd -g 1000 orange
useradd -m -d / home / orange -s / bin / bash -u 1000 -g laranja
O cão de guarda que não cuida de você
apt-get install watchdog
Olhando para / etc / default / watchdog # Iniciar watchdog no momento da inicialização? 0 ou 1 run_watchdog = 1 # Iniciar wd_keepalive após parar o watchdog? 0 ou 1 run_wd_keepalive = 1 # Carregue o módulo antes de iniciar o watchdog watchdog_module = "nenhum" # Especifique as opções adicionais do watchdog aqui (consulte a página de manual).
Olhando em /etc/watchdog.conf
# Ative pelo menos estes
max-load-1 = 24 max-load-5 = 18 max-load-15 = 12
/etc/init.d/watchdog start
Deve haver pelo menos 1 thread de kernel e 1 processo:
root 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
Teste:
Certifique-se de parar tudo e fazer uma sincronização && sync && sync para gravar o resto dos dados no disco. Então, como problema raiz:
echo 1> / dev / watchdog
Após alguns segundos, a máquina deve reiniciar.
Conforme afirma o manual:
o A mesa de processo está cheia?
o Há memória livre suficiente? o Há memória alocável suficiente? o Alguns arquivos estão acessíveis? o Alguns arquivos foram alterados em um determinado intervalo? o A carga de trabalho média é muito alta? o Ocorreu um estouro da tabela de arquivos? o Um processo ainda está em execução? O processo é especificado por um arquivo pid. o Alguns endereços IP respondem ao ping? o As interfaces de rede recebem tráfego? o A temperatura está muito alta? (Os dados de temperatura nem sempre estão disponíveis.) O Executar um comando definido pelo usuário para fazer testes arbitrários. o Execute um ou mais comandos de teste / reparo encontrados em /etc/watchdog.d. Esses comandos são chamados com o argumento test ou repair. Se alguma dessas verificações falhar, o watchdog causará um desligamento. Se algum desses testes, exceto o binário definido pelo usuário, durar mais de um minuto, a máquina também será reinicializada.
Este watchdog pode funcionar bem nas arquiteturas x86 regulares, mas em placas baseadas em ARM, como Raspberry PIs, Orange PIs, ele falhou inúmeras vezes. O sistema pode entrar em estados de travamento, onde até mesmo o watchdog está travado. Vamos apenas configurá-lo de qualquer maneira, talvez ele seja melhorado com uma atualização do apt-get ao longo dos anos:(
Etapa 4: Design de software
O processo de backup em si é baseado em rsync (a melhor ferramenta de backup já inventada). Os dados são enviados do SERVIDOR-> OrangeBOX.
Extrair os dados do rsync foi a única parte desafiadora do projeto para ter uma barra de progresso sobre o backup impresso no LCD.
Havia três maneiras possíveis de calcular o andamento do backup:
1, usando fórmulas como https://wintelguy.com/transfertimecalc.pl para determinar o tempo aproximado que a transferência pode levar
Tempo de transferência (d: h: m: s): 0: 02: 44: 00
Para comparação: Tempo estimado para transferir arquivo de 123 GB em diferentes links de rede (d: h: m: s): Linha 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 o rsync terminar, ele sinaliza ao script para interromper o cálculo. Este método é apenas aproximado e não confiável, também a velocidade do link não é fixa, pode desacelerar, acelerar novamente. Este é apenas um cálculo teórico.
2, Fazendo verificações de tamanho no diretório para determinar quantos dados já sincronizamos. Pode ficar muito lento com centenas de arquivos pequenos de GBs (embora du -s no Linux faça algum cache se você executá-lo novamente)
Host A -> Dados do servidor para backup. Dir. De dados: 235 GB
Host B -> Dados do cliente da caixa laranja que temos agora Dir. De dados: 112 GB
O delta é de 123 GB.
3, Se o sistema de arquivos for dedicado como em nosso caso / dev / mapper / backup, podemos aproveitar o indicador de uso geral do sistema de arquivos para determinar como está o progresso do nosso backup e isso é realmente rápido. Neste caso, não precisamos nem mesmo canalizar o rsync stdout para qualquer lugar, apenas execute um rsync seco, espere até que ele seja concluído, calcule o delta em bytes e verifique isso com o espaço livre que temos na unidade de backup e pronto, podemos agora faça um bom gráfico de barras. Este foi o método que escolhi e aqui está o meu script para ele:
#! / bin / bash
# Backup Progress Calculator for OrangeBOX por NLD # Versão: 0.2 (2018/03/05) # # Execute-o como usuário sem privilégios de cron # * * * * * /home/orange/backup_progress.sh &> / dev / null # # Este script é responsável apenas por exibir dados no LCD, ele se comunica # com o programa principal indiretamente por meio de arquivos de posição e bloqueio. BACKUP_DRIVE = "/ dev / mapper / backup" VFILE = "$ HOME / start.pos" # uso do disco no início do backup TFILE = "$ HOME / trans.size" # tamanho de transferência pré-calculado geral BFILE = "$ HOME / backup.lck "# determina o estado inicial FFILE =" $ HOME / backup.fin "# determina o estado finalizado LFILE1 =" $ HOME / lcd1.bar "# Dados do indicador de progresso do LCD LFILE2 =" $ HOME / lcd2.bar "# Progresso do LCD dados do indicador SHUTDOWN = "1" # Se 1 irá iniciar outro script que fecha a caixa no final do backup BACKUP_CURRENT = "0" # Tem que ser inicializado, mas será calculado DRIVE_SIZE = "" # Tamanho do drive em bytes (secundário verificar) LCD = função "sudo / bin / lcd" 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} # Limpar estado (definido na inicialização por bootup_display.sh). Nenhum backup está em andamento, NÃO bagunce o # LCD de status. Exibe o progresso apenas no caso de haver um backup em andamento => Nenhum arquivo inicial E Nenhum arquivo final = sair se [! -f $ BFILE] && [! -f $ FFILE]; then exit 1 fi # Se o backup for concluído, este script exibirá isso e removerá os bloqueios # para não poder ser executado novamente até a próxima iniciação. if [-f $ FFILE]; em seguida, verde $ LCD "Backup" "** Concluído **" echo "Backup concluído" rm -rf $ BFILE $ TFILE $ FFILE $ LFILE1 $ LFILE2 $ VFILE # Backup concluído limpar se [$ SHUTDOWN == "1"]; em seguida, echo "Executando script de desligamento …" /home/orange/shutdown.sh & fi exit 0 fi # Deste ponto, o script SÓ executa se houver um backup EM ANDAMENTO # portanto, todos os erros serão impressos no LCD e causarão o script # para abortar, no entanto, não removerá o arquivo backup.lck, portanto, entrará aqui # repetidamente e avaliará as condições. is_mount $ BACKUP_DRIVE if [$ status -ne 0]; então vermelho $ LCD "ERR: Backup drive" "não está montado!" echo "A unidade de backup não está montada" exit 1 fi if [! -s $ TFILE]; então vermelho $ LCD "ERR: transfile" "está vazio" echo "Arquivo de cálculo do tamanho de transporte está vazio." saída 1 fi BACKUP_OVERALL = $ (cabeça -1 $ TFILE | tr -d '\ n') if [-z $ BACKUP_OVERALL]; então vermelho $ LCD "ERR: tamanho readback" "do servidor inválido" echo "O tamanho total do backup readback é inválido 1" exit 1 fi if!
Embora o código seja simples, aqui está uma descrição do que ele faz:
1, Se o BFILE ou FFILE não existir (que é o estado após uma inicialização limpa), isso indica que não há processo de backup, então NÃO faça nada, apenas saia. Desta forma, você pode representar graficamente qualquer informação interessante sobre a inicialização, como o nome do host, ip, tempo de atividade, etc, e não será bagunçado.
2, vamos pular para a seção is_mount $ BACKUP_DRIVE. Só para lembrar, a única maneira de chegar aqui é que um backup foi iniciado para que o BFILE existisse. Agora, o código apenas faz várias verificações de erro, como a unidade de backup está montada ?, o tamanho geral do que estamos prestes a fazer o backup excede a unidade? ou outros erros. Lembre-se de que este é um programa apenas para DISPLAY, mesmo que o tamanho exceda os backups, ele não abortará nada.
3, OK, todas as verificações de erro cancelaram o tempo para calcular o gráfico de porcentagem. Primeiro, o script tira um "instantâneo" do espaço usado em bytes no sistema de arquivos de backup agora e o armazena no VFILE. Qual é o propósito disso: um script bash não tem estado, ele perde dados entre as execuções, então se você quiser "lembrar" alguns dados da execução anterior, você precisa armazená-los em algum lugar. No nosso caso, este é apenas um arquivo de texto simples. Para simplificar, digamos que nosso START_POS tenha 1 GB (dados que temos), o que queremos fazer backup é de + 2 GB e a capacidade geral do drive é de 10 GB.
4, Da próxima vez que o script for executado, o VFILE existe e será lido de volta (então sabemos qual foi a posição inicial caso o drive não estivesse vazio) para calcular o BACKUP_CURRENT que é essencialmente um delta do espaço usado agora na unidade de backup menos a posição inicial que salvamos no VFILE na última rodada (novamente, esses são os dados que tínhamos na unidade quando o backup começou). O script funciona internamente com bytes, mas para torná-lo simples depois de meia hora, fizemos backup de 500 MB de dados, então a fórmula seria BACKUP_CURRENT = 1,5 GB - 1 GB (estado inicial) => o que nos dá exatamente os dados reais de 500 MB, ou seja o que fizemos backup até agora. Você pode ver que, sem rastrear quais eram os dados originais no início do backup, esse cálculo de tamanho falharia porque veria que o espaço usado agora é de 1,5 GB sem saber que havia dados de 1 GB no disco o tempo todo vindo de um backup anterior, portanto, assumiríamos que o servidor nos enviou 1,5 GB de dados em vez de 500 MB.
5, BACKUP_OVERALL será lido, esses dados foram calculados pelo servidor quando ele fez o rsync seco inicial (portanto, esta é uma fonte de dados externa contendo a quantidade de bytes que será copiada do Servidor-> OrangeBOX). Este valor será verificado em relação ao espaço LIVRE geral no disco no momento e se ele exceder, uma mensagem de erro será exibida no lcd e o script interromperá a execução. Lembre-se novamente de que tudo o que esse script faz é exibir SOMENTE, ele não interfere no processo de backup. Se você limpar arquivos no disco ou a quantidade de arquivos mudar remotamente e, portanto, o BACKUP_OVERALL mudar em um ponto, ele continuará.
6, finalmente terminamos as verificações de segundo nível, é hora de exibir algo. O script exibe os dados no console e no lcd usando um aplicativo C simples. O fundo é alterado para AZUL indicando que o backup finalmente começou e o progresso calculado pela seguinte fórmula PROGRESS = $ ((($ BACKUP_CURRENT * 100) / $ BACKUP_OVERALL)). Este é um cálculo de porcentagem básico que tomamos o valor atual, em nosso exemplo 0,5 GB * 100/2 GB = 25%.
7, Os números também são convertidos de byte para bytes Mega / Giga e a tela é exibida automaticamente em MB se for inferior a 1 GB.
8, Uma coisa que falta mapear em nosso caso são os 25% em um LCD de 20 colunas. Isso seria 25 * 20/100 = 5 em nosso exemplo. Atualmente, a atualização com o programa LCD é implementada de forma que toda vez que você chamar o programa, ele redesenhará a tela inteira. Então, neste caso, seria executado um loop for 5 vezes para desenhar 5 hashmarks # na tela, isso iria aparecer como uma tremulação feia em cada rodada, então, em vez disso, escrevo os dados calculados da barra de progresso em LFILE1 e 2, que neste caso depois as 5 rodadas conteriam ##### e isso é lido e exibido no LCD. Você pode colocar LFILE1 e 2 no ramdisk também para salvar o sdcard de operações extras de gravação, isso não causou nenhum problema para mim, o script é executado uma vez a cada minuto a partir do cron.
9, Quando o backup terminar, o outro script do servidor que executa o rsync irá tocar no FFILE (Concluir Arquivo). No próximo loop, o backup_progress.sh exibirá que o backup foi concluído e, opcionalmente, chamará outro script para desligar o OrangeBOX. Ele exclui seus arquivos de bloqueio neste ponto, tornando impossíveis outras execuções, portanto, mesmo se você não habilitar o desligamento no minuto seguinte, quando este script for executado, ele será encerrado imediatamente porque o BFILE não está lá e o FFILE não está lá. Portanto, ele exibirá a mensagem de backup concluído indefinidamente, a menos que o backup seja reiniciado novamente.
Script de backup remoto (orange-remote.sh):
Você precisará gerar uma chave ssh para o backup e uma chave para a criptografia luks para a unidade. Quando você executa o backup remoto manualmente pela primeira vez, ele salva a impressão digital do host das caixas laranja no arquivo hosts (a partir deste ponto, ele pode ser executado automaticamente pelo cron).
DISK = "/ dev / disk / by-id /…"
Para descobrir o identificador do seu disco rígido, execute uuid, blkid ou apenas procure os diretórios / dev / disk / correspondentes.
Uma exclusão de inclusão de diretório pode ser configurada se você não quiser fazer backup de tudo. Este é um processo bastante irritante porque, para rsync, se você quiser excluir um único subdiretório profundo na estrutura, terá que fazer:
+ / a
+ / a / b + / a / b / c + / a / b / c / d - / a / b / c / d / e + / dir2
Uma vez que este script está executando comandos no OrangeBOX remotamente, ele não supervisiona as variáveis de retorno daquele lado, portanto, eu uso alguns truques inteligentes, como ele irá exibir a mensagem de abrir a unidade remota em /tmp/contmsg.txt e, em seguida, analisar para ver se foi bem-sucedido, se não, ele altera o binário rsync para não executável de forma que o rsync não tente fazer upload de dados para o rootfs do OrangePIs preenchendo o SDcard. Também é uma boa prática definir o bit imutável em chattr + i / mnt / backup para tornar isso impossível.
O pré-cálculo do tamanho ocorre localmente no servidor, portanto, este arquivo deve ser enviado ao OrangeBOX na próxima etapa.
O backup principal é iniciado como um loop para ((i = 0; i <100; i ++)); fazer porque, no caso de conexões de Internet DSL / Cabo de baixa qualidade, o rsync pode freqüentemente quebrar, atingir o tempo limite. Se for concluído com êxito, o loop será interrompido sem tentar mais iterações. Isso funciona perfeitamente com bons sistemas operacionais, no entanto, se por algum motivo a caixa remota fosse Windows e o acesso fosse negado como normalmente em NTUSER. DAT, o rsync retornaria um código de erro e esse loop seria executado 100 vezes e ainda falharia.
Etapa 5: Encerramento e lista de tarefas
Meu instructable demonstra mais uma vez como você pode criar algo melhor e mais personalizável a partir de um computador de 10 $ por conta própria, que supera Buffalo com seus dispositivos NAS proprietários bloqueados, particionamento interno estranho, busybox linux aleijado com ferramentas de segfaulting, gerenciado por seu software windows, firmware fechado, documentação e suporte ruins e não importa quanto dinheiro você gaste, você nunca obterá um indicador de progresso mostrando seu backup, para não mencionar o quão legal o OrangeBox parece (eu até usei um cabo CAT5 laranja com ele: D)
Com os minicomputadores se tornando cada vez mais poderosos, mantendo a mesma linha de preço <100 $, podemos usá-los para cada vez mais tarefas. Como as portas Gbe Ethernet são bastante comuns hoje em dia, em 1-2 anos, a memória dessas placas aumentará drasticamente e elas também podem ser usadas para sistemas de backup baseados em ZFS.
-Indicador de progresso de grão fino pelo programa C (veja WasserStation um de meu outro projeto). No momento, apenas # caracteres # hashmark usados no modo de caractere com lcdPuts (lcd, linha 1), isso pode ser melhorado mesmo quando usar LCDs de caracteres para dividir 1 coluna em 5 partes e o programa C principal pode apenas pegar um número inteiro como 25 e extrair a barra de progresso corretamente ou melhorada usando um LCD gráfico
-Possibilidade de ter um disco rígido removível para criar novos e novos backups e movê-los para locais diferentes (se a caixa detectar uma unidade vazia, deve formatá-la automaticamente com a chave de criptografia assim que for recebida).
-Se você deseja imprimir seu próprio caso com o Makerbot, o OrangeNAS pode ser interessante para você:
Recomendado:
Controle remoto IR baseado em Arduino automático baseado em temperatura: 7 etapas
Controle remoto IR baseado em Arduino automático baseado em temperatura: Ei, e aí, pessoal! Akarsh aqui da CETech. Cansado de acordar no meio de um sono profundo só porque a temperatura ambiente está muito baixa ou muito alta por causa do seu AC mudo. Então este projeto é para você. Neste projeto, vamos fazer o nosso
Termômetro infravermelho sem contato baseado em Arduino - Termômetro baseado em IR usando Arduino: 4 etapas
Termômetro infravermelho sem contato baseado em Arduino | Termômetro baseado em IR usando Arduino: Olá pessoal, neste instructables faremos um termômetro sem contato usando arduino. Já que às vezes a temperatura do líquido / sólido é muito alta ou muito baixa e então é difícil fazer contato com ele e ler sua temperatura então naquele cenário
Dispositivo de entrada serial e armazenamento de 4 bits: 4 etapas
Dispositivo de entrada serial e armazenamento de 4 bits: Já imaginou como o teclado recebe a entrada e como os dados são armazenados! Este projeto é uma versão menor de entrada e armazenamento de dados. Uma explicação elaborada de como o sinal das teclas, o relógio afeta os elementos de memória (flip-flops)
Como reformatar um dispositivo de armazenamento externo, usando Mac OS X: 10 etapas
Como reformatar um dispositivo de armazenamento externo, usando Mac OS X: vendendo um USB antigo? Ou computador? Use este guia passo a passo simples para reformatar seu dispositivo de armazenamento externo em seu Mac. Os benefícios desta reformatação de um disco rígido são parte segurança, parte conveniência e parte reutilização. Isso vai ajudar a m
Como fazer backup de sua caixa Linux com facilidade usando Rdiff-backup: 9 etapas
Como fazer backup facilmente de sua caixa Linux usando Rdiff-backup: Este instrutível mostrará como executar um sistema de backup e recuperação simples e completo no Linux usando rdiff-backup e um drive USB