Мені потрібно завантажити повну папку за допомогою 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залишок.