rsync
jest szybkim i wszechstronnym narzędziem wiersza poleceń do synchronizacji plików i katalogów między dwoma lokalizacjami za pośrednictwem zdalnej powłoki lub z/do zdalnego demona Rsync. Zapewnia szybkie przyrostowe przesyłanie plików przez przenoszenie tylko różnic między źródłem a miejscem docelowym.
Rsync może być używany do tworzenia kopii lustrzanych danych, przyrostowych kopii zapasowych, kopiowania plików między systemami oraz jako zamiennik poleceń scp
, sftp
i cp
.
W tym artykule wyjaśniono, jak używać rsync
za pomocą praktycznych przykładów i szczegółowych wyjaśnień najczęściej używanych opcji rsync
.
Instalacja Rsync #
Narzędzie rsync
jest preinstalowane w większości dystrybucji systemu Linux i macOS. Jeśli nie masz rsync
zainstalowanego w swoim systemie, możesz je łatwo zainstalować za pomocą menedżera pakietów swojej dystrybucji.
Instalacja Rsync na Ubuntu i Debianie #
sudo apt install rsync
Instalacja Rsync na CentOS i Fedorze #
sudo yum install rsync
Składnia polecenia Rsync #
Przed przejściem do tego, jak używać polecenia rsync
, zacznijmy od przeglądu podstawowej składni.
Wyrażenia narzędzia rsync
przyjmują następującą postać:
Local to Local: rsync ... ... DESTLocal to Remote: rsync ... ... HOST:DESTRemote to Local: rsync ... HOST:SRC...
-
OPTION
– Opcje rsync. -
SRC
– Katalog źródłowy. -
DEST
– Katalog docelowy. -
USER
– Zdalna nazwa użytkownika. -
HOST
– Zdalna nazwa hosta lub adres IP.
rsync
zapewnia szereg opcji, które kontrolują zachowanie polecenia. Najczęściej używane opcje to:
-
-a
,--archive
, tryb archiwizacji, odpowiednik-rlptgoD
. Ta opcja mówirsync
, aby synchronizował katalogi rekursywnie, przenosił urządzenia specjalne i blokowe, zachowywał dowiązania symboliczne, czasy modyfikacji, grupy, własność i uprawnienia. -
-z
,--compress
. Ta opcja zmusza programrsync
do kompresowania danych podczas wysyłania ich do maszyny docelowej. Tej opcji należy używać tylko wtedy, gdy połączenie z maszyną zdalną jest wolne. -
-P
, odpowiednik--partial --progress
. Gdy ta opcja jest używana,rsync
pokazuje pasek postępu podczas przesyłania i zachowuje częściowo przesłane pliki. Jest to przydatne podczas przesyłania dużych plików za pośrednictwem wolnych lub niestabilnych połączeń sieciowych. -
--delete
. Gdy ta opcja jest używana,rsync
usuwa zbędne pliki z lokalizacji docelowej. Jest to przydatne w przypadku tworzenia kopii lustrzanych. -
-q
,--quiet
. Użyj tej opcji, jeśli chcesz stłumić komunikaty inne niż o błędach. -
-e
. Ta opcja pozwala wybrać inną zdalną powłokę. Domyślniersync
jest skonfigurowany do używania ssh.
Podstawowe użycie Rsync #
Najprostszym przypadkiem użycia rsync
jest skopiowanie pojedynczego pliku z jednej do innej lokalizacji lokalnej. Oto przykład:
rsync -a /opt/filename.zip /tmp/
Użytkownik uruchamiający polecenie musi mieć uprawnienia do odczytu w lokalizacji źródłowej i uprawnienia do zapisu w lokalizacji docelowej.
Podanie nazwy pliku z lokalizacji docelowej powoduje skopiowanie pliku o bieżącej nazwie. Jeśli chcesz zapisać plik pod inną nazwą, określ nową nazwę w części docelowej:
rsync -a /opt/filename.zip /tmp/newfilename.zip
Prawdziwa moc rsync
pojawia się podczas synchronizowania katalogów. Poniższy przykład pokazuje, jak utworzyć lokalną kopię zapasową plików witryny internetowej:
rsync -a /var/www/domain.com/public_html/ /var/www/domain.com/public_html_backup/
Jeśli katalog docelowy nie istnieje, rsync
go utworzy.
Warto wspomnieć, że rsync
inaczej traktuje katalogi źródłowe z ukośnikiem spowalniającym (/
). Jeśli katalog źródłowy ma ukośnik, to polecenie skopiuje do katalogu docelowego tylko zawartość tego katalogu. Gdy ukośnik jest pominięty, rsync
kopiuje katalog źródłowy wewnątrz katalogu docelowego.
Usługiwanie się programem rsync do synchronizacji danych z/do zdalnej maszyny #
Gdy używamy programu rsync
do zdalnego przesyłania danych, musi on być zainstalowany zarówno na maszynie źródłowej, jak i docelowej. Nowe wersje rsync
są skonfigurowane do używania SSH jako domyślnej powłoki zdalnej.
W poniższym przykładzie przenosimy katalog z maszyny lokalnej na zdalną:
rsync -a /opt/media/ remote_user@remote_host_or_ip:/opt/media/
Aby przenieść dane ze zdalnej do lokalnej maszyny, użyj zdalnej lokalizacji jako źródła:
rsync -a remote_user@remote_host_or_ip:/opt/media/ /opt/media/
Jeśli SSH na zdalnym hoście nasłuchuje na porcie innym niż domyślny 22 , określ port za pomocą opcji -e
:
rsync -a -e "ssh -p 2322" /opt/media/ remote_user@remote_host_or_ip:/opt/media/
Przy przesyłaniu dużych ilości danych zaleca się uruchomienie polecenia rsync
wewnątrz sesji ekranowej lub użycie opcji -P
:
rsync -a -P remote_user@remote_host_or_ip:/opt/media/ /opt/media/
Wykluczanie plików i katalogów #
Istnieją dwie opcje wykluczania plików i katalogów. Pierwszą opcją jest użycie argumentu --exclude
i określenie plików i katalogów, które chcesz wykluczyć w wierszu poleceń.
Przy wykluczaniu plików lub katalogów musisz użyć ich względnych ścieżek do lokalizacji źródłowej.
W poniższym przykładzie pokazano, jak wykluczyć katalogi node_modules
i tmp
:
rsync -a --exclude=node_modules --exclude=tmp /src_directory/ /dst_directory/
Drugą możliwością jest użycie opcji --exclude-from
i określenie plików i katalogów, które chcesz wykluczyć, w pliku.
rsync -a --exclude-from='/exclude-file.txt' /src_directory/ /dst_directory/
node_modulestmp
Zakończenie #
Pokazaliśmy, jak używać Rsync do kopiowania i synchronizowania plików i katalogów. Jest wiele więcej informacji na temat Rsync na stronie Rsync User’s Manual.
.