Jak skopiować plik ze zdalnego serwera na komputer lokalny?

238

W mojej powłoce terminala ssh'ed na zdalny serwer i przechodzę cddo katalogu, który chcę.

Teraz w tym katalogu znajduje się plik o nazwie, tablektóry chcę skopiować na mój komputer lokalny /home/me/Desktop.

Jak mogę to zrobić?

Próbowałem, scp table /home/me/Desktopale wystąpił błąd dotyczący braku takiego pliku lub katalogu.

Czy ktoś wie jak to zrobić?

omega
źródło
Jeśli często kopiujesz za pomocą scp, możesz zamontować katalog zdalny w przeglądarce plików i przeciągnij i upuść. Na moim hoście Ubuntu 15 znajduje się pod paskiem menu „Idź”> „Wprowadź lokalizację”> [email protected]:/home/debian. Alternatywnie można użyć sshfsdo zamontowania systemu plików komputera zdalnego na hoście. Ale ta konfiguracja jest nieco bardziej zaangażowana.
ConvexMartian
Dać rsyncszansę. Jest świetny zarówno dla kopii lokalnych, jak i zdalnych, daje postęp kopiowania itp. Przykład
sakisk

Odpowiedzi:

380

Składnia scpjest następująca:

Jeśli korzystasz z komputera, z którego chcesz wysłać plik na komputer zdalny:

scp /file/to/send username@remote:/where/to/put

Tutaj remotemoże być nazwa FQDN lub adres IP.

Z drugiej strony, jeśli jesteś na komputerze, który chce odbierać pliki z komputera zdalnego:

scp username@remote:/file/to/send /where/to/put

scp może również wysyłać pliki między dwoma zdalnymi hostami:

scp username@remote_1:/file/to/send username@remote_2:/where/to/put

Podstawowa składnia to:

scp username@source:/location/to/file username@destination:/where/to/put

Możesz przeczytać, man scpaby uzyskać więcej pomysłów na ten temat.

heemayl
źródło
4
Co jeśli chcę skopiować wiele plików? Dodałem spację i właśnie wykorzystałem kolejne /file/to/sendDziękujemy za wspaniałą odpowiedź!
camdixon,
6
scp -rskopiuje rekurencyjnie.
Henry,
Co chcę skopiować pliki z sieci na moją
maszynę
2
@heemayl +1 za dobrą odpowiedź. Pomyśl, aby dodać, że w przypadku, gdy jest to bezpieczne połączenie (które wymaga uwierzytelnienia), możesz użyć następujących (do kopiowania pliku z lokalnego na zdalny): scp -i mykey.pem somefile.txt [email protected] : / some / folder / in / remote
Guy Avraham
1
Służy scp -P 123do określania niestandardowego portu
aexl
14

Możesz użyć rsyncjako alternatywy. Służy głównie do synchronizacji plików ... ale możesz go również użyć do tego celu.

rsync -avzh --stats --progress remoteuser@remoteip  localpath 

aby dodać opcje ssh:

rsync -e "ssh -P $port_value" remoteuser@remoteip  localpath

--progressi --statssą przydatne do wyświetlania przelewu w czasie rzeczywistym.

zbieg
źródło
8
scp username@ipaddress:pathtofile localsystempath

scp sadananad@ipaddress:/home/demo/public_html/myproject.tar.gz .

Jeśli korzystasz z portu:

scp -Pportnumber username@ipaddress:pathtofile localsystempath 

scp -P2233 sadananad@ipaddress:/home/demo/public_html/myproject.tar.gz .
Sadanand Kenganal
źródło
Spowoduje to skopiowanie pliku do tego samego zdalnego katalogu.
Max Yudin,
3

Jeśli całkowicie zaufać wszystkich w sieci i można podłączyć do portu urządzenia docelowego bezpośrednio, można użyć netcata: nc.

Załóżmy, że adres IP komputera docelowego to 192.168.1.123

W biegu docelowym:

nc -l -p 7777 0.0.0.0 | tar zxvf - -C dest_dir

Możesz wybrać inny port, a także powiązać z innym adresem IP swoich interfejsów, 0.0.0.0 po prostu łapie na wszystkich interfejsach.

W biegu źródłowym:

tar zxcf - filename | nc 192.168.1.123 7777

IMHO, to najszybszy możliwy sposób przesłania pliku z jednego komputera na drugi za pomocą sieci cyfrowych.

Argumenty i opcje wiersza poleceń mogą nieznacznie zmieniać się między różnymi wersjami nci tar, ale na pewno zadziała z najnowszymi dystrybucjami Linuksa.

onur güngör
źródło
2

W systemie Linux, aby skopiować folder i jego zawartość z katalogu użytkownika (w tym przykładzie root), do folderu w lokalnym katalogu użytkownika, uruchamiam to polecenie na komputerze lokalnym:

scp -r [email protected]: ~ / folderinremoteuserdir ~ / folderinlocaluserdir

Zwróć uwagę na ~ / o którym często zapominam ...

Little Brain
źródło