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 MPUTwiersza 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ż MGETmożliwość pobrania plików pasujących do wzorca.
Domyślnie zarówno MPUTi MGETpytają, 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:\yourFolderDirectoryHereDam 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
-Csłuży do kompresji, -bsłuży do pliku wsadowego
sftpProgram korzysta z protokołu SFTP, który jest inny protokół choć ma kilka listów wspólnego. I nie edytowałeś enter code hereresztek.