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
Argument | Znaczenie |
-1 | Wymuszenie użycia pierwszej wersji protokołu. |
-2 | Wymuszenie użycia drugiej wersji protokołu. |
-4 | Wymuszenie użycia tylko adresów IPv4. |
-6 | Wymuszenie użycia tylko adresów IPv6. |
-B | Tryb wsadowy. |
-C | Włącza kompresję, przekazanie flagi -C do programu ssh |
-p | Zachowanie atrybutów pliku, takich jak czasy modyfikacji oraz dostępu, prawa. |
-q | Wyłączenie wyświetlania pasku postępu. |
-r | Kopiuje całe katalogi (rekurencyjnie). |
-v | Tryb wyświetlania informacji (debug), pomocne przy sprawdzaniu problemów z połączeniem. |
-c szyfr | Wybranie rodzaju szyfru używanego do kodowania danych. |
-F plik_konfiguracyjny_ssh | Określenie innego niż domyślny pliku konfiguracyjnego ssh. |
-i plik_tożsamości | Podanie pliku, który zawiera klucz prywatny dla uwierzytelnienia RSA |
-l limit | Limit transferu danych w Kb/s. |
-o opcje ssh | Opcja używana do przekazywania parametrów do ssh, opcje muszą być podane w formacie opisanym w ssh_config(5). |
-P port | Port, do którego klient ma się podłączyć. |
-S program | Przekazanie nazwy programu do tworzenia zakodowanego połączenia. |
-help | Pokazuje wszystkie opcje komendy |