Могу ли я загрузить всю папку, используя FTP?


29

Мне нужно загрузить полную папку, используя FTP. Есть ли возможность перенести папку и все ее содержимое сразу?

Ответы:


24

Если вы используете стандартный ftp-клиент из MPUTкомандной строки, команда позволит вам перенести все файлы, соответствующие шаблону (shell-glob-style), поэтому MPUT *отправит все файлы в текущем каталоге. Существует также MGETдля получения файлов, соответствующих шаблону.

По умолчанию оба MPUTи MGETбудут запрашивать, передавать ли каждый файл перед этим. Возможно, вы захотите отключить подсказку с помощью команды «PROMPT» (без аргументов; это переключение).


Этот вопрос изначально возник из stackoverflow, поэтому я считаю, что это должен быть принятый ответ. Хотя первоначальный аскер, кажется, исчез, поэтому он не примет его ...
codetaku

Предупреждение: клиент командной строки FTP, который поставляется с Windows, не поддерживает пассивный режим, поэтому использование этой техники может напрасно тратить ваше время. Это произошло в моем случае, так как мне нужно было загружать файлы и использовать командную строку Windows с изначально установленными инструментами.
sean2078

1
Он будет передавать все простые файлы в текущем каталоге, но не будет рекурсивно передавать любые имеющиеся каталоги. Это будет просто игнорировать их молча
Bergercookie

22

Вы можете использовать ncftpput. Сделайте следующее:

  1. Установите ncftp:

    yum install ncftp
    

ням строчная.

В качестве альтернативы:

    apt-get install ncftp

2. Выполните следующую команду:

    ncftpput -R -v -u "ftp-username" ftp.website.com ftp-upload-path local-path/*

Yum должен быть изменен на yum - так как он чувствителен к регистру.
olekeh

1
Вот все варианты CLI для ncftpput: ncftp.com/ncftp/doc/ncftpput.html
Оливье

8

Используйте FTP-клиент, такой как LeechFTP или FileZilla или что-то подобное. Многие люди клянутся CuteFTP, но это условно-бесплатная последняя проверка, которую я проверил. Вся поддержка переноса всей папки, включая структуру каталогов.




2

Простой учебник для других новичков Windows, таких как я, которые попали сюда:

Самый простой способ загрузить всю папку (со всеми подпапками и файлами в них):

  1. Скачать NcFTP Client (это бесплатно, но вы можете пожертвовать) по этой ссылке .
  2. Выберите NcFTP Client 3.2.5 для Microsoft Windows из списка.
  3. Установите это.
  4. Когда закончите, появится маленькое окно CMD со значком вишни. Тебе это не нужно.
  5. Просто откройте стандартное окно CMD и введите:
    ncftpput -u * yourUserNameHere * -p * yourUserPasswordHere * -R * www.yourWebsite.com * /
                     _C: \ yourFolderDirectoryHere \\ * _
    (одной строкой).

Обратите внимание, что:

  • -R флаг для "рекурсивный"; это делает команду копировать все подпапки рекурсивно
  • / (косая черта) является корневым каталогом вашего сайта
  • C:\yourFolderDirectoryHere\* выбирает все внутри C:\yourFolderDirectoryHere

выглядит хорошо, но сервер запретил мой IP, сказав, что я сделал 800 подключений за короткий промежуток времени. нет способа уменьшить количество соединений. Еще одна проблема заключается в том, что я не знаю, как пропустить загрузку, если целевой файл уже существует.
16851556

2

Я предложу ответ, который - хотя это чисто грубая сила и ни в коем случае не элегантный - был единственным, что сработало для меня в командной строке. Я создал список файлов и поместил их в скрипт:

создать свой список файлов:

find my-dir -exec echo "put /Users/username/"{} {}  \;

скопируйте и вставьте их в скрипт:

#!/bin/bash

hostname="my-ftp-host"
username="username"
password="password"
ftp -in $hostname <<EOF
quote USER $username
quote PASS $password

binary
cd 123456
{COPY THE LIST HERE}
quit
EOF


0

FileZilla отлично подходит для этого. Если вы не хотите ничего скачивать / устанавливать, это можно сделать с помощью Internet Explorer. Перейдите в дополнительные параметры и выберите Enable FTP folder view (outside of Internet Explorer). Затем вы можете указать окно обозревателя на своем FTP-сервере и перетаскивать файлы и папки между окнами обозревателя.



0

Целевой каталог - это zip-файл. Вы можете скопировать полный zip-файл на ftp-сервер, используя следующий код.

//Taking source and target directory path
string sourceDir = FilePath + "Files\\" + dsCustomer.Tables[0].Rows[i][2].ToString() + "\\ConfigurationFile\\" + dsSystems.Tables[0].Rows[j][0].ToString() + "\\XmlFile";

string targetDir = FilePath + "Files\\Customers\\" + CustomerName + "\\" + SystemName + "\\";                                                                                       
foreach (var srcPath in Directory.GetFiles(sourceDir))
{
    //Taking file name which is going to copy from the sourcefile                                              
    string result = System.IO.Path.GetFileName(srcPath);

    //If that filename exists in the target path
    if (File.Exists(targetDir + result))
    {
        //Copy file with a different name(appending "Con_" infront of the original filename)
        System.IO.File.Copy(srcPath, targetDir + "Con_" + result);
    }
    //If not existing filename
    else
    {
        //Just copy. Replace bit is false here. So there is no overwiting.
        File.Copy(srcPath, srcPath.Replace(sourceDir, targetDir), false);
    }
}         

Это хорошо, но ваша программа не компилируется.
DavidPostill

0

Мой ответ - это вариант ответа @dgig.

Вы можете перечислить все файлы и сохранить их (включая команду put) в файл:

find my-dir -exec echo "put /Users/username/"{} {} > list.txt \; 

а затем используйте sftp для обработки файла:

sftp -C -b sftpbatchfile.txt name@server

-Cдля сжатия, -bдля пакетного файла


Это не использует FTP, как просили. sftpПрограмма использует протокол SFTP , который другой протокол , хотя он имеет несколько общих букв. И вы не редактировали enter code hereостаток.
dave_thompson_085
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.