Рекурсивная загрузка файлов на/c FTP с помощью NCFTP

  • Михаил
  • 12 мин. на прочтение
  • 509
  • 07 Aug 2022
  • 07 Aug 2022

Если у вас есть много файлов для загрузки на веб-сайт, и доступ осуществляется только через FTP, вы можете использовать хороший инструмент с графическим интерфейсом, чтобы просто перетащить каталог, или вы можете использовать инструмент командной строки ncftpput. Мне не редко приходится поддерживать людей с веб-сайтами на серверах, отличных от тех, которыми я управляю. Если сервер доступен только по FTP и мне нужно получить копию всего веб-сайта, я использую инструмент командной строки ncftpget для рекурсивной загрузки всех файлов и каталогов за один раз.

Установка ncftpget

ncftpget является частью пакета ncftp.

В дистрибутивах Linux на основе APT (например, Debian) вы можете установить его следующим образом:

apt-get install ncftp

В дистрибутивах Linux на основе YUM (например, CentOS, RHEL) вы можете установить его следующим образом:

yum install ncftp

Использование ncftpget

Используйте команду следующим образом:

 

ncftpget -R -T -v -u [имя пользователя] [имя хоста] [локальный путь] [удаленный путь]

-R указывает ncftpget рекурсивно загружать файлы и каталоги

 

-T говорит не пытаться загрузить tar (у меня это никогда не работало и приводит к ошибке «tar: это не похоже на tar-архив» и «tar: выход со статусом сбоя из-за предыдущих ошибок». Фактические файлы впоследствии скачать нормально).

 

-v говорит, чтобы быть подробным и показывать ход загрузки; вы можете опустить это, но может быть полезно увидеть, что происходит

-u указывает используемое имя пользователя. Измените [имя пользователя] на пользователя, чтобы войти в систему как

Замените [имя хоста] сервером для ftp.

 

Замените [локальный путь] на то, куда вы хотите скопировать файлы.

Замените [удаленный путь] на путь, по которому файлы находятся на сервере, к которому вы подключаетесь.

Пример

Допустим, наше имя пользователя — «chris», сервер — 10.1.1.10, путь, который мы хотим сохранить локально, — /tmp, и мы хотим загружать файлы с удаленного хоста из /httpdocs. Сделай это:

ncftpget -R -T -v -u Крис 10.1.1.10 /tmp /httpdocs

Затем вас попросят ввести пароль, и загрузка начнется.

 

Зачем использовать инструмент командной строки?

Мне нужно было загрузить каталог, содержащий тысячи файлов и каталогов со многими подкаталогами. Я мог бы использовать инструмент с графическим интерфейсом, но это заняло бы очень много времени. Не было доступа SSH, SFTP, rsync или SCP к рассматриваемому веб-сайту, поэтому я сделал следующее:


-=ncftpput - копирование на FTP сервер=-

ncftpput -R -z -r 10 -v -u "testuser" -p "secret" 192.168.1.1 /out/ c:/tmp/cp/.

или

ncftpput -R -z -r 10 -v -u "testuser" -p "secret" 192.168.1.1 /out/  c:/*.cmd

/out/ -- куда копируем,  папка в корне нашего FTP
c:/*.cmd  -- что копируем, все файлы с расширением cmd расположенные в корне диска "C"
=========
-=ncftpget - копирование с FTP сервера=-

ncftpget -R -z -r 10 -v -u "testuser" -p "secret" 192.168.1.1 c:/tmp/cp /in/*.txt

c:/tmp/cp --куда копируем

/in/*.txt --что копируем, все файлы .txt из папки "in" расположенной в корне FTP сервера

 

ncftpput -R -z -r 10 -v -u 'user' -p 'pass' 31.31.198.200 /subbnet.ru/wwwroot/content/ /opt/content/

 

ncftpget -R -u 'user' -p 'pass' ftp://31.31.198.200/dev.subbnet.ru/wwwroot/content/* /opt/content/

 

 

При повторном исполнении, загрузятся только новые файлы.