Backups incrementais automatizados para uma unidade externa

8

fundo

Um cliente precisa de uma solução de backup automatizado para uma unidade externa (a ser retirada semanalmente fora do local). Eu normalmente sugeriria o rsnapshot (ou talvez lançando um rsyncscript personalizado ), mas essa pergunta está um pouco mais envolvida.

O sistema baseado no Arch Linux é decapitado e, portanto, a solução deve ser totalmente automatizada, sem necessidade de intervenção do usuário.

Um cenário ideal seria o seguinte:

  1. O usuário se conecta a um disco rígido USB
  2. Um backup incremental completo é feito
  3. O disco rígido está desmontado
  4. O usuário é notificado de que o disco rígido pode ser desconectado

Proposta

Minha solução proposta consiste em:

  1. Uma udevregra monta automaticamente a unidade
  2. O backup é iniciado com:

    1. A mesma udevregra também aciona um rsnapshotscript
    2. Um evento inotify create detecta o novo ponto de montagem e dispararsnapshot
  3. Após as rsnapshotsaídas, umounté executado na unidade

  4. As formas possíveis de notificar o disco rígido podem ser removidas:

    1. A unidade de CD é aberta
    2. Um som é reproduzido através do alto-falante do PC

Se um erro ocorreu a qualquer momento, envie um email ao usuário e desmonte a unidade.

Questões

  1. Minha proposta parece viável, mas existem falhas óbvias? Como posso torná-lo robusto?
  2. Por questões de segurança, como posso garantir que o disco rígido conectado seja do usuário? sshchaves? Etiqueta da unidade?
  3. Existem soluções (Linux) existentes que abrangem isso?
tlvince
fonte

Respostas:

7

Sua solução parece relativamente adequada, no entanto:

  • Verifique se o rsnapshotscript não presume conhecer o dispositivo de bloqueio. O endereço ideal para o sistema de arquivos é o UUID ou o rótulo, para evitar carnificina.
  • Adicione tempos limite. Dessa forma, se algo der errado que não conhecemos, ou algo fizer com que o script nunca termine, ele poderá ser tratado como um erro, em vez de continuar indefinidamente.
  • Você afirma que, no final, "[ocorreu] um erro a qualquer momento, envie um email ao usuário e desmonte a unidade" - o que acontece se ele não puder desmontar a unidade ou se a desmontagem estiver onde falha? O que acontece se o email falhar? Certifique-se de criar falhas no seu sistema.
  • Para segurança básica, o UUID deve estar bem (a menos que um invasor tenha conhecimento do seu UUID); no entanto, se a segurança for mais preocupante, considere gravar alguns dados na área de código do MBR (bytes 0-440) e tendo o script verificado antes de iniciar o backup. Você deve ser avisado de que isso é mais segurança através da obscuridade do que qualquer outra coisa, no entanto, nesta situação, não vejo métodos facilmente disponíveis que sejam superiores. Se você quiser seguir em frente, no entanto, poderá determinar se a unidade está autorizada analisando um certificado criptografado armazenado no disco. Quandoudevdetecta a unidade, o script descriptografa o certificado usando sua chave. O certificado contém parâmetros relacionados ao inversor, como o número de série, o número do modelo, a capacidade etc., e depois compara os parâmetros extraídos do certificado criptografado com os parâmetros vistos na análise do inversor. Se os parâmetros corresponderem, a unidade será determinada como autêntica; caso contrário, a unidade será rejeitada e o script será encerrado.

Existem soluções Linux existentes que se enquadram nessa área, no entanto, para suas necessidades específicas, acho melhor você fazer uma solução sob medida em vez de mexer na fonte de outros programas para fazê-los fazer o que você deseja.

Para gravar dados aleatórios na área de código do MBR, que você pode verificar, faça algo parecido dd if=/dev/urandom of=/dev/sdX bs=440 count=1.

Chris Down
fonte
Obrigado Chris. Eu não teria pensado em usar UUIDs, o que simplifica bastante as coisas. Por interesse, você poderia compartilhar algum link de soluções existentes? Eles podem me dar mais algumas idéias ou serem úteis para outros leitores.
precisa saber é o seguinte
Pensei ter me lembrado de alguns, mas não consigo encontrá-los agora. Parece bastante interessante, talvez, eu mesmo desenvolva um. Eu aviso você.
Chris Baixo