Pregunta

Tenemos una configuración del sistema ftp para monitorear / descarga desde los servidores FTP remotos que no están bajo nuestro control. El script conecta con la FTP remoto, y agarra los nombres de los archivos en el servidor, que a continuación, comprobar para ver si es algo que ya ha sido descargado. Si no se ha descargado a continuación, descargamos el archivo y añadirlo a la lista.

Recientemente Nos encontramos con un problema, en la que alguien en el lado remoto FTP, copiará en una sola fila masiva (> 1 GB) a continuación, la secuencia de comandos se despertará ver un nuevo archivo y empezar a descargar el archivo que se está copiando en.

¿Cuál es la mejor manera de comprobar esto? Estaba pensando en agarrar el tamaño del archivo de esperar unos segundos comprobando el tamaño del archivo de nuevo y ver si ha aumentado, si no tiene entonces descargarlo. Pero ya que el tiempo es la preocupación, no podemos esperar unos segundos para cada conjunto una sola fila y ver si es el tamaño del archivo se ha incrementado.

¿Cuál sería la mejor manera de hacer esto, en la actualidad todo se hace a través de pitones ftplib, ¿cómo podemos hacer esto aparte de usar el método antes mencionado.

Una vez más, permítanme reiterar esto, tenemos 0 control sobre los sitios FTP remoto.

Gracias.

Update1:

Yo estaba pensando lo que si trataba de cambiarle el nombre ... ya que tenemos todos los permisos en el ftp, si el archivo de carga está en curso sería el comando de cambio de nombre fallar?

No tenemos ninguna opción reales aquí ... ¿verdad?

Update2: Bueno, aquí hay algo interesante algunos de los ftps analizadas en aparecer para asignar automáticamente el espacio una vez que la transferencia se inicia.

por ejemplo. Si transfiero un archivo de 200 MB al servidor ftp. Mientras que la transferencia está activo si conecto al servidor FTP y hago un tamaño mientras que la carga está sucediendo. Muestra 200MB para el tamaño. A pesar de que el archivo es como el 10% de avance.

Los permisos también parecen estar fijado al azar del servidor FTP que viene con IIS establece los permisos después de que el archivo se copia termine. Mientras que algunos de los otros servidores FTP tradicional establece que tan pronto como usted envía el archivo.

: '(

¿Fue útil?

Solución

“Al diablo con los torpedos! Velocidad máxima hacia adelante!”

Sólo tienes que descargar el archivo. Si se trata de un archivo de gran tamaño a continuación, después de finalizada la descarga esperar el tiempo que sea razonable para su escenario y continuar la descarga desde el punto en que se detuvo. Repetir hasta que no haya más cosas para descargar.

Otros consejos

Como usted dice que tiene 0 control sobre los servidores y no puede hacer sus clientes publican archivos de activación según lo sugerido por S. Lott, debe hacer frente a la solución imperfecta y transmisión de archivos incompleta riesgo, tal vez por la espera de un tiempo y comparar los tamaños de los archivos antes y después.

Puede intentar cambiar el nombre como usted sugiere, pero a medida que tiene 0 Control no se puede estar seguro de que el servidor FTP-administrador (o su sucesor) no cambia plataformas o servidores FTP o restringe sus permisos.

Lo sentimos.

Si se trata de varios archivos, se puede obtener la lista de todos los tamaños a la vez, espere diez segundos, y ver que son los mismos. Sea cual sea siguen siendo los mismos deben ser seguros para descargar.

No se puede saber cuándo se realiza la copia del sistema operativo. Podría reducir la velocidad o esperar.

Para obtener una certeza absoluta, que realmente necesita dos archivos.

  • El archivo masivo.
  • Y un archivo de gatillo pequeño.

Se puede meterse con el archivo masivo de todo lo que quieran. Pero cuando tocan el archivo de activación, que está descargando ambos.


Si usted no puede conseguir un disparador, hay que equilibrar el tiempo necesario para sondear versus el tiempo necesario para descargar.

Haga esto.

  1. Obtener una lista. Compruebe las marcas de tiempo.

  2. Compruebe el tamaño en comparación con el tamaño del archivo anterior. Si el tamaño no es ni de lejos, se está copiando en ese momento. Espere; bucle en este paso hasta que el tamaño es cercano al tamaño anterior.

  3. Si bien no se haya terminado:

    a. Obtener el archivo.

    b. Obtener una lista NUEVO. Compruebe el tamaño del nuevo perfil, la lista anterior y su archivo. Si están de acuerdo: ya está. Si no están de acuerdo: el archivo cambiado mientras estaba descargando; que no haya terminado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top