Descargue únicamente los archivos nuevos con WinSCP.
Actualmente estoy escribiendo un script de WinSCP cuyo objetivo es recuperar todos los archivos de un servidor SFTP y luego colocarlos en una ubicación especificada en un servidor de destino (en el que se encuentra el script, para su información).
¿Hay alguien que pueda verificar si un archivo ya ha sido transferido al servidor de destino? ¿Se sobrescribe cuando lo está? En ese caso, ¿es realmente algo malo? En tal caso, supongo que si el archivo ya existe en el servidor de destino, no quiero que suceda nada. Si no existe, entonces me gustaría proceder con la transferencia.
Encontrará a continuación el código escrito hasta ahora:
Automáticamente abortar el script en caso de errores
option batch abort
Desactivar confirmaciones de sobrescritura que entran en conflicto con lo anterior
option confirm off
Conectar utilizando una contraseña
open sftp://SERVER@IP<em>ADDRESS:PORT -privatekey="PRIVATE</em>KEY" -hostkey="HOSTKEY" -passive=off
Cambiar el directorio remoto
cd in
cd DIRECTORY
Forzar la transferencia en modo binario
option transfer binary
Obtener TODOS los archivos del directorio especificado
get /<em>.csv</em> \DIRECTORY
Eliminar todos los archivos .csv
rm /*.csv
Salir de WinSCP
bye
Muchas gracias de antemano por su ayuda, espero que haya sido lo suficientemente claro, de lo contrario, por favor háganme saber si puedo proporcionarle información adicional.
davy.ai
Para verificar si un archivo ya ha sido transferido al servidor de destino, se puede utilizar el comando
synchronize
en lugar deget
. El comandosynchronize
no sobrescribe ningún archivo a menos que haya cambios en el archivo de origen.Si un archivo ya existe en el servidor de destino, no se sobrescribirá a menos que el archivo de origen haya cambiado. En caso de que se desee sobrescribir el archivo existente, se puede agregar el parámetro
-delete
en el comandosynchronize
.Aquí hay un código actualizado que utiliza el comando
synchronize
:En el código anterior,
-criteria=time
comparará las marcas de tiempo de los archivos en ambos servidores y-filemask=*.csv
solo transferirá archivos con extensión .csv.¡Espero que esto pueda ser de ayuda!