Autor Tema: Forma más inteligente de almacenar hash de archivos  (Leído 2790 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Psyke1

  • Megabyte
  • ***
  • Mensajes: 130
  • Reputación: +11/-7
  • VBManiac
    • Ver Perfil
    • h-Sec
Forma más inteligente de almacenar hash de archivos
« en: Diciembre 07, 2012, 06:35:30 am »
Tengo una carpeta donde se copio muchos archivos.

Archivos que no se pueden repetir. En caso de que hubiera dos con el mismo nombre se renombra el último añadido.
Lo que quiero hacer es poder borrarlos pero que quede un registro de los que he copiado con anterioridad. Así que pensé en:
Sacar el hash MD5 de todos los archivos y guardarlo en un txt. Entonces cada vez que quiero copiar un nuevo archivo leo el txt en busca de su hash, si no lo encuentra añade su hash y se copia, y si lo encuentra no se copia.

El problema es que al ser tanta cantidad de archivos a veces se demora demasiado.
Además para buscarlos utilizo la clase de LeandroA de cFindFiles, pero incluso indicándole que llame al DoEvents me pone el CPU al 50%. :-\

¿Se os ocurre alguna idea para agilizar todo esto? :)

¡Gracias!

LeandroA

  • Administrador
  • Petabyte
  • *****
  • Mensajes: 1128
  • Reputación: +151/-8
    • Ver Perfil
Re:Forma más inteligente de almacenar hash de archivos
« Respuesta #1 en: Diciembre 07, 2012, 09:05:54 am »
Hola, y si usaras una base de datos?, seguramente, seria mas rapido, buscar en ella que buscar por archivos, en la base de datos podes guardar todas las modifiaciones hash, cantidad de copias, y con un simple "select" obtenes el resultado.
supongo que intentas hacer algo asi como un deposito de archivos, ahora de cuantos estamos ablando como para que se ponga lento?

Psyke1

  • Megabyte
  • ***
  • Mensajes: 130
  • Reputación: +11/-7
  • VBManiac
    • Ver Perfil
    • h-Sec
Re:Forma más inteligente de almacenar hash de archivos
« Respuesta #2 en: Diciembre 07, 2012, 03:48:34 pm »
En principio la aplicación es malware.  ::)
Pues voy a ver algún ejemplo de lo que dices porque nunca me tocó usar bases de datos en vb6. :P
¡Gracias! ;D

DoEvents! :P

LeandroA

  • Administrador
  • Petabyte
  • *****
  • Mensajes: 1128
  • Reputación: +151/-8
    • Ver Perfil
Re:Forma más inteligente de almacenar hash de archivos
« Respuesta #3 en: Diciembre 07, 2012, 04:11:20 pm »
mm si es un malaware entonces no seria muy conveniente usar bd, contame un poco mas en detalle de que se trata, quizás se me ocurra otra forma.

LeandroA

  • Administrador
  • Petabyte
  • *****
  • Mensajes: 1128
  • Reputación: +151/-8
    • Ver Perfil
Re:Forma más inteligente de almacenar hash de archivos
« Respuesta #4 en: Diciembre 08, 2012, 04:05:29 pm »
Hola mira me parece que esto te puede venir de lujo, es un modulo clase de cobein, que muestra los cambios de un directorio o unidad. (ADDED, REMOVED, MODIFIED, RENAMED_OLD_NAME, RENAMED_NEW_NAME)
creo que es el mismo metodo que utiliza el explorer para auto actualizar en la lista cuando se crea una carpeta, o los antivirus para detectar cambios etc.
la idea es que con este metodo no tenes que andar buscando los cambios, ya la clase dispara su evento

https://docs.google.com/open?id=0B68MFIa9bP-gYk5QX2ExZEc5cEE

avisame si la descarga no anda es la primera vez que uso google drive




Psyke1

  • Megabyte
  • ***
  • Mensajes: 130
  • Reputación: +11/-7
  • VBManiac
    • Ver Perfil
    • h-Sec
Re:Forma más inteligente de almacenar hash de archivos
« Respuesta #5 en: Diciembre 12, 2012, 02:58:08 pm »
¡Qué buena solución LeandroA! :) Con eso me ahorras muchísimos recursos.
Ahora sólo queda solucionar el tema de comprobar si un archivo ya ha sido copiado en la carpeta. Así a ojo serán unos 10.000 en total. ¿Alguna idea con esto?

Gracias!

DoEvents! :P