Pytanie Jak scp folder z zdalnego do lokalnego? [Zamknięte]


Nie jestem pewien, czy jest to możliwe scp folder od zdalnego do lokalnego, ale nadal pozostaję bez żadnych innych opcji. Używam ssh do logowania się do mojego serwera, a stamtąd chciałbym skopiować folder foo do home/user/Desktop (mój lokalny). Czy jest jakieś polecenie, abym mógł to zrobić?


1931
2017-07-03 05:17


pochodzenie


@ 3bdalla to pytanie na pewno dotyczy tematu przepełnienia stosu, które zawiera pytania o "narzędzia programowe powszechnie używane przez programistów". - Abhi Beckert
Pytanie OP brzmiało, czy możliwe jest skopiowanie pliku z zdalnego do lokalnego hosta podczas ssh'd do zdalnego hosta. Nie wiem, dlaczego żadna pojedyncza odpowiedź nie rozwiązała poprawnie jego / jej pytania. - JeffDror
Stack Overflow to strona z pytaniami dotyczącymi programowania i programowania. To pytanie wydaje się być nie na temat, ponieważ nie chodzi o programowanie czy rozwój. Widzieć O jakich tematach mogę tutaj zapytać w Centrum pomocy. Być może Superużytkownik lub Unix i Linux Stack Exchange byłoby lepszym miejscem do zapytania. Zobacz także Gdzie mogę zamieszczać pytania na temat Dev Ops? - jww
Proszę zobaczyć meta.stackoverflow.com/questions/294217/.... Pytania wciąż tu są, możesz także głosować. Po prostu nie pozwala już więcej odpowiedzi. - Andre Figueiredo
Poparłem to pytanie w proteście przeciwko zamknięciu tego pytania! - gota


Odpowiedzi:


scp -r user@your.server.example.com:/path/to/foo /home/user/Desktop/

Od man scp

-r Recursively copy entire directories

3706
2017-07-03 05:21



użyj -p, aby zachować czas modyfikacji pliku, uprawnienia itd. scp -pr użytkownik @ ... - Ber
W tej odpowiedzi brakuje ważnego wyjaśnienia. Czy to się skończy? Desktop/foo czy będziesz miał Desktop/allcontentsofFooGohere scp czasami wydaje mi się dziwny, robi to jedno, a potem drugie - Toskan
na przykład (zwykle używane w skryptach powłoki): su myuser -c "scp -r /var/www/myapp.org/uploads root@$jcrdevip:/var/www/mydevapp.com/uploads" skopiuje zawartość z przesłanych plików do przesłanych. scp -r /var/www/myapp.org/uploads root@$jcrdevip:/var/www/mydevapp.com/uploads wydaje się kopiować przesłane pliki do folderu mydevapp.com/uploads folder tworzący niechciany podfolder - Toskan
@jww Jak widzisz, istnieje ponad 3 tysiące zapisków w górę dla tej odpowiedzi. Może to pytanie z odpowiedziami są naprawdę potrzebne dla ludzi? - Mikhail Morgunov
Począwszy od 20180724, to pytanie i odpowiedź są dwoma najlepszymi odsyłaczami do zapytania: "scp copy a dir", wydaje się, że jest to "wyłączony temat" dla programistów - jestem pewien, że żadni twórcy uniksa nigdy nie chcieli zrobić czegoś takiego: ) - decuser


Aby użyć pełnej mocy scp musisz przejść kolejne kroki:

  1. Autoryzacja klucza publicznego
  2. Utwórz aliasy ssh

Następnie, na przykład, jeśli masz to ~ / .ssh / config:

Host test
    User testuser
    HostName test-site.com
    Port 22022

Host prod
    User produser
    HostName production-site.com
    Port 22022

zaoszczędzisz sobie wpisania hasła i uprościsz go scp składnia jak poniżej:

scp -r prod:/path/foo /home/user/Desktop   # copy to local
scp -r prod:/path/foo test:/tmp            # copy from remote prod to remote test

Co więcej, będziesz mógł korzystać ze zdalnej realizacji ścieżki:

scp test:/var/log/  # press tab twice
Display all 151 possibilities? (y or n)

Aktualizacja:

Aby włączyć zdalne kończenie bash, powinieneś mieć powłokę bash na obu <source> i <target> hosty i poprawnie działające bash-completion. Aby uzyskać więcej informacji, zobacz pokrewne pytania:

Jak włączyć autouzupełnianie ścieżek zdalnych podczas korzystania z scp?
Uzupełnienie karty pliku SCP


236
2017-12-04 06:21



Nie wiedziałem o pliku konfiguracyjnym, to jest niesamowite! - dmastylo
Wypełnianie kart jest nonsensem, po prostu kończy się dla mnie z lokalnego hosta. - Bernhard
@ b.long Pytanie brzmi "Jak skopiować zdalny folder foo na lokalny pulpit". Moja odpowiedź jest "scp -r prod: / path / foo / home / user / Desktop". Mam nadzieję, że widzisz relacje. - Alexander Yancharuk
@Bernhard Dla mnie jest oczywiste, ponieważ używam powłoki bash. Dzięki za wskazanie mi tego! Odpowiedź zaktualizowana. - Alexander Yancharuk
@Alexander Yancharuk: Dzięki za odpowiedź, jest to bardziej szczegółowe niż samo pokrycie samej składni. - Gladiator


Aby skopiować wszystko z Lokalna lokalizacja do Zdalna lokalizacja (Przekazać plik)

scp -r /path/from/destination username@hostname:/path/to/destination

Aby skopiować wszystko z Zdalna lokalizacja do Lokalna lokalizacja (Pobieranie)

scp -r username@hostname:/path/from/destination /path/to/destination

Niestandardowy port, w którym xxxx jest Port niestandardowy numer

 scp -r -P xxxx username@hostname:/path/from/destination /path/to/destination

Skopiuj z bieżącego katalogu z Zdalny na lokalny

scp -r username@hostname:/path/from/file .

Wsparcie: 

  1. -r Rekurencyjnie skopiuj wszystkie katalogi i pliki
  2. Zawsze używaj pełnej lokalizacji od /Uzyskaj pełną lokalizację według pwd
  3. scp zastąpi wszystkie istniejące pliki
  4. hostname będzie nazwą hosta lub adresem IP
  5. jeśli wymagany jest niestandardowy port (poza portem 22) -P portnumber
  6. . (kropka) - oznacza aktualny katalog roboczy, więc pobierz / skopiuj z serwera i wklej tutaj tylko.

Uwaga: Czasami niestandardowy port nie będzie działać, ponieważ port nie jest dozwolony w zaporze, więc upewnij się, że niestandardowy port jest dozwolony w zaporze dla połączenia przychodzącego i wychodzącego


118
2018-05-23 09:38



Wygląda (przynajmniej w ostatnich wersjach Raspbian Jessie i Ubuntu), że scp używa -P (wielkie litery P) do portu, podczas gdy (dziwne) ssh używa -p (małe litery). - Adam Plocher
@AdamPlocher, Masz rację, ale mniej więcej zawsze używam -p (małe) :) - Shiv Singh
-p jest zarezerwowane dla zachowania "czasów modyfikacji, czasów dostępu i trybów z oryginalnego pliku". Więc jeśli używasz tego portu, prawdopodobnie to nie działa ;-) O ile nie masz innej wersji, która użyłaby małej litery p inaczej. - Adam Plocher
Z ssh, tak. Nie ze scp (zakładam). - Adam Plocher
Co powinienem umieścić, jeśli katalog zawiera spację? - hyprfrcb


Zawsze używam:

scp -r username@IP:/path/to/server/source/folder/  .

. (kropka) : to znaczy current folder. więc skopiuj z serwera i wklej tutaj tylko.

IP : może być adresem IP podobnym 125.55.41.311 lub może być hostem ns1.mysite.com.


39
2018-06-10 07:41



Dziękuję za zwrócenie na to uwagi . odnosi się do aktualnego katalogu! - ericmjl


Lepiej najpierw skompresować katalog na serwerze zdalnym:

tar czfP backup.tar.gz /path/to/catalog

Po drugie, pobierz ze zdalnego:

scp user@your.server.example.com:/path/to/backup.tar.gz .

Na końcu wyodrębnij pliki:

tar -xzvf backup.tar.gz

25
2018-05-29 11:12



"Lepsze" zależy w dużej mierze od przesyłanych danych i wysiłku, jaki ssh wysyła do serwera w celu skompresowania / rozpakowania. Oraz: możesz dodać kompresję do scp z -C flaga, jak scp -C a@b:bigfile .. - Automatico
Przypomina mi to komentarz autorstwa @cptloop! :RE xkcd.com/1168 - GoodSp33d


A jeśli masz jeden piekielny plik do pobrania ze zdalnej lokalizacji i jeśli nie dbasz o bezpieczeństwo, spróbuj zmienić domyślne szyfrowanie scp (Triple-DES) na coś takiego jak "blowfish".

Znacząco skróci to czas kopiowania plików.

scp -c blowfish -r user@your.server.example.com:/path/to/foo /home/user/Desktop/

20
2018-06-17 06:02



Według ten wpis na blogu masz lepszą wydajność dzięki arcfour zamiast blowfish, ale ma wady bezpieczeństwa. - Automatico


Idź do plików na pasku narzędzi jedności

enter image description here

Naciśnij Ctrl + 1 i wpisz here_goes_your_user_name@192.168.10.123

192.168.1.103 to host, z którym chcesz się połączyć.

Oto jeden przykład

enter image description here


15
2017-11-09 21:05





Typowy scenariusz,

scp -r -P port username@ip:/path-to-folder  .

wyjaśnione za pomocą próbki,

scp -r -P 27000 abc@10.70.12.12:/tmp/hotel_dump .

gdzie,

port = 27000
username = "abc" , remote server username
path-to-folder = tmp/hotel_dump
. = current local directory

14
2017-07-06 07:21





Pytanie brzmiało, jak skopiować folder ze zdalnego do lokalnego przy pomocy scp dowództwo.

$ scp -r userRemote@remoteIp:/path/remoteDir /path/localDir

Ale tutaj jest lepszy sposób na zrobienie tego sftp - Protokół przesyłania plików SSH (również protokół bezpiecznego przesyłania plików lub SFTP) jest protokołem sieciowym, który zapewnia dostęp do plików, przesyłanie plików i zarządzanie plikami przez dowolny niezawodny strumień danych (wikipedia).

$ sftp user_remote@remote_ip

sftp> cd /path/to/remoteDir 

sftp> get -r remoteDir

Fetching /path/to/remoteDir to localDir 100% 398 0.4KB/s 00:00

Aby uzyskać pomoc dotyczącą sftp polecenie po prostu wpisz help lub ?.


8
2017-08-15 05:47





W przypadku, gdy napotkasz "Zbyt wiele błędów uwierzytelniania", podaj dokładny klucz SSH dodany do serwera serwerów ssh:

scp -r -i /path/to/local/key user@remote.tld:/path/to/folder /your/local/target/dir

8
2017-09-26 21:54





Nie wiem dlaczego, ale musiałem użyć lokalnego folderu przed dyrektywą serwera źródłowego. aby to działało

scp -r . root@888.888.888.888:/usr/share/nginx/www/example.org

3
2018-04-29 19:44



Zakładając, że użytkownik miał uprawnienia, mógłbyś zrobić absolutną ścieżkę bez użycia root@ - Jonathan