Muszę przesłać pełny folder za pomocą FTP. Czy jest jakaś opcja przeniesienia folderu i całej jego zawartości na raz?
Muszę przesłać pełny folder za pomocą FTP. Czy jest jakaś opcja przeniesienia folderu i całej jego zawartości na raz?
Odpowiedzi:
Jeśli używasz standardowego klienta ftp z MPUT
wiersza poleceń , polecenie pozwoli ci przesłać wszystkie pliki pasujące do wzorca (powłoki glob-style), więc MPUT *
wyśle wszystkie pliki w bieżącym katalogu. Istnieje również MGET
możliwość pobrania plików pasujących do wzorca.
Domyślnie zarówno MPUT
i MGET
pytają, czy przesłać każdy plik przed zrobieniem tego. Prawdopodobnie zechcesz wyłączyć wyświetlanie monitów za pomocą polecenia „PROMPT” (bez argumentu; jest to przełączanie).
Możesz użyć ncftpput. Wykonaj następujące czynności:
Zainstaluj ncftp:
yum install ncftp
mniam jest małymi literami.
Alternatywnie:
apt-get install ncftp
2. Wykonaj następujące polecenie:
ncftpput -R -v -u "ftp-username" ftp.website.com ftp-upload-path local-path/*
Użyj klienta FTP, takiego jak LeechFTP lub FileZilla lub coś podobnego. Wiele osób przysięga na CuteFTP, ale ostatnio sprawdziłem shareware. Wszystkie obsługują przesyłanie całego folderu, w tym struktury katalogów.
Prosty samouczek dla innych początkujących użytkowników systemu Windows, takich jak ja, którzy trafiają tutaj:
Najłatwiejszym sposobem przesłania całego folderu (ze wszystkimi podfolderami i plikami) jest:
ncftpput -u * twojaUserNameHere * -p * twojeUserPasswordHere * -R * www.yourWebsite.com * / _C: \ yourFolderDirectoryHere \\ * _(jako jedna linia).
Uwaga:
-R
jest flagą słowa „rekurencyjny”; powoduje, że polecenie kopiuje rekursywnie wszystkie podfoldery/
(ukośnik) to katalog główny Twojej witrynyC:\yourFolderDirectoryHere\*
zaznacza wszystko w środku C:\yourFolderDirectoryHere
Dam ci odpowiedź, która - choć jest to czysta brutalna siła i w najmniejszym stopniu elegancka - była jedyną rzeczą, która działała dla mnie w linii poleceń. Utworzyłem listę plików i umieściłem je w skrypcie:
wygeneruj 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
Sprawdź to .
Możesz także programowo utworzyć folder na serwerze , a następnie przesłać wszystkie pliki do tego nowego folderu.
FileZilla jest do tego świetna. Jeśli nie chcesz niczego pobierać / instalować, możesz to zrobić za pomocą Internet Explorera. Przejdź do opcji zaawansowanych i wybierz Enable FTP folder view (outside of Internet Explorer)
. Następnie możesz skierować okno eksploratora na serwer FTP i przeciągać i upuszczać pliki oraz foldery między oknami eksploratora.
Docelowy katalog to plik 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);
}
}
Moja odpowiedź jest odmianą odpowiedzi @dgig.
Możesz wyświetlić listę wszystkich plików i zapisać je (w tym polecenie put) w pliku:
find my-dir -exec echo "put /Users/username/"{} {} > list.txt \;
a następnie użyj sftp do przetworzenia pliku:
sftp -C -b sftpbatchfile.txt name@server
-C
służy do kompresji, -b
służy do pliku wsadowego
sftp
Program korzysta z protokołu SFTP, który jest inny protokół choć ma kilka listów wspólnego. I nie edytowałeś enter code here
resztek.