¿Es posible transferir archivos en un rango de fechas a través de FTP?

¿Es posible transferir archivos en un rango de fechas a través de FTP?

Necesito transferir una gran cantidad de archivos desde un servidor FTP a un servidor nuevo. Podría haber miles de archivos, por lo que me gustaría limitarlos a los archivos que se cargaron en los últimos tres meses. ¿Es eso posible y, de ser así, cómo?

¿También es posible saber qué tan grande será la descarga antes de comenzar la descarga real?

Gracias

Respuesta1

Puedes usarlftppara eso, utilizando su mirrorcomando. Aquí hay un fragmento de la página de manual:

  mirror [OPTS] [source [target]]

   Mirror specified source directory to local target directory. If target
   directory  ends  with  a  slash,  the source base name is appended to 
   target directory name. Source and/or target can be URLs pointing to 
   directories.


[cut...]
        -N, --newer-than=SPEC    download only files newer than specified time
            --on-change=CMD      execute the command if anything has been changed
            --older-than=SPEC    download only files older than specified time
[...]

Definitivamente eche un vistazo al manual, ya que hay muchas opciones útiles que le mirrorpueden gustar --allow-chown, --allow-suido --parallel[=N]por ejemplo. Lftp también funciona con otros protocolos de acceso, como o sftp.fishhttp(s)

Respuesta2

Podrías intentar montarlo como un sistema de archivos usandocurlftpfs.
Luego copie usando find.
p.ej:

mkdir /tmp/mountpoint
curlftpfs ftp://example.com/ /tmp/mountpoint/
cd /tmp/mountpoint
find -mtime +90 -exec cp {} /dest/path/ \;

Sospecho que existen mejores soluciones.

información relacionada