Polecenie Rsync w systemie Linux z przykładami

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ówi rsync, 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 program rsync 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ślnie rsync 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/
Jeśli nie ustawiłeś bezhasłowego logowania SSH do zdalnej maszyny, zostaniesz poproszony o podanie hasła użytkownika.

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/
/exclude-file.txt
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.

.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.