Comprobador de integridad de archivos

Tengo una gran cantidad de archivos que nunca deberían cambiar, incluidas fotografías RAW y archivos de video. Estoy preocupado por la podredumbre silenciosa .

Tengo copias de seguridad para restaurar archivos perdidos o dañados, pero comparar los archivos actuales con las copias de seguridad no es práctico (por ejemplo, los archivos de video están en cintas digitales). Además, mi software de respaldo no proporciona funcionalidad para esto.

¿Existe un software que escanee la lista de carpetas, almacene sumas de verificación confiables y pueda validar esa selección para archivos agregados/eliminados/modificados (dañados)?

Hay alrededor de 3 TB y 21 millones de archivos (una gran parte son archivos realmente pequeños, obviamente), por lo que el consumo de memoria es importante. Debería ejecutarse en Linux, y preferiblemente también en OS X.

Nota : en Linux, ya estoy ejecutando ZFS , que tiene sumas de verificación robustas y scrubpara detectar cambios de bits. Sin embargo, no es posible ni práctico usar eso o btrfs en OS X / discos ópticos / discos USB que deberían ser portátiles (es decir, FAT). Prefiero mucho la solución agnóstica del sistema de archivos.

Si no hay ningún software que haga esto automáticamente, ya que está en OSX y Linux, podría configurar fácilmente un script bash y un trabajo cron para hacer esto md5sumpara verificar todos sus archivos, crear un informe, etc.
Le sugiero que vigile el sistema de archivos de próxima generación btrfs : plus.google.com/+AaronSeigo/posts/ZAmXwESunL2
En una alineación diferente de la pregunta como se indica : es posible que esté interesado en probar git-annex . Su caso de uso de "archivista" cubre tanto la detección de corrupciones como la reparación de otras copias. Sí, puede pedirle que copie datos de forma semiautomática entre áreas de almacenamiento para asegurarse de que haya suficientes copias disponibles. La configuración predeterminada es un poco "invasiva", ya que todos los archivos se reemplazan con enlaces simbólicos a directorios de solo lectura dedicados para evitar escrituras no deseadas (se puede deshabilitar). Principalmente una herramienta de Linux, parece que está disponible como paquete de aplicaciones y homebrew.

Respuestas (3)

Empecé a usar AIDE :

AIDE (Advanced Intrusion Detection Environment) es un verificador de integridad de archivos y directorios.

Realiza un seguimiento de los archivos cambiados, agregados y modificados, y los atributos de los archivos. Admite una variedad de algoritmos de suma de comprobación, incluidos sha256/sha512.

En Ubuntu, aideel paquete está disponible desde el repositorio base ( apt-get install aide). En OS X, la compilación falló con errores misteriosos, pero la instalación con macports tuvo éxito:

sudo port install aide

El archivo de configuración de ejemplo está disponible en /opt/local/etc/aide.conf. Correr es simple:

aide --init   # Initializes the database - calculates checksums
aide --check  # Checks files against the database
aide --update # Checks files against the database, and updates the database

Todos los datos se almacenan en un archivo de texto sin formato (que obviamente es vulnerable a la corrupción, pero mantener una copia es fácil), por lo que cambiar la herramienta a otra cosa debería ser sencillo.


Cosas positivas:

  • Rápido
  • Admite múltiples algoritmos de suma de comprobación fuertes. Se desaconseja encarecidamente el uso de md5, ya que básicamente está roto .
  • Fácil de ejecutar en cron
  • Basado en pruebas cortas, sin problemas hasta ahora. Detectó todos los cambios (en el contenido y en los atributos del archivo configurado) correctamente, así como los archivos agregados y eliminados.
  • Admite exclusiones de archivos complicados: por ejemplo, no tiene sentido hacer una suma de verificación de archivos temporales o cualquier archivo que deba cambiar.
  • Calcula varias sumas de comprobación (configurable). Esto proporciona garantías relativamente buenas para el futuro: incluso si un algoritmo hash se ve comprometido, la base de datos de integridad sigue siendo útil, incluso contra modificaciones intencionales (frente a bit rot).
  • Las sumas de verificación se almacenan en texto sin formato y los encabezados incluyen definiciones de campo. Esto es útil si se pierde el archivo de configuración o si se analiza con otro programa.
  • Archivo de configuración fácil de almacenar y base de datos de suma de comprobación en cada disco/CD/carpeta (estructura). Con eso, todas las opciones de configuración se almacenan automáticamente y es fácil volver a ejecutar la verificación de integridad.

Puntos negativos:

  • La configuración requiere editar el archivo de configuración en el editor de texto, en lugar de tener una interfaz de usuario agradable. De manera similar, la verificación de la salida es directa a la terminal.
  • La última versión es de 2010, pero por otro lado tiene todas las funciones, por lo que no hay necesidad de actualizaciones constantes.
  • La integridad de la base de datos de suma de comprobación no se valida automáticamente. Afortunadamente, hacerlo por separado es fácil ( sha1sum checksums.db > checksums.db.sha1sum)
Funciona bien en Windows?
aide --init(o cualquier otra cosa que intenté hacer aide) no funciona en Ubuntu: los mantenedores del paquete lo rompieron. Tienes que usar en su aideinitlugar.
MD5 tiene problemas de seguridad, pero ¿por qué es importante para el propósito del OP? Él no está buscando de forma segura hash de datos confidenciales. De hecho, MD5 se usa muy comúnmente como ejemplo de suma de verificación de archivos . Aparte de eso, +1 por una buena respuesta.
Otro punto: la configuración del archivo de texto y la salida de CLI serían positivas para muchas personas en lugar de negativas.

He estado usando cfv para esto durante años.

  • Admite operaciones recursivas (puede crear un archivo de suma de verificación por directorio o un archivo de suma de verificación para un subárbol completo).
  • Podría ignorar mayúsculas y minúsculas y corregir las opciones del separador de ruta para uso multiplataforma, lo cual es bastante útil si desea verificar/crear sumas de verificación en diferentes sistemas de archivos y/o sistemas operativos.
  • Es una aplicación de consola pero tiene una buena barra de progreso (a diferencia de la normal md5sum).
  • Puede detectar archivos agregados ( -uopción).

No sé si funciona con Mac OS X o no, pero está en MacPorts .

Mmm. sha1sum * > files.sha1sum; cfvfunciona bien. Según man, -r -m -ues un conjunto adecuado de opciones para buscar archivos sin hashes. Eso parece funcionar bien, PERO si se modifica el archivo con la suma de verificación, aún sale bien para eso. Si se elimina el archivo con suma de comprobación, se imprime correctamente "1 no encontrado, 1 no verificado". Estaba a punto de abrir un ticket de error, pero no me molesté en registrarme en sourceforge.
@Olli: No creo que necesites la -mbandera. De acuerdo con el manual, -m no compare sumas de verificación . Intente cfv -T -uu -f test1.sha1(si tiene un sha1archivo para un árbol de directorios completo).
por alguna razón, eso verifica todo dos veces (y sí, sé que los comentarios no son un foro de soporte).

No hay escuela como la vieja escuela. Es cierto que tengo un poco de sesgo aquí debido a mi experiencia en medicina forense, pero podría ejecutar sumas md5 y compararlas.

Si bien este subproceso SO tiene algunos métodos interesantes, me gusta bastante hashdeep . El uso de la memoria es bajo, aunque consume un montón de ciclos del procesador, pero a través de la magia del modo de auditoría, hace todo lo que le pides a través de la línea de comandos automáticamente, tomando un archivo de texto y comparándolo con lo que enumera. .

Si bien el sitio tiene archivos binarios de Windows, bastantes distribuciones y administradores de paquetes de Mac tienen puertos; puede encontrar una lista completa aquí.

hashdeep, incluidas las estimaciones de tiempo, sonaba bien, pero realmente no me gusta la interfaz: a) en la terminal mac, la barra de progreso/estimaciones está seriamente rota, b) para las carpetas, debe dar --recursive. De lo contrario --audit, solo atraviesa recursivamente e imprime Known file not usedpara cada archivo, c) si el archivo se copia, de acuerdo con hashdeep, se mueve (y el anterior se informa como "Sin coincidencia"), en lugar de "agregado", d) la auditoría y la actualización requieren dos pasa
"Si bien este hilo SO tiene algunos métodos interesantes [...]": ¿Se suponía que había un enlace?
Creo que se refería a este hilo SR .
Acabo de probar hashdeep y esperaba que informara los archivos que agregué o eliminé desde que creé la tabla hash. No parece tener opciones para reportarlos en absoluto. Extraño.