Preciso transferir um grande número de arquivos de um servidor FTP para um novo servidor. Pode haver milhares de arquivos, então eu gostaria de limitá-lo aos arquivos que foram enviados nos últimos três meses - isso é possível e, em caso afirmativo, como?
Também é possível descobrir o tamanho provável do download antes de iniciar o download?
Obrigado
Responder1
Você pode usarlftp
para isso, utilizando seu mirror
comando. Aqui está um trecho da 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, dê uma olhada no manual, pois há muitas opções úteis para mirror
gostar --allow-chown
, --allow-suid
ou --parallel[=N]
por exemplo. Lftp também funciona com outros protocolos de acesso, como sftp
, fish
ou http(s)
.
Responder2
Você poderia tentar montá-lo como um sistema de arquivos usandocurlftpfs
.
Depois copie usando find
.
por exemplo:
mkdir /tmp/mountpoint
curlftpfs ftp://example.com/ /tmp/mountpoint/
cd /tmp/mountpoint
find -mtime +90 -exec cp {} /dest/path/ \;
Suspeito que existam soluções melhores.