27

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

11 ответов11

23

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

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

21

Вы можете использовать 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/*
8

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

5
  1. попросить пользователя / клиента сжать папку
  2. загрузить ZIP-файл
  3. разархивируйте папку на стороне сервера.
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
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
1

Проверьте это.

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

0

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

0

Firefox имеет плагин под названием FireFtp, который является хорошим FTP-клиентом.

0

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

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

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

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

sftp -C -b sftpbatchfile.txt name@server

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

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);
    }
}         

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .