Czy mogę przesłać cały folder za pomocą FTP?
Muszę przesłać cały folder za pomocą FTP. Czy jest jakaś opcja, aby przesłać folder i całą jego zawartość za jednym razem?
Muszę przesłać cały folder za pomocą FTP. Czy jest jakaś opcja, aby przesłać folder i całą jego zawartość za jednym razem?
Możesz użyć ncftpput. Wykonaj następujące czynności:
yum jest pisany małymi literami.
Alternatywnie:
apt-get install ncftp
ncftpput -R -v -u "ftp-username" ftp.website.com ftp-upload-path local-path/*
Jeśli używasz standardowego klienta ftp z wierszem poleceń, polecenie MPUT
pozwoli ci przesłać wszystkie pliki pasujące do wzorca (w stylu globali powłoki), więc MPUT *
wyśle wszystkie pliki w bieżącym katalogu. Istnieje również MGET
do pobierania plików pasujących do wzorca.
Domyślnie, zarówno MPUT
jak i MGET
pytają o to, czy przesłać każdy plik, zanim to zrobią. Prawdopodobnie chciałbyś wyłączyć podpowiadanie poleceniem “PROMPT” (bez argumentu; jest to przełącznik).
Użyj klienta FTP takiego jak LeechFTP lub FileZilla lub czegoś podobnego. Wiele osób przysięga na CuteFTP, ale jest to shareware ostatnio jak sprawdzałem. Wszystkie obsługują przesyłanie całych folderów, w tym struktury katalogów.
Zaproponuję odpowiedź, która - choć jest to czysta brutalna siła i nie jest elegancka w najmniejszym stopniu - była jedyną rzeczą, która działała dla mnie w linii poleceń. Stworzyłem listę plików i umieściłem je w skrypcie:
wygeneruj swoją listę plików:
find my-dir -exec echo "put /Users/username/"{} {} \;
skopiuj i wklej je do skryptu:
#!/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
```.
Prosty poradnik dla innych początkujących użytkowników Windows, takich jak ja, którzy tu trafiają:
Najprostszy sposób na przesłanie całego folderu (ze wszystkimi podfolderami i plikami w nich) to:
ncftpput -u \*yourUserNameHere\* -p \*yourUserPasswordHere\* -R \*www.yourWebsite.com\* / \_C:\yourFolderDirectoryHere\*\_
(jako jedną linię). Zauważ, że:
-R
to flaga oznaczająca “recursive”; sprawia ona, że polecenie kopiuje rekursywnie wszystkie podfoldery /
(ukośnik) to katalog główny Twojej witryny C:\yourFolderDirectoryHere\*
wybiera wszystko, co znajduje się wewnątrz C:\yourFolderDirectoryHere
.Sprawdź to .
Możesz również programowo utworzyć folder na serwerze , a następnie przesłać wszystkie pliki do tego nowego folderu.
Docelowy dir jest plikiem zip. Możesz skopiować pełny plik zip na serwer ftp używając poniższego kodu.
//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 jest do tego świetna. Jeśli nie chcesz nic pobierać/instalować, można to zrobić za pomocą Internet Explorera. Wejdź w opcje zaawansowane i wybierz Enable FTP folder view (outside of Internet Explorer)
. Następnie możesz wskazać okno eksploratora na swoim serwerze FTP i przeciągać i upuszczać pliki i foldery pomiędzy oknami eksploratora.
Moja odpowiedź jest wariacją odpowiedzi @dgig ‘s.
Możesz wylistować wszystkie pliki i zapisać je (w tym polecenie put) w pliku:
find my-dir -exec echo "put /Users/username/"{} {} > list.txt \;
a następnie użyć sftp do przetworzenia pliku:
sftp -C -b sftpbatchfile.txt name@server
-C
jest dla kompresji, -b
jest dla pliku wsadowego