Чи можу я завантажити всю папку за допомогою FTP?


29

Мені потрібно завантажити повну папку за допомогою FTP. Чи є можливість передати папку та весь її вміст одночасно?

Відповіді:


24

Якщо ви використовуєте стандартний клієнтський рядок ftp-клієнта, MPUTкоманда дозволить вам перенести всі файли, що відповідають шаблону (оболонки в глобальному стилі), і 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
Pepijn Olivier

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.