Prosty samouczek, który pomoże Ci przenieść pliki do zdalnego systemu z systemu Linux za pomocą polecenia scp.
SCP oznacza „bezpieczną kopię”. scp
to narzędzie wiersza poleceń oferowane przez Linuksa, które umożliwia przesyłanie plików i katalogów z jednego komputera na drugi przez niezabezpieczoną sieć.
Jeśli chcesz skopiować pliki z jednego systemu do drugiego, to scp
może być bardzo dobrą opcją do bezpiecznego transferu plików i katalogów. Gdy dwa komunikujące się urządzenia są połączone w tej samej sieci, użyj scp
staje się możliwe.
Możesz w dużym stopniu polegać na scp
polecenie poufności i integralności, ponieważ przesyłany plik i hasło używane do przesyłania są szyfrowane. Żadne poufne informacje nie zostaną ujawnione, nawet jeśli ktoś spróbuje podsłuchiwać ruch w trakcie przesyłania.
W tym samouczku zobaczymy różne przykłady scp
Komenda. Przyjrzymy się również niektórym często używanym opcjom za pomocą scp
Komenda.
Pierwsze kroki z poleceniem scp
Używając scp
polecenie umożliwia przesyłanie plików/katalogów:
- Z komputera lokalnego na komputer zdalny.
- Między dwiema zdalnymi maszynami.
- Z komputera zdalnego na komputer lokalny.
Ogólna składnia:
scp [Opcja] [nazwa_pliku_źródłowego] [użytkownik@host_docelowy]:folder_docelowy
Zrozummy po kolei podstawowe atrybuty tego polecenia.
- [nazwa_pliku_źródłowego] To jest plik źródłowy, który chcesz skopiować.
- [użytkownik@host_docelowy] Jest to nazwa użytkownika zdalnego systemu, do którego chcesz skopiować plik. Adres IP zdalnej maszyny jest również używany w tym atrybucie po „
@
„symbol. - [folder docelowy] To jest katalog, w którym chcesz zapisać skopiowany plik.
Notatka: Dwukropek (:
) symbol jest używany w składni, ponieważ rozróżnia lokalizacje lokalne i zdalne. Używamy dwukropka (:
) z systemem zdalnym, aby określić katalog, do którego pliki mają zostać skopiowane. Jeśli nie określimy katalogu docelowego, pliki zostaną skopiowane do katalogu domowego zdalnego użytkownika systemu.
Opcje używane z scp
Niektóre z najpopularniejszych opcji używanych z scp
polecenia są wymienione poniżej.
Opcja | Opis |
-C | zezwól na kompresję pliku do przesłania |
-v | daj szczegółowe wyjście |
-r | kopiuj pliki i katalogi rekurencyjnie |
-P | zachowaj uprawnienia, tryby i czasy dostępu do plików |
-P | zmienić domyślny port używany przez scp Komenda |
Zobaczymy przykłady tych opcji w dalszej części samouczka.
Kopiowanie pliku z lokalnego do zdalnego systemu
scp
umożliwia przesyłanie plików z systemu lokalnego do systemu zdalnego przy użyciu następującej składni. Pozwala to na przesyłanie lub przesyłanie plików na zdalnie umieszczony serwer.
Ogólna składnia:
scp [nazwa_pliku] użytkownik_zdalny@host:[folder_docelowy]
Przykład:
scp apache-tomcat-9.0.8.tar.gz [email protected]:gaurav
W tym przykładzie kopiujemy plik „apache-tomcat-9.0.8.tar.gz” z systemu lokalnego do systemu zdalnego, którego adres IP to „143.110.178.221”.
W systemie zdalnym plik zostanie skopiowany do katalogu o nazwie „gaurav”.
Wyjście:
gaurav@ubuntu:~$ scp apache-tomcat-9.0.8.tar.gz [email protected]:gaurav [email protected] hasło: apache-tomcat-9.0.8.tar.gz 100% 9589KB 79.8KB /s 02:00 gaurav@ubuntu:~$
Sprawdźmy dane wyjściowe w systemie zdalnym dla pliku.
root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav# ls apache-tomcat-9.0.8.tar.gz root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav#
W ten sposób plik jest pomyślnie kopiowany do zdalnego systemu za pomocą scp
Komenda.
Kopiowanie wielu plików do zdalnego systemu
W poprzednim przykładzie nauczyliśmy się przesyłać plik do zdalnego systemu za pomocą scp
Komenda. Zobaczymy teraz metodę przesyłania wielu plików z systemu lokalnego do systemu zdalnego za pomocą tego polecenia.
Ogólna składnia:
scp [plik 1] [plik 2] [plik n] zdalna nazwa_użytkownika@zdalny_host:[określony katalog]
Zrozummy ten prosty proces na przykładzie.
Przykład:
scp ath.html abc.txt ppa-purge_0.2.8+bzr56_all.deb [email protected]:gaurav
Tutaj w poleceniu do skopiowania do systemu zdalnego wymieniono wiele plików.
Wyjście:
gaurav@ubuntu:~$ scp ath.html abc.txt ppa-purge_0.2.8+bzr56_all.deb [email protected]:gaurav [email protected] hasło: ath.html 100% 199KB 94,7KB/s 00: 02 abc.txt 100% 0 0.0KB/s 00:00 ppa-purge_0.2.8+bzr56_all.deb 100% 4360 42.2KB/s 00:00 gaurav@ubuntu:~$
W systemie zdalnym:
root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav# ls -l total 9800 -rw-r--r-- 1 root root 0 5 października 08:58 abc.txt -rw-r-- r-- 1 root root 9818695 5 października 08:35 apache-tomcat-9.0.8.tar.gz -rw-r--r-- 1 root root 204057 5 października 08:58 ath.html -rw-r-- r-- 1 root root 4360 paź 5 08:58 ppa-purge_0.2.8+bzr56_all.deb root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav#
Wszystkie trzy pliki są teraz kopiowane do systemu zdalnego.
Kopiowanie katalogu do zdalnego systemu
Możesz użyć scp
polecenie, aby skopiować katalog z systemu lokalnego do systemu zdalnego. Proces jest podobny do kopiowania pliku. Aby skopiować również zawartość katalogu, możesz użyć -r
opcja z scp
Komenda.
ten -r
opcja służy do rekursywnego kopiowania katalogu. Oznacza to, że wszystkie podfoldery i pliki w katalogu również zostaną skopiowane.
Ogólna składnia:
scp -r [ścieżka do katalogu] nazwa_zdalnego_użytkownika@host_zdalny:[katalog_docelowy]
Przykład:
scp -r PycharmProjects [email protected]:gaurav
Wyjście:
gaurav@ubuntu:~$ scp -r PycharmProjects [email protected]:gaurav [email protected] hasło: __main__.py 100% 623 7.8KB/s 00:00 __init__.py 100% 23 0.4KB/s 00 :00 complete.py 100% 2929 28,1KB/s 00:00 search.py 100% 4728 38,7KB/s 00:00 uninstall.py 100% 2963 32,5KB/s 00:00 hash.py 100% 1681 21,3KB/ s 00:00 check.py 100% 1430 16,8KB/s 00:00 configuration.py 100% 7125 50,4KB/s 00:00 show.py 100% 6289 49,8KB/s 00:00 download.py 100% 6623 48,2 KB/s 00:00 gaurav@ubuntu:~$
Używając -r
opcja z scp
polecenie kopiuje wszystkie podfoldery i pliki w katalogu z komputera lokalnego do systemu zdalnego.
Wyświetlanie szczegółowych informacji o procesie scp
Możesz użyć -v
(małe litery v
), aby wyświetlić informacje o plikach, które są kopiowane na zdalnym lub lokalnym systemie. Ten typ danych wyjściowych jest również nazywany szczegółowymi danymi wyjściowymi.
Gdy ta opcja jest używana, pełne informacje debugowania dotyczące pliku są wyświetlane na ekranie.
Ogólna składnia:
scp -v [nazwa_pliku] nazwa_użytkownika@host_użytkownika:
Przykład:
scp -v apache-tomcat-9.0.8.tar.gz [email protected]:zespół
Wyjście:
gaurav@ubuntu:~$ scp -v apache-tomcat-9.0.8.tar.gz [email protected]:team Wykonywanie: program /usr/bin/ssh host 159.89.170.11, root użytkownika, polecenie scp -v -t team OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 grudnia 2017 debug1: Odczyt danych konfiguracyjnych /home/gaurav/.ssh/config debug1: Odczyt danych konfiguracyjnych /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config wiersz 19: Stosowanie opcji dla * debug1: Łączenie z portem 159.89.170.11 [159.89.170.11] 22. debug1: Ustanowiono połączenie. debug1: key_load_public: Brak takiego pliku lub katalogu debug1: plik tożsamości /home/gaurav/.ssh/id_rsa typ -1 apache-tomcat-9.0.8.tar.gz 100% 9589KB 99.8KB/s 01:36 debug1: client_input_channel_req: kanał 0 rtype exit-status odpowiedź 0 debug1: kanał 0: wolny: sesja-klienta, nchannels 1 debug1: fd 0 zerowanie O_NONBLOCK debug1: fd 1 zerowanie O_NONBLOCK Przesłane: wysłane 9826736, odebrane 4016 bajtów, w 97,2 sekundy Bajty na sekundę: wysłane 101133.9, odebrano 41,3 debug1: Status wyjścia 0 gaurav@ubuntu:~$
Tutaj, w danych wyjściowych, możesz zobaczyć, że informacje debugowania pliku są wyświetlane na twoim terminalu, gdy scp
polecenie jest używane z -v
opcja.
Przesyłanie plików między dwoma zdalnymi hostami
Linux umożliwia łączenie się z wieloma zdalnymi hostami. Możesz przesyłać pliki i katalogi między dwoma zdalnymi hostami za pomocą scp
Komenda.
Ogólna składnia:
scp remote_user_1@host_1:/[nazwa_pliku] remote_user_2@host_2:[folder_do_zapisania]
Składnia może wydawać się nieco szersza, ale jest dość prosta. Tutaj pierwsza część polecenia zawiera informacje o zdalnym użytkowniku, z którego plik ma zostać skopiowany. dwukropek (:) i /
służy do określenia nazwy pliku lub nazwy katalogu, który ma być przesyłany między dwoma zdalnymi maszynami.
Druga część zawiera informacje o docelowym systemie zdalnym, do którego plik ma zostać skopiowany.
Przykład:
scp -r [email protected]:gaurav [email protected]:/zespół
Tutaj będziemy rekurencyjnie kopiować katalog o nazwie „gaurav” z systemu lokalnego do systemu zdalnego. Plik zostanie skopiowany do folderu „zespół” w systemie zdalnym.
Wyjście:
gaurav@ubuntu:~$ scp -r [email protected]:/gaurav [email protected]:/team [email protected] hasło: 1.py 100% 134 261.3KB/s 00:00 variable.py 100% 377 949.2KB/s 00:00 abc.txt 100% 0 0,0KB/s 00:00 ath.html 100% 199KB 41,8MB/s 00:00 gaurav@ubuntu:~$
Tutaj użyliśmy scp
polecenie w systemie lokalnym, aby przenieść katalog o nazwie „gaurav” z jednego zdalnego serwera na drugi.
Przesyłaj pliki z systemu zdalnego do systemu lokalnego
Możesz łatwo przenieść pliki lub katalogi z systemu zdalnego do systemu lokalnego za pomocą scp
Komenda. Mówiąc prościej, możesz pobrać wiele plików lub katalogów ze zdalnego serwera na swój system lokalny za pomocą scp
Komenda.
Ogólna składnia:
scp zdalna_nazwa_użytkownika@host_użytkownika:/files/plik.txt /[folder_systemu_lokalnego]
Wyjście:
gaurav@ubuntu:~$ scp [email protected]:how.txt . hasło [email protected]: how.txt 100% 11 0.1KB/s 00:00 gaurav@ubuntu:~$
Tutaj pobrałem (skopiowałem) plik ze zdalnego serwera do mojego katalogu domowego. Dlatego użyłem kropki (.
), aby określić w poleceniu, aby skopiować plik do mojego katalogu domowego.
Przykładowe dane wyjściowe:
gaurav@ubuntu:~$ ls -l how.txt -rw-r--r-- 1 gaurav gaurav 11 paź 6 09:49 how.txt gaurav@ubuntu:~$
Tutaj plik jest teraz kopiowany do mojego katalogu domowego ze zdalnego serwera.
W ten sam sposób możesz pobrać wiele plików lub katalogów ze zdalnego serwera za pomocą scp
polecenie z odpowiednimi opcjami.
Kompresowanie plików w celu szybszego transferu
Czasami przesyłanie dużych plików może być czasochłonne. Ten problem można rozwiązać, korzystając z scp
polecenie z -C
(duże litery C
) opcja.
Używając -C
opcja kompresuje pliki o większym rozmiarze, co ułatwia szybszy transfer, a tym samym oszczędza czas.
Interesującym faktem dotyczącym tej opcji jest to, że plik jest kopiowany w oryginalnym rozmiarze w systemie docelowym, ale podczas procesu przesyłania rozmiar jest kompresowany, aby umożliwić szybszy transfer. Dlatego kompresja jest wykonywana tylko w sieci.
Ogólna składnia:
scp -C [nazwa_pliku] nazwa_użytkownika@host_użytkownika:[folder_docelowy]
Zobaczmy przykład porównawczy, aby zrozumieć różnicę.
Przelew bez opcji -C:
gaurav@ubuntu:~$ scp -rv dlink [email protected]:team Wykonywanie: program /usr/bin/ssh host 68.183.82.183, użytkownik root, polecenie scp -v -r -t zespół OpenSSH_7.6p1 Ubuntu-4ubuntu0. 3, OpenSSL 1.0.2n 7 grudnia 2017 debug1: Odczyt danych konfiguracyjnych /home/trinity/.ssh/config debug1: Odczyt danych konfiguracyjnych /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config wiersz 19: Stosowanie opcji * debug1 : Łączenie z portem 22. 68.183.82.183 [68.183.82.183]. debug1: Ustanowiono połączenie. debug1: client_input_channel_req: kanał 0 rtype exit-status reply 0 debug1: kanał 0: free: client-session, nchannels 1 debug1: fd 0 clearing O_NONBLOCK debug1: fd 1 clearing O_NONBLOCK Transferred: wysłano 7516504, odebrano 4008 bajtów, w ciągu 74,6 sekundy na sekundę: wysłano 100693.7, odebrano 53.7 debug1: Status wyjścia 0 gaurav@ubuntu:~$
Z powyższego wyniku widzimy, że czas potrzebny na transfer to 74,6 sekundy. Spróbujemy przesłać ten sam plik za pomocą opcji -C i zaobserwujemy różnicę.
Przelew z opcją -C:
gaurav@ubuntu:~$ scp -Crv dlink [email protected]:team Wykonywanie: program /usr/bin/ssh host 68.183.82.183, użytkownik root, polecenie scp -v -r -t zespół OpenSSH_7.6p1 Ubuntu-4ubuntu0. 3, OpenSSL 1.0.2n 7 grudnia 2017 debug1: Odczyt danych konfiguracyjnych /home/trinity/.ssh/config debug1: Odczyt danych konfiguracyjnych /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config wiersz 19: Stosowanie opcji * debug1 : Łączenie z portem 22. 68.183.82.183 [68.183.82.183]. debug1: Ustanowiono połączenie. . . webupload.img 100% 1834KB 98,7KB/s 00:18 Tryby wysyłania plików: C0664 1877552 router.img Sink: C0664 1877552 router.img router.img 100% 1834KB 100,3KB/s 00:18 Sink: E Tryby wysyłania plików: C0664 3754103 DSL-2750U-Release-IN-T-01.00.07.zip Zlew: C0664 3754103 DSL-2750U-Release-IN-T-01.00.07.zip DSL-2750U-Release-IN-T-01.00.07.zip 100% 3666KB 218,5KB/s 00:16 Sink: E debug1: client_input_channel_req: kanał 0 rtype exit-status reply 0 debug1: kanał 0: wolny: sesja-klienta, nchannels 1 debug1: fd 0 kasowanie O_NONBLOCK debug1: fd 1 kasowanie O_NONBLOCK Przeniesione: wysłano 7518864, odebrano 3828 bajtów, w ciągu 51,0 sekund Bajty na sekundę: wysłano 100245,4, odebrano 51,0 debug1: stan wyjścia 0 debug1: compress outgoing: surowe dane 7511925, skompresowane 7513136, factor 1,00 debug1: kompresować przychodzące: surowe dane 1467, skompresowane 999, współczynnik 0,68 gaurav@ubuntu:~$
Tutaj możemy łatwo zaobserwować, że używając -C
opcja z scp
Polecenie pozwoliło nam skompresować plik przez sieć, co okazało się opcją oszczędzającą czas.
Używanie innego portu ssh do przesyłania plików
Podczas korzystania z scp
poleceniem domyślnym wdrożonym portem jest port 22
. Użytkownik ma swobodę dostosowania tego wyboru portu. Możesz użyć -P
(wielkie litery P opcja) z scp
polecenie, aby użyć wybranego portu.
Ogólna składnia:
cp -P [nowy_numer_portu] [nazwa_pliku/nazwa_katalogu] użytkownik_zdalny@host:[folder_docelowy]
Przykład:
scp -P 4248 dlink [email protected]:zespół
Używając powyższego polecenia, plik zostanie przeniesiony na zdalny serwer. Ale tym razem używanym portem będzie port 4248
zamiast domyślnego port 22
.
Wniosek
Po przejściu tego samouczka poznaliśmy dynamiczną naturę scp
polecenie używane do przesyłania lub kopiowania plików z jednego systemu do drugiego. Ta opcja może być również używana do pobierania plików lub katalogów ze zdalnego serwera. Możemy więc stwierdzić, że scp
Polecenie okazuje się bardzo pomocne przy przesyłaniu plików, gdy musisz jednocześnie obsługiwać więcej niż jeden system, a także zdalne serwery.