scp (secure copy) to narzędzie z pakietu OpenSSH do kopiowania plików między komputerami po szyfrowanym kanale SSH. Działa jak zwykłe cp, tylko że jedna ze stron (albo obie) siedzi na innej maszynie i dogadujesz się z nią przez sieć. Sięgasz po niego, gdy chcesz wrzucić plik na serwer, ściągnąć logi z produkcji albo przerzucić katalog z jednego hosta na drugi — bez FTP, bez montowania dysków, na tym samym porcie 22 co SSH i z tymi samymi kluczami. Dobrze wiedzieć, że od OpenSSH 9.0 scp pod spodem korzysta z protokołu SFTP, więc zachowanie odrobinę różni się od starych poradników, ale sama składnia została ta sama.
Składnia i najważniejsze opcje
Podstawowy schemat: scp [OPCJE] źródło cel, gdzie zdalną lokalizację zapisujesz jako użytkownik@host:/ścieżka.
-r— kopiuje katalogi rekurencyjnie (bez tegoscpodmówi ruszenia folderu).-P port— port zdalnego hosta. Wielka litera, bo małe-pjest już zajęte.-p— zachowuje czasy modyfikacji, dostępu i uprawnienia pliku.-i klucz— wskazuje plik z kluczem prywatnym do uwierzytelnienia.-C— włącza kompresję w locie (przydatne przy wolnym łączu i plikach tekstowych).-l limit— ogranicza pasmo, podane w Kbit/s (nie kB/s — łatwo się naciąć).-3— przy kopiowaniu między dwoma zdalnymi hostami przepuszcza ruch przez Twoją maszynę.-v— tryb gadatliwy, ratunek gdy połączenie nie chce zadziałać.
Przykłady użycia
scp raport.pdf user@serwer:/home/user/— wysyła lokalny plik do katalogu domowego na serwerze.scp user@serwer:/var/log/nginx/error.log .— pobiera log ze zdalnego hosta do bieżącego katalogu (kropka na końcu).scp -r ./projekt user@serwer:/var/www/— kopiuje cały katalogprojektwraz z zawartością.scp -P 2222 -i ~/.ssh/id_ed25519 backup.tar.gz user@serwer:/backup/— łączy się na niestandardowym porcie z konkretnym kluczem.scp -3 user1@hostA:/dane.csv user2@hostB:/import/— przerzuca plik prosto z jednego serwera na drugi przez Twój komputer.
Częste błędy i pułapki
Najpopularniejszy klasyk to mylenie -P z -p — na serwerze z nietypowym portem SSH dostaniesz Connection refused, bo wielkość litery ma tu znaczenie. Druga pułapka: zapomniany dwukropek. scp plik user@host /katalog (spacja zamiast host:/katalog) potraktuje ostatni argument jako lokalną ścieżkę i po prostu skopiuje pliki lokalnie, zamiast wysłać je na serwer. Pamiętaj też, że bez -r katalogów nie ruszysz, a spacje i znaki specjalne w zdalnych ścieżkach trzeba cudzysłować, bo interpretuje je powłoka po obu stronach. Uważaj na nadpisywanie — scp nie pyta o potwierdzenie i cicho zastąpi istniejący plik po drugiej stronie. Przy dużych transferach jest wolniejszy od rsync i nie wznawia przerwanego kopiowania — zaczyna od zera.
Powiązane komendy: rsync (szybszy, wznawialny transfer), sftp (interaktywne przesyłanie po SSH), ssh (samo połączenie), cp (lokalne kopiowanie) oraz ssh-copy-id do wgrywania kluczy.