Tengo un servidor que aloja un sitio web de intranet donde una de las características será la posibilidad de cargar archivos. Los archivos se guardarán en una carpeta de acceso restringido y se administrarán a través del back-end web. Para evitar colisiones de nombres, planeo asignar UUID y almacenar el nombre del archivo original junto con el UUID en una base de datos para recuperarlo en el futuro.
Sin embargo, tengo 2 preocupaciones:
- La posibilidad de archivos duplicados (a nivel de bytes real, no solo por nombre), y
- Garantizar la integridad del archivo.
Pensé que si ejecutaba algún tipo de hash/suma de comprobación (MD5, SHA256, etc.), eso podría solucionar ambas preocupaciones. Podría almacenar el hash y comparar el archivo en una fecha futura y verificar que no se haya dañado, y si encontrara otro archivo con el mismo hash, sabría si el archivo era un duplicado verdadero.
Entonces mis preguntas son:
- ¿Son infundadas mis preocupaciones sobre la corrupción de archivos?
- Además, ¿es ésta una buena estrategia para identificar archivos duplicados?
Respuesta1
1) la corrupción de archivos no es común y el sistema subyacente debería prevenir y advertir sobre este tipo de cosas, pero sí, es bueno volver a verificar. Mejor aún, tenga una copia de seguridad fuera del sitiohttp://en.wikipedia.org/wiki/Comparison_of_backup_software
2) si usa hash de todos modos, no hay necesidad de otras estrategias, pero sí, existe una detección de movimiento rsync que comparará todos los archivos por tamaño, lo cual es agradable y rápido, entonces cualquiera del mismo tamaño se aplicará un hash, si aún no lo está, y se verificará. unicidad. Dependiendo del contenido del archivo, existen otras opciones como git para texto o calidad para medios.