Мені потрібно завантажити повну папку за допомогою FTP. Чи є можливість передати папку та весь її вміст одночасно?
Мені потрібно завантажити повну папку за допомогою FTP. Чи є можливість передати папку та весь її вміст одночасно?
Відповіді:
Якщо ви використовуєте стандартний клієнтський рядок ftp-клієнта, MPUT
команда дозволить вам перенести всі файли, що відповідають шаблону (оболонки в глобальному стилі), і MPUT *
буде надсилати всі файли в поточному каталозі. Також можна MGET
отримати файли, що відповідають шаблону.
За замовчуванням обидва MPUT
і MGET
підкажуть, чи потрібно передавати кожен файл, перш ніж це зробити. Напевно, ви хочете вимкнути запит за допомогою команди "PROMPT" (немає аргументу; це перемикання).
Ви можете використовувати ncftpput. Зробіть наступне:
Встановити ncftp:
yum install ncftp
ням є малі.
Як варіант:
apt-get install ncftp
2. Виконайте таку команду:
ncftpput -R -v -u "ftp-username" ftp.website.com ftp-upload-path local-path/*
Використовуйте клієнт FTP, такий як LeechFTP або FileZilla або щось подібне. Багато людей клянуться CuteFTP, але це умовно-безкоштовне програмне забезпечення, яке я остаточно перевірив. Всі підтримують передачу цілої папки, включаючи структуру каталогів.
Простий підручник для інших новачків Windows, таких як я, які тут закінчуються:
Найпростіший спосіб завантажити всю папку (з усіма підпапками та файлами в них):
ncftpput -u * yourUserNameHere * -p * yourUserPasswordHere * -R * www.yourWebsite.com * / _C: \ yourFolderDirectoryHere \\ * _(як один рядок).
Зауважте, що:
-R
- прапор для "рекурсивного"; це робить команду копіювати всі підпапки рекурсивно/
(косою рисою) - кореневий каталог вашого веб-сайтуC:\yourFolderDirectoryHere\*
вибирає все всередині C:\yourFolderDirectoryHere
Я запропоную відповідь, яка - хоч і є чистою грубою силою і не найменшою елегантністю - була єдиним, що працювало на мене в командному рядку. Я створив список файлів і вклав їх у сценарій:
створити свій список файлів:
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
Перевірте це .
Ви також можете програмно створити папку на сервері , а потім завантажити всі файли в цю нову папку.
FileZilla чудово підходить для цього. Якщо ви не хочете нічого завантажувати / встановлювати, це можна зробити за допомогою Internet Explorer. Перейдіть до розширених опцій та виберіть Enable FTP folder view (outside of Internet Explorer)
. Потім ви можете вказати вікно провідника на ваш FTP-сервер і перетягнути файли та папки між вікнами провідника.
Цільовим режимом є 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);
}
}
Моя відповідь - це варіант відповіді @dgig.
Ви можете перелічити всі файли та зберегти їх (включаючи команду put) у файл:
find my-dir -exec echo "put /Users/username/"{} {} > list.txt \;
а потім використовуйте sftp для обробки файлу:
sftp -C -b sftpbatchfile.txt name@server
-C
призначений для стиснення, -b
призначений для пакетного файлу
sftp
Програма використовує протокол SFTP , який інший протокол , хоча він має кілька загальних букв. І ви не редагували enter code here
залишок.