Мне нужно перенести большое количество файлов с FTP-сервера на новый сервер. Там могут быть тысячи файлов, поэтому я хотел бы ограничиться файлами, которые были загружены за последние три месяца — возможно ли это и если да, то как?
Также возможно ли узнать, насколько большим будет объем загрузки, прежде чем начать ее?
Спасибо
решение1
Вы можете использоватьlftp
для этого, используя его mirror
команду. Вот фрагмент из man-страницы:
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
[...]
Обязательно посмотрите руководство, так как там действительно много полезных опций mirror
- например --allow-chown
, , --allow-suid
или --parallel[=N]
. Lftp также работает с другими протоколами доступа, например sftp
, , fish
или http(s)
.
решение2
Вы можете попробовать смонтировать его как файловую систему, используяcurlftpfs
.
Затем скопируйте с помощью find
.
например:
mkdir /tmp/mountpoint
curlftpfs ftp://example.com/ /tmp/mountpoint/
cd /tmp/mountpoint
find -mtime +90 -exec cp {} /dest/path/ \;
Я подозреваю, что существуют лучшие решения.