Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-10-2007
Avatar de maxvera
maxvera maxvera is offline
Miembro
 
Registrado: Jun 2006
Posts: 21
Poder: 0
maxvera Va por buen camino
Sincronizar contenido de dos directorios(local-remoto)

Tengo que sincronizar una carpeta de imágenes local con otra ubicada en un servidor FTP.

Lo fácil sería hacer un overwrite de todos los ficheros de mi carpeta local y luego borrar todos los ficheros remotos que no se encuentren en mi carpeta local. Para ello, bastaría con usar las Indy 10 (IdFTP) y hacer los Put y Delete oportunos.

El problema está en que el contenido en imágenes puede ascender a unos miles de ellas, lo que supondría un descomunal uso de transferencia en el servidor que, multiplicado por unas pocas sincronizaciones, haría inviable la disponibilidad económica del sistema.

Así que, he pensado que quizás pudiera implementar un procedimiento de comparación de archivos (local-remoto) que me permitiera actualizar únicamente los que no coincidan (nombres de archivos iguales no implican que sean la misma imagen, con lo que habría que actualizarla también).

¿Alguien puede brindarme alguna idea o línea de desarrollo?

Quédoles agradecido. Saludos.
__________________
El colmo del inmovilismo es el 0 absoluto.
Responder Con Cita
  #2  
Antiguo 04-10-2007
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: Aug 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 19
eduarcol Va por buen camino
Yo realize un actualizador que versa mas o menos en lo mismo, apoyado en codigo del amigo seoane, puedes descargarlo aqui

La idea es comparar el MD5 del archivo tanto en la web como en el local, si es distinto lo descarga...

creo que por alli puedes comenzar, cualqueir cosa avisas
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #3  
Antiguo 04-10-2007
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: Jul 2004
Ubicación: Barcelona - España
Posts: 15.552
Poder: 10
Neftali [Germán.Estévez] Tiene un aura espectacularNeftali [Germán.Estévez] Tiene un aura espectacular
Cita:
Empezado por maxvera Ver Mensaje
...he pensado que quizás pudiera implementar un procedimiento de comparación de archivos (local-remoto) que me permitiera actualizar únicamente los que no coincidan (nombres de archivos iguales no implican que sean la misma imagen, con lo que habría que actualizarla también).
Supongo que para la comparación podrías utilizar algun sistema para calcular CRC/Checkum de los ficheros; A igual CRC, nada, si son diferentes sobreescribes.

Si buscas rutinas para el cálculo hay multitud de ellas por internet.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 04-10-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: Feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 18
seoane Va por buen camino
Todo esto del md5 esta muy bien, pero el problema es quien crea los hash del lado del servidor. En principio no sabemos, porque maxvera no lo dijo, si ese servidor usa windows o linux, no sabemos si tenemos acceso total a el o solo tenemos una cuenta de ftp, y tampoco sabemos si el servidor de ftp cuenta con el comando md5 o no.

PD: Para calcular el hash en windows: http://delphi.jmrds.com/?q=node/36
Responder Con Cita
  #5  
Antiguo 04-10-2007
Avatar de maxvera
maxvera maxvera is offline
Miembro
 
Registrado: Jun 2006
Posts: 21
Poder: 0
maxvera Va por buen camino
Bien. Creo que el tema de los hashes puede ser la solución (a mi corto entender en la materia).

Me he bajado la unit de Seoane pero, como muy bien apunta, no he dicho en qué servidor y bajo qué condiciones se va a ejecutar la rutina.

- El caso particular se refiere a un servidor FTP Linux.
- Los archivos los crea y sube mi propia aplicación con un TIdFTP de las Indy 10.
- Se supone que tengo acceso total al ftp del dominio (aunque no sé si comprendo lo de acceso total).

Debo entender que las funciones de la unidad Hashes funcionarían bajo Windows pero debería poder extender la operatividad fuera cual fuese la naturaleza del servidor. Eso sí, en cualquier caso, tendría acceso total (?) al servidor.

En cuanto al programa actualizador de eduardcol, un somero vistazo me indica que la dirección de la operación es la contraria de la que busco (me interesa actualizar los archivos del servidor), pero también me ha parecido que para comprobar el md5 es necesario hacer get. Me pregunto si este get implica bajarme el archivo remoto, porque si es así, no soluciono el problema del volumen de transferencia.

Francamente, estoy pez en la materia, y no tengo claro si estoy diciendo tonterías. Agradezco vuestra paciencia.

Saludos.
__________________
El colmo del inmovilismo es el 0 absoluto.

Última edición por maxvera fecha: 04-10-2007 a las 19:29:24.
Responder Con Cita
  #6  
Antiguo 04-10-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: Feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 18
seoane Va por buen camino
Cita:
Empezado por maxvera Ver Mensaje
El caso particular se refiere a un servidor FTP Linux, pero debería poder extender la operatividad fuera cual fuese la naturaleza del servidor.
Pues eso lo veo difícil, para que el sistema tenga alguna utilidad los hash se tendrían que calcular en el servidor. No tendría sentido bajar un archivo para calcular su hash, para comprobar si hay que bajarlo o no

Hay algunos servidores de ftp que son capaces de calcular el md5 de un archivo, pero este no es un comando estándar. También se podría crear un programa que se ejecutara de forma periódica y calculase los md5 de todos los ficheros y los guardase en un archivo de texto. Así el cliente solo tendría que comprobar los hash contenidos en el archivo de texto, con el hash de los archivos. Pero este programa dependería del sistema operativo, no seria muy complicado, en linux un simple script bastaría, pero para windows se necesitaría crear un programa.

La tercera opción es la que utiliza eduarcol. El utiliza un servidor web para alojar los archivos, y un script en php para calcular el hash. Este sistema si que es independiente del sistema operativo del servidor, pero además del servidor ftp necesitaríamos uno web.

Cita:
Empezado por maxvera Ver Mensaje
¿cuál es la diferencia entre sha1 y md5?
Son algoritmos diferentes, uno devuelve 16 bytes (32 caracteres) y el otro 20 bytes (40 caracteres).
Responder Con Cita
  #7  
Antiguo 04-10-2007
Avatar de maxvera
maxvera maxvera is offline
Miembro
 
Registrado: Jun 2006
Posts: 21
Poder: 0
maxvera Va por buen camino
La respuesta de Seoane y la postrera reedición de mi post anterior se han cruzado. Lo aclaro para que haya coherencia de datos :-).

Por lo que me dices, está claro que debería estudiar el código de eduardcol, pues el servidor http tambien está disponible. De hecho utilizo php en el servidor para otras operaciones de archivos, así que parece lo más recomendable.

Voy a ver qué saco en claro (no descarto regresar por aquí en busca de más respuestas).

Saludos y gracias.
__________________
El colmo del inmovilismo es el 0 absoluto.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Sincronizar dos BD de SQL lgarcia SQL 2 18-05-2007 19:45:00
Sincronizar cambios maxid Conexión con bases de datos 4 08-05-2007 20:02:02
Sincronizar bdd con ado dimitri Conexión con bases de datos 0 29-01-2007 11:10:21
Sincronizar dos aplicaciones igest2000 Varios 4 19-01-2006 14:16:46
Sincronizar dos BD Firebird 1.5 Jordy Firebird e Interbase 4 29-01-2005 10:47:33


La franja horaria es GMT +2. Ahora son las 10:30:54.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi