Sua solução parece relativamente adequada, no entanto:
- Certifique-se de que o script
rsnapshot
não presuma saber o dispositivo de bloco. O ideal é endereçar o sistema de arquivos pelo seu UUID ou rótulo para evitar a carnificina. - Adicione tempos limite. Dessa forma, se algo der errado e não soubermos ou algo fizer com que o script nunca termine, isso pode ser tratado como um erro, em vez de continuar indefinidamente.
- Você afirma que, no final, "ocorreu um erro a qualquer momento, envia um email ao usuário e desmonta a unidade" - o que acontece se não for possível desmontar a unidade ou se a desmontagem falhar? O que acontece se o email falhar? Certifique-se de criar failafes em seu sistema.
- Para segurança básica, o UUID deve ser bom (a menos que um invasor possa ter conhecimento de seu UUID), no entanto, se a segurança é mais preocupante, considere gravar alguns dados na área de código do MBR (bytes 0-440 ), e ter o script verifique antes de iniciar o backup. Você deve ser avisado que isso é mais segurança através da obscuridade do que qualquer outra coisa, no entanto, nesta situação eu não vejo nenhum método facilmente disponível que seja superior. Se você quiser percorrer todo o caminho, no entanto, poderá determinar se a unidade está autorizada pela análise de um certificado criptografado armazenado no disco. Quando
udev
detecta a unidade, o script descriptografa o certificado usando sua chave. O certificado contém parâmetros relacionados à unidade, como o número de série da unidade, número do modelo, capacidade, etc., e compara os parâmetros extraídos do certificado criptografado com os parâmetros vistos ao analisar a unidade. Se os parâmetros corresponderem, a unidade será determinada como autêntica, caso contrário, a unidade será rejeitada e o script será finalizado.
Existem soluções Linux existentes que se enquadram nesta missão, no entanto, para as suas necessidades específicas, penso que seria melhor criar uma solução personalizada em vez de mexer na fonte de outros programas para fazê-los fazer o que pretende. .
Para escrever dados aleatórios na área de código do MBR, que você pode verificar, faça algo como dd if=/dev/urandom of=/dev/sdX bs=440 count=1
.