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