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

SCP jest blisko spokrewniony z protokołem SSH i rzeczywiście narodził się z tego samego pomysłu.

SCP zapewnia, że ​​dane pozostają poufne i nienaruszone podczas przesyłania jako rozszerzenie protokołu SSH.

Najpierw zrozumiemy, jak działa ten SCP, a następnie zobaczymy polecenia scp.

Co to jest SCP?

SCP oznacza protokół bezpiecznego kopiowania.

Jest to bezpieczna i wydajna metoda kopiowania plików i katalogów między lokalnymi i zdalnymi hostami lub między dwoma zdalnymi hostami.

Jest szeroko stosowany do bezpiecznego przesyłania danych przez sieć. SCP polega na SSH (Secure Shell) w celu ustanowienia bezpiecznego połączenia i zaszyfrowania danych podczas przesyłania.

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

Jak działa SCP?

SCP jest zbudowany na protokole SSH – który jest kryptograficznym protokołem sieciowym do bezpiecznego zdalnego logowania i wykonywania poleceń. Wykorzystuje te same mechanizmy bezpieczeństwa co SSH, w tym szyfrowanie i uwierzytelnianie, aby chronić dane podczas transmisji.

Korzystając z SCP, użytkownik inicjuje polecenie kopiowania na komputerze lokalnym, które określa plik źródłowy i lokalizację docelową na komputerze zdalnym. SCP ustanawia połączenie SSH ze zdalnym systemem, a następnie bezpiecznie kopiuje pliki ze źródła do miejsca docelowego.

Kiedy używać SCP?

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

Zdalna kopia zapasowa serwera

SCP umożliwia tworzenie kopii zapasowych plików ze zdalnego serwera na maszynę lokalną lub odwrotnie, co zapewnia redundancję danych i odzyskiwanie po awarii.

Wdrażanie aplikacji

Upraszcza również ten proces, bezpiecznie kopiując niezbędne pliki do każdego systemu docelowego podczas wdrażania aplikacji na wielu serwerach,

Przesyłanie dużych plików

SCP oferuje godną zaufania i bezpieczną alternatywną metodę przesyłania danych w przypadku dużych plików, które mogą być zbyt duże, aby można je było wysłać jako załączniki do wiadomości e-mail.

Bezpieczne udostępnianie plików

SCP zapewnia, że ​​dane są szyfrowane podczas przesyłania podczas wysyłania poufnych plików do innych osób.

Współpraca zdalna

SCP może służyć do bezpiecznego udostępniania plików współpracownikom lub członkom zespołu w różnych lokalizacjach.

Składnia polecenia SCP

Zanim zaczniemy używać polecenia SCP, zacznijmy od zrozumienia podstawowej składni.

Składnia polecenia SCP wygląda następująco:

scp [options] [source] [destination]

Wyjaśnienie składni

Opcje

Są to opcjonalne flagi, które modyfikują zachowanie komendy SCP. Możesz użyć różnych opcji, aby dostosować proces przesyłania. Oto kilka typowych opcji:

-r: Rekurencyjnie kopiuje katalogi i ich zawartość.
-p: Zachowaj uprawnienia, znaczniki czasu i tryby oryginalnego pliku.
-P: Określa numer portu dla połączenia SSH.
-i: Określa plik klucza prywatnego do uwierzytelniania SSH.
-C: Użyj kompresji, aby przyspieszyć transfer danych.
-l: Ogranicz przepustowość używaną do transferu (w Kbit/s).
-v: Tryb pełny – wyświetla komunikaty debugowania podczas przesyłania.
-o: przekazuje opcję klientowi SSH. Można go użyć do wyłączenia ścisłego sprawdzania klucza hosta.

Źródło

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

Miejsce docelowe

Miejsce docelowe określa, gdzie chcesz skopiować źródło. Podobnie jak źródło, może to być również ścieżka lokalna lub ścieżka zdalna.

Przykłady poleceń

# 1. Skopiuj plik z lokalnego na zdalny serwer

scp /path/to/local/file.txt user@remotehost:/path/to/destination/

/path/to/local/file.txt: To jest plik źródłowy, który chcesz skopiować z komputera lokalnego.

user@remotehost: Zastąp użytkownika nazwą zdalnego użytkownika, a zdalnego hosta nazwą hosta lub adresem IP zdalnego serwera.

/ścieżka/do/miejsca docelowego/: To jest ścieżka docelowa na zdalnym serwerze, do którego zostanie skopiowany plik.

Przykład

W moim przypadku wybrałem jeden zdalny serwer do przesłania pliku.

Nazwa użytkownika hosta zdalnego – abhishekvarma

Adres zdalnego hosta – 192.168.29.70

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

Podczas łączenia się ze zdalną maszyną prosi o podanie hasła. Tutaj wybrałem plik zip do skopiowania.

Wyjście

Dane wyjściowe będą wyglądać tak, jeśli nie wystąpi błąd podczas łączenia się ze zdalnym serwerem.

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

#2. Skopiuj plik ze zdalnego na lokalny komputer

scp user@remotehost:/path/to/remote/file.txt /path/to/local/destination/

Tak samo jak powyżej, zastąp adres użytkownika i hosta zdalnego.

Przykład

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

Wyjście

To tylko przykładowe wyjście w moim przypadku. Znacznik czasu różni się w zależności od szybkości połączenia.

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

#3. Skopiuj katalog rekurencyjnie

scp user@remotehost:/path/to/remote/file.txt /path/to/local/destination/

Tutaj flaga ’-r’ mówi SCP, aby rekurencyjnie kopiował katalogi (w tym podkatalogi i ich zawartość).

Przykład

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

Tutaj wspomniałem o całym katalogu do skopiowania plików.

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 /path/to/local/*.txt user@remotehost:/path/to/destination/

*.txt — jest to wzorzec wieloznaczny, który pasuje do wszystkich plików z rozszerzeniem .txt w określonym katalogu lokalnym. Ścieżki źródłowe i docelowe są takie same jak poprzednio.

Przykład

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

Wyjście

Tutaj próbowałem z rozszerzeniem .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 /path/to/local/file.txt user@remotehost:/path/to/destination/

Tutaj flaga ’-p’ zachowuje czasy modyfikacji, czasy 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 /path/to/local/file.txt user@remotehost:/path/to/destination/

Flaga „-P” określa inny port SSH (w tym przypadku 22) dla połączenia SCP. Możesz użyć dowolnego 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 /path/to/local/file.txt user@remotehost:/path/to/destination/

Ta flaga „-C” umożliwia kompresję podczas przesyłania, 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. Pełne dane wyjściowe do debugowania

scp -v /path/to/local/file.txt user@remotehost:/path/to/destination/

Ta opcja „-v” aktywuje pełne dane wyjściowe, które dostarczają bardziej szczegółowych informacji podczas 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 user@remotehost:/path/to/remote/file.txt /path/to/local/destination/

Te same wyjaśnienia, co w poprzednim szczegółowym przykładzie, z odwróconymi rolami lokalizacji lokalnych i zdalnych.

Przykład

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

Wyjście

Dane wyjściowe będą wyglądać tak.

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 /path/to/private_key.pem /path/to/local/file.txt user@remotehost:/path/to/destination/

Ta flaga „-i /path/to/private_key.pem” określa inny klucz prywatny SSH do uwierzytelniania.

Przykład

scp -i /path/to/private_key.pem /home/vboxuser/Desktop/sample.zip [email protected]:/Users/abhishekvarma/Desktop

Wyjście

Jeśli masz klucz prywatny, możesz go użyć lub możesz użyć klucza domyślnego.

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

#11. Skopiuj wiele plików na serwer zdalny

scp file1.txt file2.txt user@remotehost:/path/to/destination/

To polecenie kopiuje plik1.txt i plik2.txt z katalogu lokalnego do określonego miejsca docelowego 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 o innej nazwie

scp user@remotehost:/path/to/remote/file.txt /path/to/local/newfilename.txt

To polecenie kopiuje plik.txt ze zdalnego serwera 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 /path/to/local/file.txt user@remotehost:/path/to/destination/

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

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
scp -rp /path/to/local/source/ user@remotehost:/path/to/destination/

Flaga ’-p’ zachowuje atrybuty plików, a flaga -r rekurencyjnie kopiuje katalogi. To polecenie zachowuje również dowiązania symboliczne podczas kopiowania.

Przykład

scp -rp /home/vboxuser/Desktop/image.png [email protected]:/Users/abhishekvarma/Desktop

Wyjście

image.png                                        100%   39KB    1.8MB/s   00:00

#15. Pełne kopiowanie plików z kompresją

scp -vC /path/to/local/file.txt user@remotehost:/path/to/destination/

To polecenie łączy zarówno pełne dane wyjściowe (-v), jak i kompresję (-C) podczas przesyłania plików.

Przykład

scp -vC /home/vboxuser/Desktop/image.png [email protected]:/Users/abhishekvarma/Desktop

Wyjście

Dane wyjściowe będą wyglądać tak.

scp: debug1: fd 3 clearing O_NONBLOCK
Sending file modes: C0664 40050 image.png
Sink: C0664 40050 image.png
image.png
d 6 clearing O_NONBLOCK
scp: debug1: fd • clearing O_NONBLOCK
image.png
debug1: client_input_channel_req: channel ✪ type exit-status reply debug1: channel 0: free: client-session, channels 1
Transferred: sent 40220, received 2576 bytes, in 0.1 seconds
Bytes per second: sent 352570.0, received 22581.3
root@ubuntu: ~
debug1: Exit status 0
debug1: compress outgoing: raw data 40287, compressed 38198, factor 0.95 debug1: compress incoming: raw data 792, compressed 757, factor 0.96 

#16. Kopiowanie między dwoma zdalnymi serwerami

Jeśli chcesz przenieść pliki z jednego zdalnego serwera na inny, możesz użyć tego polecenia.

scp user1@remotehost1:/path/to/remote/file.txt user2@remotehost2:/path/to/destination/

To polecenie bezpośrednio przesyła plik.txt z hosta zdalnego1 do hosta zdalnego2.

Przykład

scp user1@remotehost1:/path/to/remote/file.txt [email protected]:/Users/abhishekvarma/Desktop

Wyjście

file.txt                100%  512KB 512.0KB/s   00:00

Jeśli podczas przesyłania wystąpią jakiekolwiek błędy lub problemy – na wyjściu mogą zostać wyświetlone komunikaty o błędach, które dostarczają informacji o tym, co poszło nie tak.

ssh: connect to host source.example.com port 22: Connection refused
lost connection

W takim przypadku komunikat o błędzie sugeruje, że połączenie SSH z serwerem źródłowym zostało odrzucone. Może to wynikać z różnych przyczyn, takich jak nieprawidłowa nazwa hosta, adres IP, port lub problemy z konfiguracją SSH.

Często zadawane pytania dotyczące SCP

Oto kilka często zadawanych pytań związanych z protokołem SCP wraz z odpowiedziami.

Czym SCP różni się od FTP lub SFTP?

FTP oznacza protokół przesyłania plików.

SFTP oznacza protokół przesyłania plików. Oba są używane do przesyłania plików.

SCP działa przez SSH i oferuje zarówno szyfrowanie, jak i uwierzytelnianie w jednym protokole, co czyni go bezpieczniejszym i wydajniejszym.

Kiedy powinienem używać SCP?

SCP najlepiej nadaje się do scenariuszy, w których wymagany jest bezpieczny i niezawodny transfer plików, takich jak zdalne kopie zapasowe, wdrażanie oprogramowania, dystrybucja plików konfiguracyjnych i współpraca między członkami zespołu.

Czy protokół SCP jest zgodny z adresami IPv6?

Tak, SCP obsługuje zarówno adresy IPv4, jak i IPv6, co umożliwia przesyłanie plików przez sieci korzystające z dowolnego schematu adresowania.

Wniosek✍️

Mam nadzieję, że ten artykuł okazał się pomocny w poznawaniu SCP i jego działania.

Możesz być także zainteresowany poznaniem poleceń systemu Linux dla administratora systemu