Rsync kopiuje i synchronizuje pliki ze zdalnym serwerem

Utility Rsync może być używany do kopiowania i synchronizacji plików i folderów z lokalnego serwera Linux na zdalny i odwrotnie. Rsync umożliwia kopiowanie danych między serwerami wewnątrz bezpiecznego połączenia SSH. Również, rsync, Obsługuje kompresję danych w locie, co poprawia wydajność systemu.

Aby zapobiec utracie informacji podczas wysyłania plików, rsync najpierw kopiuje wszystkie przesłane informacje do pliku tymczasowego. Inną ważną cechą rsync jest to, że pliki są przesyłane do jednego strumienia, osobny strumień nie jest tworzony dla każdego pliku (co powoduje problem podczas przesyłania dużej liczby małych plików w innych narzędziach).

W tym artykule rozważymy przypadki użycia. rsync synchronizować i kopiować katalogi i pliki oraz podawać przykłady jego zaawansowanych ustawień.

Treść

  • Instalacja i podstawowa opcja rsync
  • Rsync: kopiowanie / synchronizacja katalogu lokalnego
  • Rsync: skonfiguruj synchronizację ze zdalnym serwerem
  • Inne przykłady użycia rsync
  • Tworzenie kopii zapasowych w systemie Linux za pomocą rsync

Instalacja i podstawowa opcja rsync

Instalacja rsync nie różni się od instalacji, żadnego innego pakietu. W CentOS pakiet rsync jest obecny w podstawowym repozytorium i jest instalowany przez yum (lub dnf w CentOS 8):

# yum zainstaluj rsync -y

Składnia polecenia jest następująca:

# Opcje odbiornika źródłowego rsync

Jako źródło i odbiorca możesz określić lokalny lub zdalny katalog na innym serwerze.

Opcje:

  • -v - wyświetla szczegółowe informacje o procesie
  • -c - sprawdź sumy kontrolne pliku
  • -q - minimalna informacja
  • -a - tryb archiwizacji
  • -R - ścieżki względne
  • -y - nie zastępuj nowszych plików
  • -b - kopia zapasowa
  • -l - kopiuj dowiązania symboliczne
  • -L - skopiuj treść linku
  • -H - skopiuj twarde linki
  • -g - zapisz grupę
  • -p - zapisywanie uprawnień do plików
  • -t - oszczędzaj czas modyfikacji
  • -x - działa tylko w tym FS
  • -e - użyj innego protokołu transportowego (np. ssh)
  • -z - kompresuj pliki przed przesłaniem
  • -delete - usuwa pliki, które nie są w źródle
  • -exclude - wyklucz pliki
  • -rekurencyjne - rekurencyjnie iteruj po katalogach
  • -no-recursive - wyłącz rekursję
  • -postęp - wyświetl postęp przesyłania pliku
  • -stat - pokaż statystyki transmisji
  • -max-size - maksymalny rozmiar pliku do przesłania
  • -bwlimit - ograniczenie prędkości przesyłania plików
  • -wersja - wersja narzędzia

Rsync: kopiowanie / synchronizacja katalogu lokalnego

Rsync może służyć do kopiowania plików między lokalnymi katalogami serwerów. Jeśli chcesz skopiować pliki z jednego katalogu do drugiego, uruchom polecenie:

# rsync /var/www/html/package.zip / var / www / tmp /

W tym przypadku plik package.zip został po prostu skopiowany do katalogu / var / www / tmp /.

Możesz dodać kilka opcji kopiowania. Na przykład, aby wstępnie skompresować plik przed kopiowaniem, wyświetlić szczegółowe informacje i postęp kopiowania pliku, wykonaj:

# rsync -vz --progress /var/www/html/package.zip / var / www / tmp /

Możesz użyć rsync do zsynchronizowania zawartości lokalnych katalogów. Na przykład rsync jest wygodny w użyciu, gdy trzeba skopiować pliki z katalogu roboczego do repozytorium zamontowanego na jakiejś partycji. Kilka przykładów poleceń:

# rsync -zvr / var / www / site / backup /

Skopiowaliśmy katalog / var / www / site do katalogu kopii zapasowej, opcja -r wolno rekurencyjnie kopiować wszystkie zagnieżdżone katalogi i pliki.

Aby zapisać wszystkie atrybuty pliku podczas kopiowania, na przykład datę modyfikacji i datę utworzenia plików, dodaj klucz -a):

# rsync -zvra / var / www / site / backup /

Jeśli chcesz skopiować tylko zmodyfikowane pliki, dodaj opcję -c:

# rsync -zvrac / var / www / site / backup /

Zmieniłem tylko jeden plik i uruchomiłem polecenie. W rezultacie tylko zmodyfikowany plik został skopiowany do katalogu docelowego..

Bardzo wygodnie jest użyć tej opcji, jeśli pliki nie zmieniają się często. W ten sposób oszczędzasz czas na kopiowaniu / synchronizacji katalogu.

Aby nie zaśmiecać katalogu kopii zapasowej, możesz dodać opcję -usuń, pozwoli ci to porównać pliki ze źródłem, a jeśli plik znajduje się w katalogu docelowym i jego brak w katalogu źródłowym, usuń go automatycznie. Ale zachęcam do korzystania z tej opcji ostrożnie, ponieważ jeśli skonfigurujesz katalog do kopiowania do korony, w przypadku awarii lub ingerencji z zewnątrz do katalogu roboczego, a następnie usunięcia plików roboczych, otrzymasz również informacje w kopiach zapasowych, które nie pozwolą na przywrócenie danych . Przykład:

# rsync -zvrac --delete / var / www / site / backup /

Rsync: skonfiguruj synchronizację ze zdalnym serwerem

Najczęściej kopiuj / synchronizuj rsync ze zdalnym serwerem służy do tworzenia kopii zapasowych lub synchronizacji konfiguracji węzła klastra. Możesz automatycznie zsynchronizować dane z serwera produkcyjnego z zapasowym, aw przypadku problemów na produktywnej północy szybko przenieś wszystko do zapasowego. Jest to dość wygodna i łatwa w konfiguracji opcja..

W nowoczesnych wersjach rsync domyślnie do przesyłania plików używany jest protokół SSH. Możesz jednak również użyć demona rsyncd. Aby to zrobić, klient rsync musi być zainstalowany na komputerze zdalnym, a jego demon jest dodawany do uruchamiania:

# Systemctl enable rsyncd

Plik konfiguracyjny rsync to /etc/rsyncd.conf. W tym pliku możesz skonfigurować ustawienia rsync i ustawienia synchronizacji dla różnych zasobów.

Aby przeprowadzić synchronizację za pomocą demona rsync, adres zdalnego serwera jest określony jako rsync: //. Na przykład:

# rsync -av /var/www/site/package.zip rsync: //192.168.1.32/backup

Aby skopiować plik na zdalny serwer, użyj polecenia:

# rsync -az /var/www/site/package.zip root @ IP: / backup /

Gdzie IP to adres zdalnego serwera. Po uruchomieniu polecenia serwer zdalny poprosi o hasło użytkownika (jeśli uwierzytelnianie hasła jest włączone). W celu automatycznej autoryzacji musisz skonfigurować klucze SSH.

Skopiuj katalog z lokalnego serwera do zdalnego:

# rsync -zvra / var / www / site root @ IP: / backup /

Oznacza to, że wszystko jest takie samo, jak w przypadku lokalnych katalogów, tylko my określamy adres zdalnego serwera.

Możesz także zsynchronizować pliki ze zdalnego serwera na lokalny, polecenie w tym celu trochę się zmieni:

# rsync -zvra root @ IP: / backup / / backup

Aby wymusić użycie protokołu SSH do kopiowania plików, określ to w swoim poleceniu (opcja -e służy do wyboru protokołu transportu do kopiowania plików):

# rsync -zvrae ssh root @ IP: / backup / / backup

Jeśli zdalny serwer SSH ma inny port niż standardowy, możesz go również określić:

# rsync -zvrae "ssh -p 2222" root @ IP: / backup / / backup

Inne przykłady użycia rsync

Jeśli przesyłasz dużo informacji w ramach sesji synchronizacji i ważne jest ograniczenie prędkości transmisji, ustaw tę opcję za pomocą dodatkowej opcji -bwlimit (wskaż prędkość w KB / s):

# rsync -zvra --bwlimit = 100 / var / www / site root @ IP: / backup /

Podczas przesyłania plików na zdalny serwer można ograniczyć maksymalny rozmiar plików do skopiowania. Na przykład chcesz skopiować wszystkie pliki oprócz plików większych niż 1 MB:

# rsync -zvra --max-size = '1m' / var / www / site root @ IP: / backup /

Jeśli potrzebujesz synchronizacji w jedną stronę na serwerze, a po przesłaniu plików na serwer zdalny musisz usunąć pliki z serwera źródłowego, skorzystaj z opcji --usuń pliki źródłowe:

# rsync -zvra --remove-source-files --progress /var/www/site/package.zip root @ IP: / backup /

Po wykonaniu polecenia plik został skopiowany na zdalny serwer i usunięty ze źródła:

Również bardzo wygodne opcje -obejmują i -wykluczyć, Korzystając z tych opcji, możesz zrobić wyjątki dla kopiowania katalogów lub plików:

# rsync -zvra --exclude = administrator / / var / www / site root @ IP: / backup /

W takim przypadku wykluczono katalog „administrator” podczas kopiowania na zdalny serwer.

# rsync -zvra --include = '*. php' --exclude = '*' / var / www / site / administrator / root @ IP: / backup /

Dodając opcję -obejmują byliśmy w stanie ustawić filtr według plików, skopiowaliśmy tylko pliki z rozszerzeniem php.

Tworzenie kopii zapasowych w systemie Linux za pomocą rsync

W moim niewolniku używam części rsync do zadań automatycznego tworzenia kopii zapasowych w systemie Linux. Możesz pisać proste skrypty bash lub po prostu dodać komendę rsync do crona i wykonać zgodnie z planem.

Na przykład możesz dodać polecenie do crona:

01 30 * * * rsync -zvra root @ IP: / backup / / backup

W rezultacie, codziennie o 1-30 nocy, katalogi lokalnych i zdalnych serwerów będą synchronizowane.

Warto wziąć to pod uwagę, aby wykonać polecenie rsync na zdalnym serwerze za pośrednictwem crona zaleca się skonfigurowanie uwierzytelniania serwera za pomocą klucza SSH. Przykłady skryptów do tworzenia kopii zapasowych, podaliśmy w artykule „Skrypty do tworzenia kopii zapasowych plików z Linuksa do chmury”, rsync służy tam do kopiowania plików do podłączonych magazynów w chmurze.