kopiowanie plików przez ssh

Kopiowanie plików przez SSH

SCP

Komenda scp umożliwia kopiowanie plików z wykorzystaniem połączenia SSH. Jest bardzo przydatna kiedy potrzebujemy przetransportować plik pomiędzy dwoma serwerami lub komputerami. Komendę możemy wykorzystać na trzy sposoby: do kopiowania plików z serwera na nasz komputer, do kopiowania plików z komputera na serwer oraz do kopiowania plików pomiędzy dwoma serwerami.

Kopiowanie plików z komputera na serwer

scp ścieżka_do_pliku nazwa_użytkownika@adres_serwera:/docelowa_lokalizacja_pliku

Jako pierwszy parametr komendy scp podajemy ścieżkę do pliku, który chcemy skopiować (jeśli znajdujemy się w tym samym folderze wystarczy sama nazwa). Jako drugi argument podajemy nazwę użytkownika na którego chcemy się zalogować, adres serwera oraz docelową lokalizację do której chcemy skopiować nasz plik. Przykładowa komenda wygląda następująco:

scp test.txt test@1024bits.pl:/home/test/folder

Powyższa komenda skopiuje plik test.txt, który znajduje się w naszej aktualnej lokalizacji na serwer 1024bits.pl z wykorzystaniem użytkownika test do folderu /home/test/folder.

Kopiowanie plików z serwera na komputer

Aby skopiować plik z serwera na komputer musimy wykonać dokładnie taką samą komendę jak wcześniej, lecz ze zmienioną kolejnością parametrów:

scp nazwa_użytkownika@adres_serwera:/lokalizacja_pliku docelowa_lokalizacja_pliku

Jako pierwszy parametr podajemy nazwę użytkownika, adres serwera oraz lokalizacje naszego pliku, natomiast jako drugi parametr podajemy lokalizację na naszym komputerze do której chcemy skopiować nasz plik. Jeśli chcesz skopiować plik do miejsca w którym aktualnie się znajdujesz wystarczy jako drugi parametr podać .. Przykładowa komenda wygląda następująco:

scp test@1024bits.pl:/home/test/folder/test.txt .

Powyższa komenda przy użyciu użytkownika test skopiuje plik test.txt, który znajduje się na serwerze 1024bits.pl w folderze /home/test/folder na nasz komputer do . czyli naszej aktualnej lokalizacji.

Kopiowanie plików pomiędzy dwoma serwerami

Aby skopiować plik z jednego serwera na drugi musimy wykonać poniższą komendę:

scp nazwa_użytkownika1@adres_serwera1:/lokalizacja_pliku nazwa_użytkownika2@adres_serwera2:/docelowa_lokalizacja_pliku

Jako pierwszy parametr podajemy nazwę użytkownika, adres serwera oraz lokalizację pliku, który chcemy skopiować. Natomiast jako drugi parametr podajemy nazwę użytkownika, adres serwera oraz docelową lokalizacje do której ma być skopiowany nasz plik. Przykładowa komenda może wyglądać następująco:

scp test@1024bits.pl:/home/test/folder/test.txt test2@2048bits.pl:/home/test/folder/

Powyższa komenda przy użyciu użytkownika test skopiuje plik test.txt, który znajduje się w folderze /home/test/folder na serwerze 1024bits.pl do folderu /home/test/folder na serwerze 2048bits.pl z wykorzystaniem użytkownika test2.

Należy pamiętać, że aby transfer pliku pomiędzy serwerami był możliwy, serwery muszą być w stanie wzajemnie się komunikować. Jeśli np. jeden z serwerów znajduje się w zamkniętej sieci do której drugi serwer nie ma dostępu to skopiowanie pliku będzie niemożliwe.

Tips & Tricks

Kopiowanie wszystkich plików w folderze

Aby skopiować wszystkie pliki w danym folderze należy użyć * po nazwie folderu.

scp nazwa_użytkownika@adres_serwera:/folder/* docelowa_lokalizacja_plików

Kopiowanie kilku plików jednocześnie

Aby skopiować kilka plików jednocześnie należy podać ich nazwy oddzielając je spacją.

scp test.txt test2.txt test@1024bits.pl:/home/test/folder

Kopiowanie całego folderu

Aby skopiować folder należy do komendy dodać flagę -r

scp -r nazwa_użytkownika@adres_serwera:/folder/ docelowa_lokalizacja_folderu

Ograniczenie przepustowości

Jeśli nie chcemy przeznaczać całej przepustowości na przesył pliku możemy to zrobić z wykorzystaniem argumentu -l

scp -l limit_w_Kb/s nazwa_użytkownika@adres_serwera:/folder/ docelowa_lokalizacja_folderu

Przyspieszanie szybkości transferu

Możemy przyspieszyć szybkość transferu używając opcji -C, która automatycznie włączy kompresje u źródła i dekompresje u hosta docelowego.

scp -C nazwa_użytkownika@adres_serwera:/folder/ docelowa_lokalizacja_folderu

Opcje polecenia scp

ArgumentZnaczenie
-1Wymuszenie użycia pierwszej wersji protokołu.
-2Wymuszenie użycia drugiej wersji protokołu.
-4Wymuszenie użycia tylko adresów IPv4.
-6Wymuszenie użycia tylko adresów IPv6.
-BTryb wsadowy.
-CWłącza kompresję, przekazanie flagi -C do programu ssh
-pZachowanie atrybutów pliku, takich jak czasy modyfikacji oraz dostępu, prawa.
-qWyłączenie wyświetlania pasku postępu.
-rKopiuje całe katalogi (rekurencyjnie).
-vTryb wyświetlania informacji (debug), pomocne przy sprawdzaniu problemów z połączeniem.
-c szyfrWybranie rodzaju szyfru używanego do kodowania danych.
-F plik_konfiguracyjny_ssh Określenie innego niż domyślny pliku konfiguracyjnego ssh.
-i plik_tożsamościPodanie pliku, który zawiera klucz prywatny dla uwierzytelnienia RSA
-l limitLimit transferu danych w Kb/s.
-o opcje sshOpcja używana do przekazywania parametrów do ssh, opcje muszą być podane w formacie opisanym w ssh_config(5).
-P portPort, do którego klient ma się podłączyć.
-S programPrzekazanie nazwy programu do tworzenia zakodowanego połączenia.
-helpPokazuje wszystkie opcje komendy