Я вошел в систему на сервере (используя Putty). оттуда я подключаюсь с помощью FTP к другому серверу. Я хочу скопировать несколько папок с первого сервера на второй с помощью mput.
Подобно:
ftp> mput folder1 folder2 folder3
Но я получаю «папка1: не простой файл» ... и так далее. В каждой из этих папок есть вложенные папки, файлы (некоторые двоичные, некоторые нет).
Как я могу выполнить то, что хочу, не заархивировав файлы, а затем перенеся их?
Командная строка FTP довольно примитивна.
Вы не можете рекурсивно отправлять файлы / папки на удаленный сайт.
Если вы хотите воссоздать структуру каталогов на удаленной стороне так же, как на локальной, вам необходимо вручную mkdir
каждый путь и использование mput *
чтобы отправить все в этом каталоге на удаленную сторону.
Два варианта сделать это проще:
Прекратите использовать примитивную команду FTP (ncftp - хорошая альтернатива)
Используйте 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 * для передачи всех файлов из базового каталога.