Моя первая мысль при чтении вашего вопроса была: «Это похоже на работу rsync
!». К сожалению, хотя он rsync
действительно может прыгать с высоких зданий за один проход, он не может работать с FTP. Если у вас есть ssh доступ к зеркалу, все будет намного проще.
Предполагая, что вы этого не сделаете, вы можете попробовать монтировать удаленный каталог FTP локально, а затем вы можете использовать простой cp
(вдохновленный этим ):
Установите curlftpfs. Если вы находитесь в дистрибутиве на основе Debian (я предполагаю, что вы используете Linux, так как вы упомянули wget
), запустите
apt-get install curlftpfs
Создать локальный путь монтирования
mkdir -p /mnt/myftp
Смонтируйте целевой FTP-сайт, используя curlftpfs
curlftpfs -o allow_other ftp://user:pass@ftp.mirror.com /mnt/myftp
Используйте cp
для копирования файлов, передав find
в качестве аргумента команду:
cd /mnt/myftp && \
cp -v --parents `find . -type f -mtime -20` ~/foo/
Объяснение:
В совокупности эти команды / опции должны иметь желаемый эффект зеркального отображения удаленного сервера при игнорировании старых файлов.
Предостережения:
Это относительно упрощенный сценарий. Если у вас есть более продвинутые требования (все те wget
опции , которые вы оставили вне) вы можете посмотреть на man cp
или, для более dvanced вариантов man rsync
. Вы сможете сделать по существу то же самое в rsync
пропускании результата find
команды , используя rsync
«s --include-from
варианта.
Если вы обновите свой вопрос более конкретными требованиями (сохранение ссылок, жестких ссылок, временных отметок, пользовательских привилегий, рекурсии каталогов и т. Д.), Я смогу изменить свой ответ в соответствии с ними.
-c
(продолжение) помочь?