polecenie sftp, aby pobrać / pobrać plik .tar.gz

16

Wydawało mi się, że znam sftpkomendy w Uniksie i zgodnie z moją wiedzą jest to komenda używana do pobrania compressedpliku z serwera

sftp pobierz plik.tar.gz

Ale kiedy wypróbowałem to polecenie, plik został opróżniony, to znaczy, że rozmiar pliku wynosi 0 i nie wiem, dlaczego tak się dzieje. Czy jest jakieś inne polecenie specjalnie dla .tar.gztypu plików. Jaka jest procedura uzyskania tych skompresowanych plików. Używam terminala Mac.

GIRI
źródło
2
Nie musisz podawać adresu serwera? Jakie jest dokładnie wpisane polecenie?
Faheem Mitha,
@FaheemMitha Wszedłem na serwer za pomocą polecenia sftp. serwer użytkownika [at] sftp i terminal, z którego korzystałem> get filename.tar.gz
GIRI,

Odpowiedzi:

24

get jest legalnym poleceniem sftp, ale nie można go używać w ten sposób.

Prawidłowa składnia do pobrania filename.tar.gzna komputer Mac to:

sftp user@host:/path/to/filename.tar.gz /some/local/folder

(Zamień userna użytkownika, którego używasz do łączenia się ze zdalnym serwerem, zamień hostna nazwę zdalnego serwera).

W tar.gzpowyższym poleceniu nie ma nic specjalnego dla plików, jest ono ogólne dla każdego rozszerzenia.

Aby użyć get, musisz najpierw wejść w tryb interaktywny:

  1. Nawiąż połączenie ze zdalnym serwerem:

    sftp user@host
    

    Poczekaj, aż >pojawi się monit sftp w nowym wierszu - teraz możesz pisać polecenia.

  2. Zmień ścieżkę zdalną na /path/to:

    cd /path/to/
    
  3. Zmień ścieżkę lokalną na /some/local/folder:

    lcd /some/local/folder
    
  4. Użyj, getaby pobrać plik:

    get filename.tar.gz
    
jaume
źródło
Nie, to nie działa Próbowałem twoich sugestii. Próbowałem zmienić lokalne ścieżki, ale bez efektu.
GIRI,
Czy możesz opublikować dane wyjściowe polecenia sftp?
jaume
Nie ma takiej rzeczy wyjściowej, ponieważ typ sftp > get filename.tar.gznie jest pobierany, a pamięć zmienia się na 0.
GIRI
Ani sftp > get filename.tar.gzteż, jak napisano w pytaniu, nie sftp get filename.tar.gzbędzie działać. Prawidłowa składnia jest taka sftp user@host:/path/to/filename.tar.gz /some/local/folder, jak wyjaśniono w mojej odpowiedzi. Co się dzieje po wpisaniu komendy (wymienić user, host, /path/tooraz /some/local/folderz wartościami, które są właściwe w danym środowisku) w terminalu, a następnie naciśnij klawisz Enter? Czy jest jakiś wynik? Jeśli tak, dodaj go do naszego pytania.
jaume
Brak wyjścia. po prostu przechodzi do następnej linii.
GIRI
0

Oto inny sposób, jeśli jesteś już zalogowany do sesji sftp.

Jeśli dostaniesz:

sftp> get my-file.txt
get: failed to download /home/user/my-file.txt. Access is denied. 

Możesz rozważyć, czy lokalnie masz uprawnienia do pisania. Aby sprawdzić, gdzie plik zostanie pobrany, wykonaj:

sftp> lpwd
C:\Users\user1\Documents

Zasadniczo „Dokumenty” nie są dozwolone. Zmień katalog pobierania na C:\tmp:

sftp> lcd C:\tmp
sftp> get my-file.txt
    Downloading my-file.txt from /home/user/my-file.txt
    1% 437123KB    620KB/s 00:00:41 ETA

Gotowy

manix
źródło