Tenho um servidor que hospeda um site de intranet onde um dos recursos será a capacidade de fazer upload de arquivos. Os arquivos serão salvos em uma pasta de acesso restrito e gerenciados através do back-end web. Para evitar colisões de nomes, pretendo atribuir UUIDs e armazenar o nome do arquivo original junto com o UUID em um banco de dados para recuperação futura.
No entanto, tenho 2 preocupações:
- A possibilidade de arquivos duplicados (no nível real de bytes, não apenas por nome) e
- Garantindo a integridade do arquivo.
Pensei que se eu executasse algum tipo de hash/soma de verificação (MD5, SHA256, etc.), isso poderia resolver ambas as preocupações. Eu poderia armazenar o hash e comparar o arquivo em uma data futura e verificar se ele não foi corrompido e, se encontrasse outro arquivo com o mesmo hash, saberia se o arquivo era uma duplicata verdadeira.
Então minhas perguntas são:
- Minhas preocupações sobre a corrupção de arquivos são infundadas?
- Além disso, esta é uma boa estratégia para identificar arquivos duplicados?
Responder1
1) a corrupção de arquivos não é comum e o sistema subjacente deve prevenir e alertar sobre tais coisas, mas sim, é bom verificar novamente. Melhor ainda, tenha um backup fora do localhttp://en.wikipedia.org/wiki/Comparison_of_backup_software
2) se você estiver usando hashs de qualquer maneira, não há necessidade de outras estratégias, mas sim, existe uma detecção de movimento rsync que comparará todos os arquivos por tamanho, o que é bom e rápido, então qualquer um do mesmo tamanho será hash, se ainda não for, e verificado para singularidade. Dependendo do conteúdo do arquivo, existem outras opções, como git para texto ou qualidade para mídia.