16 typowych poleceń SCP z przykładami kopiowania plików i folderów

Protokół SCP, blisko spokrewniony z SSH, wywodzi się z podobnej koncepcji.

SCP, jako rozszerzenie SSH, gwarantuje poufność i integralność danych podczas ich przesyłania.

Zanim przejdziemy do poleceń SCP, najpierw zrozumiemy jego działanie.

Czym jest SCP?

SCP, czyli Secure Copy Protocol, to protokół bezpiecznego kopiowania.

Jest to bezpieczna i efektywna metoda transferu plików oraz katalogów pomiędzy komputerami lokalnymi i zdalnymi, jak również pomiędzy dwoma zdalnymi systemami.

Jest powszechnie stosowany do bezpiecznego przesyłania danych w sieci. SCP wykorzystuje SSH (Secure Shell) do ustanowienia chronionego połączenia i szyfrowania danych podczas ich transferu.

Niezależnie od tego, czy chcesz przenieść pojedynczy plik, czy cały zbiór katalogów, SCP stanowi niezawodne rozwiązanie do zdalnego przesyłania plików.

Jak działa SCP?

SCP bazuje na protokole SSH, który jest kryptograficznym protokołem sieciowym umożliwiającym bezpieczne zdalne logowanie i wykonywanie poleceń. Wykorzystuje on mechanizmy bezpieczeństwa SSH, takie jak szyfrowanie i uwierzytelnianie, w celu ochrony danych w trakcie transmisji.

Używając SCP, użytkownik inicjuje polecenie kopiowania na swoim komputerze, określając plik źródłowy oraz lokalizację docelową na maszynie zdalnej. SCP nawiązuje połączenie SSH ze zdalnym systemem, a następnie bezpiecznie kopiuje pliki ze źródła do celu.

Kiedy używać SCP?

SCP jest szczególnie przydatny w następujących przypadkach.

Zdalne kopie zapasowe serwera

SCP umożliwia wykonywanie kopii zapasowych plików z serwera zdalnego na komputer lokalny lub odwrotnie, co zapewnia redundancję danych i odzyskiwanie po awarii.

Wdrażanie aplikacji

Upraszcza również proces wdrażania aplikacji, bezpiecznie kopiując niezbędne pliki do systemów docelowych.

Przesyłanie dużych plików

SCP to niezawodny i bezpieczny sposób przesyłania obszernych plików, które mogą być za duże, aby wysłać je jako załączniki do wiadomości e-mail.

Bezpieczne udostępnianie plików

Dzięki szyfrowaniu podczas przesyłania, SCP zapewnia bezpieczeństwo podczas wysyłania poufnych danych do innych osób.

Współpraca zdalna

SCP umożliwia bezpieczne udostępnianie plików współpracownikom lub członkom zespołu pracującym w różnych lokalizacjach.

Składnia polecenia SCP

Zanim zaczniesz używać polecenia SCP, poznajmy jego podstawową składnię.

Składnia polecenia SCP prezentuje się następująco:

scp [opcje] [źródło] [cel]

Wyjaśnienie składni:

Opcje

Opcje to opcjonalne flagi, które modyfikują działanie polecenia SCP. Możesz korzystać z różnorodnych opcji, aby dostosować proces przesyłania. Poniżej znajdziesz kilka najczęściej spotykanych opcji:

-r: Kopiuje katalogi wraz z ich zawartością rekurencyjnie.
-p: Zachowuje uprawnienia, daty i tryby oryginalnego pliku.
-P: Określa numer portu dla połączenia SSH.
-i: Wskazuje plik klucza prywatnego do uwierzytelniania SSH.
-C: Włącza kompresję w celu przyspieszenia transferu danych.
-l: Ogranicza przepustowość transferu (w Kbit/s).
-v: Tryb szczegółowy – wyświetla komunikaty debugowania podczas przesyłania.
-o: Przekazuje opcję do klienta SSH. Można jej użyć do wyłączenia ścisłego sprawdzania klucza hosta.

Źródło

Źródło to plik lub katalog, który chcesz skopiować. Może to być ścieżka lokalna lub zdalna, w zależności od kontekstu.

Cel

Cel to miejsce, do którego chcesz skopiować źródło. Podobnie jak źródło, może to być ścieżka lokalna lub zdalna.

Przykłady poleceń

#1. Skopiuj plik z komputera lokalnego na serwer zdalny

scp /ścieżka/do/lokalnego/pliku.txt użytkownik@zdalnyhost:/ścieżka/do/celu/

/ścieżka/do/lokalnego/pliku.txt: to plik źródłowy, który chcesz skopiować z Twojego komputera.

użytkownik@zdalnyhost: Zastąp „użytkownik” nazwą zdalnego użytkownika, a „zdalnyhost” nazwą hosta lub adresem IP zdalnego serwera.

/ścieżka/do/celu/: to ścieżka docelowa na serwerze zdalnym, do której zostanie skopiowany plik.

Przykład:

W moim przypadku wybrałem serwer zdalny, aby tam przesłać plik.

Nazwa użytkownika na zdalnym hoście: abhishekvarma

Adres zdalnego hosta: 192.168.29.70

scp /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop

Podczas łączenia z maszyną zdalną system poprosi o hasło. W tym przypadku do skopiowania wybrałem plik zip.

Wyjście:

Tak będzie wyglądać wynik, jeśli nie wystąpi błąd podczas łączenia z serwerem zdalnym.

sample.zip 100% 20KB 717.9KB/s 00:00

#2. Skopiuj plik z serwera zdalnego na komputer lokalny

scp użytkownik@zdalnyhost:/ścieżka/do/zdalnego/pliku.txt /ścieżka/do/lokalnego/celu/

Podobnie jak wcześniej, zastąp adres użytkownika i hosta zdalnego.

Przykład:

scp [email protected]:/Users/abhishekvarma/Desktop/sample.zip /home/vboxuser/Desktop

Wyjście:

To jest tylko przykładowy wynik w moim przypadku. Czas transferu może się różnić w zależności od szybkości połączenia.

sample.zip 100% 20KB 51.2KB/s 00:00

#3. Skopiuj katalog rekurencyjnie

scp użytkownik@zdalnyhost:/ścieżka/do/zdalnego/pliku.txt /ścieżka/do/lokalnego/celu/

Flaga ’-r’ informuje SCP, aby rekurencyjnie kopiował katalogi (wraz z podkatalogami i ich zawartością).

Przykład:

scp -r /home/vboxuser/Desktop [email protected]:/Users/abhishekvarma/Desktop

Tutaj określiłem, że ma zostać skopiowany cały katalog wraz z jego zawartością.

Wyjście:

sample.zip 100% 20KB 1.0MB/s 00:00
Screenshot from 2023-08-13 21-45-23.png 100% 27KB 1.5MB/s 00:00
.swp 100% 12KB 894.2KB/s 00:00
.help.swp 100% 12KB 780.4KB/s 00:00

#4. Skopiuj pliki pasujące do wzorca

scp /ścieżka/do/lokalnego/*.txt użytkownik@zdalnyhost:/ścieżka/do/celu/

*.txt – to symbol wieloznaczny, który pasuje do wszystkich plików z rozszerzeniem .txt w danym katalogu lokalnym. Ścieżki źródłowa i docelowa są takie same, jak wcześniej.

Przykład:

scp /home/vboxuser/Desktop/locfolder/*.png [email protected]:/Users/abhishekvarma/Desktop

Wyjście:

Próbowałem tutaj użyć rozszerzenia .png.

Screenshot from 2023-08-13 21-45-23.png 100% 27KB 1.4MB/s 00:00
Screenshot from 2023-08-13 21-55-28.png 100% 24KB 1.7MB/s 00:00
Screenshot from 2023-08-13 22-04-03.png 100% 38KB 2.1MB/s 00:00

#5. Zachowaj atrybuty plików

scp -p /ścieżka/do/lokalnego/pliku.txt użytkownik@zdalnyhost:/ścieżka/do/celu/

Flaga ’-p’ zachowuje czasy modyfikacji, dostępu i tryby pliku źródłowego podczas kopiowania.

Przykład:

scp -p /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop

Wyjście:

sample.zip 100% 20KB 420.0KB/s 00:00

#6. Określ inny port SSH

scp -P 22 /ścieżka/do/lokalnego/pliku.txt użytkownik@zdalnyhost:/ścieżka/do/celu/

Flaga ’-P’ określa inny port SSH (w tym przypadku 22) dla połączenia SCP. Możesz użyć dowolnego innego portu.

Przykład:

scp -P 22 /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop

Wyjście:

sample.zip 100% 20KB 1.2MB/s 00:00

#7. Kopiuj z kompresją

scp -C /ścieżka/do/lokalnego/pliku.txt użytkownik@zdalnyhost:/ścieżka/do/celu/

Flaga ’-C’ włącza kompresję podczas transferu, potencjalnie zmniejszając rozmiar przesyłanych danych. Adres źródłowy i docelowy są takie same, jak wyjaśniono wcześniej.

Przykład:

scp -C /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop

Wyjście:

sample.zip 100% 20KB 985.8KB/s 00:00

#8. Szczegółowe dane wyjściowe do debugowania

scp -v /ścieżka/do/lokalnego/pliku.txt użytkownik@zdalnyhost:/ścieżka/do/celu/

Opcja ’-v’ aktywuje szczegółowe dane wyjściowe, dostarczając więcej informacji w trakcie procesu przesyłania.

Przykład:

scp -v /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop

Wyjście:

Przykładowe dane wyjściowe będą wyglądać następująco:

Executing: program /usr/bin/ssh host 192.168.29.70, user abhishekvarma, command scp -v -t /Users/abhishekvarma/Desktop OpenSSH_8.9p1 Ubuntu-3ubuntu0.3, OpenSSL 3.0.2 15 Mar 2022
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files
debug1: /etc/ssh/ssh_config line 21: Applying options for *
debug1: Connecting to 192.168.29.70 [192.168.29.70] port 22. debug1: Connection established.
debug1: identity file /root/.ssh/id_rsa type -1
debug1: identity file /root/.ssh/id_rsa-cert type -1 debug1: identity file /root/.ssh/id_ecdsa type -1 debug1: identity file /root/.ssh/id_ecdsa-cert type -1 debug1: identity file /root/.ssh/id_ecdsa_sk type -1 debug1: identity file /root/.ssh/id_ecdsa_sk-cert type -1

#9. Kopiuj ze zdalnego do lokalnego z pełnymi danymi wyjściowymi

scp -v użytkownik@zdalnyhost:/ścieżka/do/zdalnego/pliku.txt /ścieżka/do/lokalnego/celu/

Te same objaśnienia, co w poprzednim przykładzie, ale z zamienionymi rolami lokalizacji lokalnej i zdalnej.

Przykład:

scp -v [email protected]:/Users/abhishekvarma/Desktop/sample.zip /home/vboxuser/Desktop

Wyjście:

Dane wyjściowe będą wyglądać następująco:

Executing: program /usr/bin/ssh host 192.168.29.70, user abhishekvarma, command scp -v -f /Users/abhishekvarma/Desktop/sample.zip OpenSSH_8.9p1 Ubuntu-3ubuntu0.3, OpenSSL 3.0.2 15 Mar 2022
debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 21: Applying options for *
debug1: Connecting to 192.168.29.70 [192.168.29.70] port 22. debug1: Connection established.
debug1: identity file /root/.ssh/id_rsa type -1
debug1: identity file /root/.ssh/id_rsa-cert type -1 debug1: identity file /root/.ssh/id_ecdsa type -1 debug1: identity file /root/.ssh/id_ecdsa-cert type -1 debug1: identity file /root/.ssh/id_ecdsa_sk type -1 debug1: identity file /root/.ssh/id_ecdsa_sk-cert type -1

#10. Skopiuj przy użyciu innego klucza SSH

scp -i /ścieżka/do/klucza_prywatnego.pem /ścieżka/do/lokalnego/pliku.txt użytkownik@zdalnyhost:/ścieżka/do/celu/

Flaga ’-i /ścieżka/do/klucza_prywatnego.pem’ wskazuje na użycie innego klucza prywatnego SSH do uwierzytelnienia.

Przykład:

scp -i /ścieżka/do/klucza_prywatnego.pem /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop

Wyjście:

Jeśli posiadasz klucz prywatny, możesz go użyć, w przeciwnym razie system użyje klucza domyślnego.

sample.zip 100% 20KB 1.1MB/s 00:00

#11. Skopiuj wiele plików na serwer zdalny

scp plik1.txt plik2.txt użytkownik@zdalnyhost:/ścieżka/do/celu/

To polecenie kopiuje plik1.txt i plik2.txt z lokalnego katalogu do określonej lokalizacji na serwerze zdalnym.

Przykład:

scp /home/vboxuser/Desktop/image.png /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop

Wyjście:

image.png 100% 39KB 1.4MB/s 00:00
sample.zip 100% 20KB 1.5MB/s 00:00

#12. Skopiuj plik zdalny z inną nazwą

scp użytkownik@zdalnyhost:/ścieżka/do/zdalnego/pliku.txt /ścieżka/do/lokalnego/nowanazwa.txt

To polecenie kopiuje plik.txt z serwera zdalnego do katalogu lokalnego, zmieniając jego nazwę na nowanazwapliku.txt.

Przykład:

scp [email protected]:/Users/abhishekvarma/Desktop/sample.zip /home/vboxuser/Desktop/newfile.zip

Wyjście:

Stare i nowe rozszerzenia plików powinny być takie same podczas wykonywania tego polecenia.

sample.zip 100% 20KB 28.7KB/s 00:00

#13. Kopiowanie z określonym limitem przepustowości

scp -l 1000 /ścieżka/do/lokalnego/pliku.txt użytkownik@zdalnyhost:/ścieżka/do/celu/

Flaga ’-l’ określa limit przepustowości transferu w Kb/s (w tym przypadku 1000 Kb/s).

Przykład:

scp -l 300 /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop

Wyjście:

sample.zip 100% 20KB 31.3KB/s 00:00

#14. Kopiowanie plików i zachowywanie dowiązań symbolicznych

scp -rp /ścieżka/do/lokalnego/źródła/ użytkownik