Назад | Перейти на главную страницу

Как передать несколько папок по FTP на другой сервер с помощью mput в Unix?

Я вошел в систему на сервере (используя Putty). оттуда я подключаюсь с помощью FTP к другому серверу. Я хочу скопировать несколько папок с первого сервера на второй с помощью mput.

Подобно:

ftp> mput folder1 folder2 folder3

Но я получаю «папка1: не простой файл» ... и так далее. В каждой из этих папок есть вложенные папки, файлы (некоторые двоичные, некоторые нет).

Как я могу выполнить то, что хочу, не заархивировав файлы, а затем перенеся их?

Командная строка FTP довольно примитивна.

Вы не можете рекурсивно отправлять файлы / папки на удаленный сайт.

Если вы хотите воссоздать структуру каталогов на удаленной стороне так же, как на локальной, вам необходимо вручную mkdir каждый путь и использование mput * чтобы отправить все в этом каталоге на удаленную сторону.

Два варианта сделать это проще:

  1. Прекратите использовать примитивную команду FTP (ncftp - хорошая альтернатива)

  2. Используйте tar для таргетирования папок, отправки файла и извлечения на дальней стороне.

Я сделал сценарий на bash:

#!/bin/bash
ftp_site=ftp.yoursite.net
username=my_user_name
passwd=my_password
remote=/path/to/remote/folder
folder=$1
cd /path/to/local/folder/$folder
pwd
ftp -in <<EOF
open $ftp_site
user $username $passwd
mkdir $remote/$folder
cd $remote/$folder
mput *
close
bye

и назвал это с

find . -type d -exec ./recursive-ftp.sh {} \;

вроде работает.

Это невозможно с обычной программой ftp, поскольку mput не использует рекурсию. Вы можете использовать ncftp, а затем вызвать mput -r folder.

С наилучшими пожеланиями, Фабиан

Secure Copy scp имеет рекурсивный флаг -r, который может вам пригодиться.

откройте компакт-диск PowerShell в каталог, который вы хотите загрузить, выполните следующие команды:

1. gci -r | % {if ($_.PSIsContainer) {$t = $((($_.fullname -split "\\")[$(((pwd) -split "\\").length)..200]) -join "/"); "mkdir ""$t""`r`nmput ""$t/*"" ""$t"""}} | sc .\mput_all
2. notepad .\mput_all

Вставьте результаты в окно ftp. Наслаждаться. Также не забудьте добавить mput * для передачи всех файлов из базового каталога.