UTNianos

Versión completa: Comparación de Archivos por peso
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Gente,

Intente buscar una solución a mi problema, pero no pude hallar nada. Talvez mi problema sea la forma de buscar, pero bueno, acudo a ustedes.

Mi problema:
Nuestros usuario suben archivos a una aplicación web los cuales quedan almacenados en un servidor X. A la noche se traen esos archivos a otro servidor Y, se procesan y se genera otro archivo con la respuesta del enviado.
Esta respuesta se genera en el servidor Y y luego se graba en el servidor X.

Todo esto es un proceso que no conozco mucho y esta generado con visual basic 6.

El problema es que cuando pasa del servidor Y al X algunos archivos llegan incompletos.

Y por culpa de eso tenemos muchos reclamos. La solución nuestra es que una persona por medio de un cliente FTP (Programa: WS_FTP), cuando recibe el reclamo, pase el archivo de un servidor a otro.

Pero el problema no termina ahi, por que las carpetas estan organizadas de diferente manera en los servidores.
Es decir:
Servidor X: Carpeta Cliente 1 -> Carpeta Fecha -> Carpeta Respuesta -> {Aca estan todas los archivos de respuesta para ese día y para ese cliente}

Servidor Y: Carpeta de TIPO archivo -> Carpeta Fecha -> Carpeta respuesta -> {Aca estan todos los archivos de respuesta para ese día, para ese tipo de archivo y para todo los clientes}

Esto ultimo no se entendio bien seguramente, pero lo pueden obviar =P

Aclaro que el FTP me muestra el peso, pero tengo que estar viendo carpeta por carpeta.

Lo que quiero: es tener una forma de poder comparar el peso de esos 2 archivos, y si me da diferencia que me avise y me de el listado completo de archivos de distinto pesos.

Espero que se haya entendido, asi todos me pueden dar una mano =). Muchas gracias.
checksum? md5 sha o alguno de esos probaste?
Vos decis que ponga el checksum en el proceso de visual basic, no?
El tema es que eso no lo puedo tocar, me olvide de aclarar eso.

Mi idea es hacer un programita que le diga masomenos lo siguiente:

if(sizeof(servidor1\\archivo1)<>sizeof(servidor2\\archivo1)
{
fwrite(archivo,'archivo1')
}
(esta todo en pseudocodigo eh =P,por las dudas que me digan algo jaja )

Talvez alguien alguna vez tuvo un problema similar, y tenia algun cliente FTP, o algun otra cosa que permitiera hacer eso.
en que lenguaje querés hacer eso?

O sea, que podes tocar y que no? que herramientas tenés?

La posta es lo que dijo Shiny shoes: hacer md5 y comparar.
Yo generaria un script que genere el md5 como bien dice arriba el capo en cada lado.
Dsp le tiras un diff y te va a decir los archivos distintos (en realidad tambien automatizaria el revisar el md5 al pasar el archivo, pero si no se puede no se puede)
lo que no puedo tocar es el proceso que envia el archivo.
Es decir no puedo hacer: una vez que lo copiaste, si lo pegaste incompleto, volvelo a pegar.

Obviamente no hay recursos ni tiempo, para estar realizando todo esto (si hay tiempo para estar en UTNianos =P)

Así que intentare en casa hacer algo simple en C, que por ahora me de solo el listado y que el usuario apenas arranque el día modifique esos archivos (Ademas empiezo a practicar para SO (? )

Me pondre a investigar que es MD5 por que no tengo ni idea =)

Muchas gracias a todos
Es facil el MD5 y lo mas recomendable.
Lo que harias seria algo similar a un checksum (el concepto real de checksum es otro), ya esta re solucionado el MD5 para C, pero tenes otras tantas herramientas similares (otros algoritmos)...

En si, te levantan toda la info a nivel de bytes, hacen un algoritmo loco y te devuelve un resultado (segun la libreria que uses, podes especificar que longitud es el resultado) con la particularidad que ese resultado es unico para ese archivo. Sacas el resultado antes y un resultado despues. Comparas, si son distintos, se te perdio info en el medio.

Si lo queres hacer vos, te recomiendo que uses un acumulador logico de minimo 8 bytes (Si, 8Bytes, no 8Bits) y hagas el OR byte a byte y trunques si haces un overflow. Te deberia dar con un 80 / 90 % de efectividad.

Sino aca te dejo un link

http://userpages.umbc.edu/~mabzug1/cs/md...102.tar.gz

Es para C++

lo saque de esta web:

http://userpages.umbc.edu/~mabzug1/cs/md5/md5.html

Por si lo queres para otros lenguajes.

Suerte y contanos...
URLs de referencia