Czy mogę przesłać cały folder za pomocą FTP?

29

Muszę przesłać pełny folder za pomocą FTP. Czy jest jakaś opcja przeniesienia folderu i całej jego zawartości na raz?

Jeff Atwood
źródło

Odpowiedzi:

24

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).

Dave Sherohman
źródło
To pytanie pierwotnie pochodzi z przepełnienia stosu, więc uważam, że powinna to być zaakceptowana odpowiedź. Chociaż wydaje się, że pierwotny
pytający
Ostrzeżenie: klient wiersza poleceń FTP dostarczany z systemem Windows nie obsługuje trybu pasywnego, więc użycie tej techniki może zmarnować Twój czas. Tak było w moim przypadku, ponieważ musiałem przesyłać pliki i korzystałem z wiersza polecenia systemu Windows z natywnie zainstalowanym oprzyrządowaniem.
sean2078
1
Prześle wszystkie zwykłe pliki z bieżącego katalogu, ale nie przeniesie rekurencyjnie żadnych obecnych katalogów. Po prostu je zignoruje
bergercookie
22

Możesz użyć ncftpput. Wykonaj następujące czynności:

  1. 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/*
Mohamed BK
źródło
Yum należy zmienić na yum - z uwagi na wielkość liter.
olekeh
1
Oto wszystkie opcje CLI dla ncftpput: ncftp.com/ncftp/doc/ncftpput.html
Pepijn Olivier
8

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.

Joshua Nurczyk
źródło
1
+1 dla FileZilla: filezilla-project.org/download.php?type=client
William Jackson
5
  1. poproś użytkownika / klienta o spakowanie folderu
  2. prześlij plik zip
  3. rozpakuj po stronie serwera folderów .
Chase Florell
źródło
Uwaga: moja odpowiedź została opublikowana na StackOverflow. Dlatego odwołuje się do rozwiązania „kodującego”.
Chase Florell
2

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:

  1. Pobierz klienta NcFTP (to nic nie kosztuje, ale możesz przekazać darowiznę) z tego linku .
  2. Wybierz z listy klienta NcFTP 3.2.5 dla Microsoft Windows .
  3. Zainstaluj to.
  4. Po zakończeniu pojawi się małe okno CMD z ikoną wiśni. Nie potrzebujesz tego.
  5. Wystarczy otworzyć standardowe okno CMD i wpisać:
    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 witryny
  • C:\yourFolderDirectoryHere\* zaznacza wszystko w środku C:\yourFolderDirectoryHere
DBS
źródło
wygląda ładnie, ale serwer zablokował mój adres IP, mówiąc, że wykonałem 800 połączeń w krótkim odstępie czasu. nie ma sposobu na zmniejszenie liczby połączeń. INNY problem polega na tym, że nie wiem, jak pominąć przesyłanie, jeśli plik docelowy już istnieje.
16851556
2

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
dgig
źródło
0

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.

Jim Fell
źródło
0

Firefox ma wtyczkę o nazwie FireFtp, która jest przyjemnym klientem ftp.

strumień
źródło
0

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);
    }
}         
użytkownik606353
źródło
To miłe, ale twój program się nie kompiluje.
DavidPostill
0

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

Juraj.Lorinc
źródło
Nie używa FTP zgodnie z zapytaniem. 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.
dave_thompson_085