Jak przesyłać i synchronizować pliki za pomocą SCP/RSYNC?
SCP i RSYNC to usługi używane odpowiednio do kopiowania lub synchronizowania plików między oddzielnymi lokalizacjami.
Polecenie SCP (bezpieczne kopiowanie) jest oparte na ssh i działa poprzez odczytanie pliku źródłowego i skopiowanie go do wybranego miejsca docelowego - lokalnie lub przez sieć.
Polecenie RSYNC może być również używane do kopiowania plików lokalnie lub przez sieć jak scp powyżej, ale dodatkowo to polecenie synchronizuje dane. Nie kopiuje i nie wkleja całego katalogu, ale jest w stanie wykryć zmiany i replikować je do miejsca docelowego.
SCP
Ogólna składnia używana dla scp:
scp [options] [source] [destination]
Podstawowy przykład będzie wyglądał mniej więcej tak:
scp home/test/file1 [email protected]:/home/eouser/
Objaśnienie:
home/test/file1 jest plikiem źródłowym
eouser jest nazwą użytkownika serwera
185.178.13.12 to adres IP zdalnego serwera
home/eouser/ to katalog docelowy
Dane wyjściowe:
file1 100% 230 43.6KB/s 00:00
Opcje:
-r służy głównie do kopiowania folderów i jest używanyna o rekurencyjnego kopiowania całych katalogów.
-P określa port, z którym należy się połączyć na zdalnym hoście.
-c wybiera szyfr używany do szyfrowania przesyłanych danych.
-C włącza kompresję
-i identity_file Ta opcja jest niezbędna, jeśli domyślne pliki uwierzytelniające połączenie ssh (id_rsa) nie są używane.
scp example
scp -i ~/.ssh/<private_key> <file/directory> [email protected]:/home/eouser/
scp output:
<file> 100% 1680 49.6KB/s 00:00
RSYNC
Ogólna składnia dla rsync:
*rsync [options] [source] [destination]*
Podstawowy przykład będzie wyglądał mniej więcej tak:
rsync -avz –progress -e "ssh -i /home/account/.ssh/id_rsa" file1 [email protected]:/home/eouser/
Dane wyjściowe:
sending incremental file listfile1sent 135 bytes received 35 bytes 113.33 bytes/sectotal size is 57 speedup is 0.3
Opcje:
v : pokaże Ci szczegółowe informacje o przebiegu działania
-r : kopiuje dane rekurencyjnie (należy zachować ostrożność, nie kopiuje to uprawnień do plików/katalogów podczas przesyłania danych)
-a : tryb archiwizacji; umożliwia kopiowanie plików rekurencyjnie, a także zachowuje dowiązania symboliczne, uprawnienia do plików, prawa użytkowników i grup oraz znaczniki czasu.
-z : kompresja danych
*-h : format czytelny dla człowieka, liczby wyjściowe w formacie czytelnym dla człowieka
Musisz dodać swój prywatny klucz ssh do uwierzytelniania za pomocą parametru -e.
Przykład rsync
rsync -avz -e "ssh -i ~/.ssh/<private_key>" <file/directory> [email protected]:/home/eouser/
Wyjście rsync:
sending incremental file list
<file>
sent 1,404 bytes received 35 bytes 959.33 bytes/sec
total size is 1,680 speedup is 1.17