Co to jest rsync?
Autor: Redakcja Domeny.ForSale Opublikowano
W skrócie: rsync to narzędzie wiersza poleceń do kopiowania i synchronizowania plików między katalogami lub komputerami. Przy kolejnych uruchomieniach pomija pliki uznane za niezmienione, a podczas transferu sieciowego potrafi przesyłać tylko zmienione fragmenty danych. Przydaje się do aktualizowania kopii danych i przenoszenia plików na serwer, ale zwykła synchronizacja nie zastępuje kopii zapasowej z historią wersji.
Jak działa rsync i czym różni się od zwykłego kopiowania?
Rsync porównuje wskazane źródło z miejscem docelowym i ustala, które pliki wymagają przesłania. Domyślnie rozpoznaje zmiany przede wszystkim na podstawie rozmiaru pliku i czasu jego modyfikacji. Nie porównuje więc za każdym razem całej zawartości każdego pliku.
W transferach sieciowych rsync może wykorzystać algorytm różnicowy, czyli przesyłać brakujące lub zmienione fragmenty zamiast całego istniejącego pliku. Pierwsze kopiowanie do pustego katalogu wymaga jednak przesłania wszystkich wybranych danych. Przy kopiowaniu lokalnym rsync domyślnie przesyła całe pliki wymagające aktualizacji, ponieważ analiza ich fragmentów nie zawsze przynosi korzyść.
Przykładowo masz katalog ze zdjęciami produktów na komputerze i jego kopię na serwerze. Po dodaniu pięciu zdjęć kolejne uruchomienie rsync prześle nowe pliki, zamiast ponownie kopiować cały zbiór. Usunięcie zdjęcia ze źródła nie usunie go jednak automatycznie z celu — wymaga to osobnej opcji.
Gdzie można korzystać z rsync?
Rsync jest powszechnie używany w Linuksie i dostępny także w macOS. W Windows można korzystać z niego na przykład przez WSL, czyli środowisko pozwalające uruchamiać narzędzia Linuksa. Dostępność programu i jego wersję sprawdzisz poleceniem:
rsync --version
Jeżeli programu brakuje, zainstaluj go za pomocą menedżera pakietów odpowiedniego dla systemu. Szczegóły instalacji i dostępne opcje sprawdź w dokumentacji swojej dystrybucji lub konkretnej wersji programu.
Do typowego przesyłania danych przez SSH rsync musi być zainstalowany na obu komputerach. SSH to szyfrowany sposób łączenia się ze zdalnym komputerem. Potrzebujesz również konta z dostępem do serwera oraz uprawnień do odczytu źródła i zapisu w miejscu docelowym; sam dostęp przez SFTP nie zawsze wystarcza.
Pierwsza synchronizacja krok po kroku
Podstawowa składnia to rsync [opcje] źródło cel. Załóżmy, że chcesz skopiować zawartość katalogu projekty do istniejącego katalogu /mnt/backup/projekty/. Najpierw wykonaj próbę bez zapisywania zmian:
rsync -av --dry-run --itemize-changes ~/projekty/ /mnt/backup/projekty/
Znaczenie użytych opcji:
-a— tryb archiwalny: kopiuje podkatalogi, zachowuje dowiązania symboliczne i podstawowe metadane, w zakresie pozwalającym na to przez system i uprawnienia.-v— pokazuje więcej informacji o przebiegu operacji.--dry-run— symuluje działanie bez kopiowania i usuwania plików.--itemize-changes— pokazuje rodzaj planowanych zmian.
Sprawdź, czy ścieżki i lista zmian są prawidłowe. Jeśli używasz zewnętrznego dysku, potwierdź także, że jest zamontowany we właściwym miejscu. Następnie uruchom rzeczywiste kopiowanie:
rsync -av --itemize-changes ~/projekty/ /mnt/backup/projekty/
Ukośnik na końcu źródła zmienia znaczenie polecenia. Źródło ~/projekty/ oznacza kopiowanie zawartości katalogu. Źródło ~/projekty oznacza kopiowanie katalogu wraz z jego nazwą — przy istniejącym katalogu docelowym może więc powstać dodatkowy poziom projekty.
Tryb -a nie zachowuje automatycznie wszystkich możliwych właściwości plików. Przykładowo listy kontroli dostępu, rozszerzone atrybuty i powiązania między dowiązaniami twardymi wymagają dodatkowych opcji oraz obsługi po obu stronach.
Jak przesłać pliki na serwer przez SSH?
Aby skopiować zawartość lokalnego katalogu na serwer, możesz użyć poniższego wzoru. Zastąp nazwę konta, adres serwera i ścieżkę własnymi wartościami:
rsync -av -e ssh --dry-run ./strona/ uzytkownik (at) serwer.example:/var/www/strona/
Opcja -e ssh wskazuje sposób połączenia. Po sprawdzeniu wyniku usuń --dry-run, aby wykonać transfer. Przy pierwszym połączeniu zweryfikuj odcisk klucza serwera na podstawie informacji od administratora, zamiast bez sprawdzenia akceptować jego tożsamość.
Aby pobierać pliki, odwróć kolejność źródła i celu: zdalna ścieżka powinna znaleźć się jako pierwsza. Rsync działa kierunkowo — nie jest automatyczną synchronizacją dwustronną i nie rozwiązuje konfliktów między dwiema niezależnie edytowanymi kopiami.
Usuwanie plików i ograniczenia kopii zapasowej
Opcja --delete usuwa z synchronizowanego katalogu docelowego pliki, których nie ma w źródle. Jest przydatna przy tworzeniu lustrzanego odbicia, ale pomyłka w ścieżce lub puste źródło mogą spowodować utratę potrzebnych danych. Przed jej użyciem zawsze wykonaj próbę z --dry-run --itemize-changes i sprawdź planowane usunięcia.
Nawet bez --delete rsync może nadpisać wcześniejszą wersję pliku. Nie zapewnia też samodzielnie spójnej kopii działającej bazy danych: do tego zwykle potrzebny jest eksport bazy lub mechanizm kopii oferowany przez jej silnik.
Jeśli dane mają służyć do odzyskiwania po błędzie lub awarii, zaplanuj przechowywanie wcześniejszych wersji i osobnej kopii. Pierwszą próbę rsync wykonaj na małym katalogu testowym, a potem sprawdź, czy potrafisz odtworzyć z kopii wybrany plik.
Zobacz też: Co to jest 2FA?
