Witaj w szczegółowym poradniku poświęconym rsync – niezastąpionemu narzędziu wiersza poleceń, które rewolucjonizuje synchronizację plików i katalogów. Ten artykuł jest przeznaczony dla administratorów systemów, deweloperów i zaawansowanych użytkowników, którzy szukają kompleksowej wiedzy i praktycznych rozwiązań do efektywnego zarządzania danymi, tworzenia kopii zapasowych oraz migracji plików. Dowiedz się, jak opanować rsync, aby usprawnić swoje codzienne operacje i uniknąć typowych pułapek.
Rsync – klucz do efektywnej synchronizacji i backupu danych
- Rsync to narzędzie do wydajnej synchronizacji plików i katalogów, lokalnie i zdalnie.
- Wykorzystuje algorytm delta, przesyłając tylko zmienione fragmenty plików, co oszczędza czas i transfer.
- Jest standardem w systemach uniksopodobnych, idealnym do backupów, migracji i synchronizacji serwerów.
- Kluczowe opcje to
-a(tryb archiwalny),-v(szczegółowy),-z(kompresja) i-n(symulacja). - Umożliwia precyzyjne zarządzanie synchronizacją, w tym wykluczanie plików i bezpieczne usuwanie.
- Możliwa jest automatyzacja zadań za pomocą
cronoraz zaawansowane techniki jak backupy inkrementalne.

Dlaczego rsync to wciąż niezastąpione narzędzie w arsenale administratora?
rsync (skrót od "remote synchronization") to potężne narzędzie wiersza poleceń, które od lat stanowi filar zarządzania plikami w systemach uniksopodobnych. Jego główną zaletą jest niezwykła wydajność w synchronizacji plików i katalogów, zarówno w obrębie jednego systemu, jak i między różnymi maszynami, często oddalonymi od siebie geograficznie. Dla administratorów systemów i deweloperów rsync jest nieocenionym pomocnikiem w codziennych zadaniach, takich jak tworzenie kopii zapasowych, migracja danych, synchronizacja serwerów czy wdrażanie aplikacji.
Czym rsync wygrywa z prostym kopiowaniem (cp) i transferem (scp)?
Na pierwszy rzut oka, do kopiowania plików można użyć prostszych narzędzi, takich jak cp (copy) czy scp (secure copy). Jednak to właśnie w porównaniu z nimi, rsync pokazuje swoją prawdziwą moc. Polecenie cp jest przeznaczone głównie do kopiowania lokalnego i nie oferuje żadnej inteligentnej synchronizacji – za każdym razem kopiuje wszystkie wskazane pliki od nowa. scp, choć umożliwia transfer zdalny przez SSH, działa podobnie: kopiuje całe pliki, nawet jeśli w danym pliku zmienił się tylko jeden bajt.
W przeciwieństwie do nich, rsync jest znacznie bardziej efektywny. Jego przewaga staje się szczególnie widoczna przy dużych zbiorach danych, gdzie zmiany są niewielkie, lub przy wolnych łączach internetowych. Dzięki swojej zdolności do przesyłania tylko niezbędnych zmian, rsync minimalizuje zużycie pasma i skraca czas transferu, co jest kluczowe w profesjonalnych środowiskach.
Zrozumienie magicznego "algorytmu delta": jak rsync oszczędza Twój czas i transfer
Sercem wydajności rsync jest jego innowacyjny algorytm delta. To właśnie on sprawia, że narzędzie to jest tak efektywne. Zamiast przesyłać cały plik za każdym razem, gdy zostanie zmodyfikowany, rsync inteligentnie identyfikuje i przesyła tylko te fragmenty danych, które uległy zmianie. Działa to w ten sposób, że zarówno źródło, jak i cel analizują plik, dzieląc go na mniejsze bloki. Następnie porównywane są sumy kontrolne tych bloków. Jeśli suma kontrolna bloku w pliku źródłowym różni się od sumy kontrolnej bloku w pliku docelowym, tylko ten zmieniony blok jest przesyłany przez sieć.
Taki mechanizm przekłada się na znaczące zmniejszenie zużycia pasma sieciowego i skrócenie czasu transferu, co jest nieocenione w scenariuszach zdalnych, gdzie opóźnienia i przepustowość łącza mają kluczowe znaczenie. Wyobraź sobie synchronizację dużego, kilkugigabajtowego pliku bazy danych, w którym zmieniło się zaledwie kilka rekordów – rsync prześle tylko te niewielkie zmiany, zamiast całego gigabajta, co oszczędza zarówno czas, jak i zasoby.
Pierwsze kroki: instalacja i podstawowa składnia, którą musisz znać
Rozpoczęcie pracy z rsync jest zazwyczaj bardzo proste, ponieważ narzędzie to jest szeroko dostępne. Zanim jednak zagłębimy się w szczegóły, warto upewnić się, że masz je zainstalowane i zrozumieć jego podstawową składnię.
Czy rsync jest już na moim systemie? Szybka weryfikacja
Większość dystrybucji Linuksa (takich jak Ubuntu, Debian, CentOS) oraz system macOS ma rsync zainstalowany domyślnie. Aby szybko sprawdzić jego obecność i wersję, możesz użyć jednego z poniższych poleceń w terminalu:
rsync --version
which rsync
Jeśli rsync nie jest zainstalowany, system zazwyczaj podpowie Ci, jak to zrobić (np. sudo apt install rsync na systemach Debian/Ubuntu lub sudo yum install rsync na systemach Red Hat/CentOS). W przypadku systemu Windows, rsync może być używany poprzez WSL (Windows Subsystem for Linux) lub Cygwin, co pozwala na korzystanie z narzędzi linuksowych bezpośrednio w środowisku Windows.
Podstawowa budowa polecenia: rsync [OPCJE] ŹRÓDŁO CEL
Podstawowa składnia polecenia rsync jest intuicyjna i opiera się na prostym schemacie: rsync [OPCJE] ŹRÓDŁO CEL.
-
[OPCJE]: To różnego rodzaju flagi, które modyfikują zachowaniersync(np.-a,-v,--delete). Omówimy je szczegółowo w kolejnych sekcjach. -
ŹRÓDŁO: Określa ścieżkę do plików lub katalogów, które chcesz skopiować lub zsynchronizować. Może to być ścieżka lokalna lub zdalna. -
CEL: Określa ścieżkę, do której pliki lub katalogi mają zostać skopiowane. Również może być lokalna lub zdalna.
Oto prosty przykład lokalnego użycia, który kopiuje zawartość jednego katalogu do drugiego, bez dodatkowych opcji:
rsync -a /sciezka/do/zrodla/ /sciezka/do/celu/
W tym przypadku opcja -a (tryb archiwalny) jest już użyta, ponieważ jest to najbezpieczniejszy i najczęściej zalecany sposób synchronizacji, o którym opowiem więcej poniżej.
Kluczowe opcje (flagi), które będziesz używać na co dzień
Prawdziwa moc rsync tkwi w jego elastyczności, którą zyskujemy dzięki bogatemu zestawowi opcji (flag). Pozwalają one na precyzyjne kontrolowanie każdego aspektu procesu synchronizacji. Poniżej przedstawiam te, które moim zdaniem, będziesz używać najczęściej.
-a, czyli tryb archiwalny: dlaczego to najważniejsza opcja?
Opcja -a (lub jej pełna forma --archive) jest prawdopodobnie najważniejszą flagą, którą powinieneś znać i stosować. To nie jest pojedyncza opcja, lecz skrót dla kombinacji kilku innych flag: -rlptgoD. Pozwala ona na tworzenie "wiernych" kopii zapasowych, zachowując wszystkie istotne atrybuty plików. Co oznaczają poszczególne litery?
-
-r(--recursive): Rekurencja – kopiuje katalogi i ich zawartość. Bez tej opcjirsyncskopiowałby tylko pliki w głównym katalogu, ignorując podkatalogi. -
-l(--links): Kopiuje linki symboliczne (symlinki) jako linki symboliczne, a nie jako pliki, do których wskazują. -
-p(--perms): Zachowuje uprawnienia plików (np.rwx). -
-t(--times): Zachowuje czasy modyfikacji plików. To kluczowe dla algorytmu delta, który na ich podstawie określa, czy plik wymaga aktualizacji. -
-g(--group): Zachowuje grupę właściciela pliku. -
-o(--owner): Zachowuje właściciela pliku (wymaga uprawnień roota po stronie docelowej). -
-D(--devices --specials): Zachowuje pliki urządzeń (np./dev/null) i pliki specjalne.
Użycie -a gwarantuje, że kopia zapasowa będzie niemal identyczna z oryginałem, co jest kluczowe dla integralności danych.
-v, -h, --progress: Jak kontrolować i rozumieć, co robi rsync?
Podczas gdy rsync pracuje w tle, warto wiedzieć, co dokładnie się dzieje. Poniższe opcje pomagają monitorować i rozumieć proces synchronizacji:
-
-v(--verbose): Włącza tryb szczegółowy.rsyncwyświetla wtedy listę przesyłanych plików i katalogów, co jest bardzo pomocne do weryfikacji, czy operacja przebiega zgodnie z oczekiwaniami. -
-h(--human-readable): Sprawia, że rozmiary plików są wyświetlane w formacie czytelnym dla człowieka (np.1.2M,500K,2.5G), zamiast w bajtach. To znacznie ułatwia szybką ocenę wielkości transferowanych danych. -
--progress: Pokazuje pasek postępu dla każdego przesyłanego pliku, wraz z informacjami o procentowym ukończeniu, aktualnej prędkości transferu i pozostałym czasie. Jest to nieocenione przy transferze dużych plików lub wielu mniejszych, gdy chcemy na bieżąco śledzić postęp.
Często używam tych opcji razem, aby mieć pełny obraz sytuacji:
rsync -avh --progress /sciezka/do/zrodla/ /sciezka/do/celu/
-z: Kiedy kompresja danych ma największy sens?
Opcja -z (--compress) włącza kompresję danych podczas transferu. Oznacza to, że dane są kompresowane po stronie źródłowej, przesyłane w skompresowanej formie, a następnie dekompresowane po stronie docelowej. Kiedy ma to sens?
- Wolne łącza internetowe: Jeśli synchronizujesz dane przez wolne łącze WAN (np. domowe łącze internetowe do zdalnego serwera), kompresja może znacząco przyspieszyć transfer, redukując ilość danych do przesłania.
- Duże pliki tekstowe lub bazy danych: Pliki, które dobrze się kompresują (np. pliki tekstowe, logi, bazy danych), zyskają najwięcej na tej opcji.
Jednak kompresja wiąże się z narzutem obliczeniowym (procesor musi kompresować i dekompresować dane). W bardzo szybkich sieciach lokalnych (np. 10 Gigabit Ethernet) narzut ten może przewyższyć korzyści z mniejszej ilości przesyłanych danych, a transfer może być paradoksalnie wolniejszy. Zawsze warto przetestować, czy -z faktycznie poprawia wydajność w Twoim konkretnym scenariuszu.
-n (dry-run): Twoja siatka bezpieczeństwa przed popełnieniem błędu
Opcja -n (--dry-run) jest moim zdaniem jedną z najważniejszych opcji bezpieczeństwa w rsync. Pozwala ona na symulowanie działania polecenia rsync bez dokonywania żadnych faktycznych zmian w plikach. To jak przymierzenie ubrania przed zakupem – widzisz, jak będzie wyglądać, ale nie musisz go jeszcze kupować.
Zawsze, gdy używam rsync do złożonych operacji, zwłaszcza tych z opcją --delete, najpierw uruchamiam polecenie z -n. Pozwala mi to zweryfikować, które pliki zostaną zsynchronizowane, usunięte lub zmodyfikowane, zanim wykonam faktyczną, potencjalnie destrukcyjną operację. To prosta, ale niezwykle skuteczna metoda unikania kosztownych błędów.
rsync -avn /sciezka/do/zrodla/ /sciezka/do/celu/
Wyjście z tego polecenia pokaże dokładnie, co rsync zamierza zrobić, ale nie zmieni ani jednego bajta na dysku.
Praktyczne scenariusze użycia rsync: od lokalnych backupów po zdalną magię
Teoria jest ważna, ale rsync naprawdę błyszczy w praktyce. Poniżej przedstawiam konkretne, gotowe do użycia przykłady poleceń dla najpopularniejszych scenariuszy, które pomogą Ci szybko wdrożyć to narzędzie w swojej pracy.
Jak stworzyć prostą kopię zapasową folderu na lokalnym dysku?
Najprostszym zastosowaniem rsync jest tworzenie kopii zapasowych folderów na tym samym komputerze, ale na innym dysku lub w innej lokalizacji. Użycie opcji -av jest tutaj zalecane, aby zapewnić wierną kopię archiwalną z informacjami o postępie.
rsync -av /home/user/dokumenty/ /mnt/backup/dokumenty_backup/
To polecenie skopiuje całą zawartość katalogu /home/user/dokumenty/ do /mnt/backup/dokumenty_backup/. Przy kolejnych uruchomieniach, rsync skopiuje tylko zmienione pliki, co będzie znacznie szybsze.
Synchronizacja ze zdalnym serwerem przez SSH: najczęstszy i najważniejszy przypadek
Synchronizacja ze zdalnym serwerem za pośrednictwem SSH to prawdopodobnie najczęstszy i najbardziej krytyczny przypadek użycia rsync. SSH zapewnia bezpieczne, szyfrowane połączenie, co jest niezbędne przy przesyłaniu danych przez sieć publiczną. rsync domyślnie używa SSH, gdy wykryje zdalną składnię (user@host:/path).
Poniższy przykład przesyła lokalny katalog /var/www/mojastrona/ na zdalny serwer zdalny.serwer.com do katalogu /var/www/. Opcja -z jest dodana dla kompresji, co jest często przydatne przy zdalnych transferach.
rsync -avz /var/www/mojastrona/ user@zdalny.serwer.com:/var/www/
Jak pobrać dane ze zdalnego serwera na swój komputer?
Kierunek synchronizacji można łatwo odwrócić. Aby pobrać pliki ze zdalnego serwera na lokalny komputer, wystarczy zamienić miejscami źródło i cel:
rsync -avz user@zdalny.serwer.com:/var/log/nginx/ /home/user/logi_nginx/
To polecenie pobierze zawartość katalogu /var/log/nginx/ ze zdalnego serwera na lokalny komputer do katalogu /home/user/logi_nginx/.
Użycie niestandardowego portu SSH – co zrobić, gdy port 22 jest zablokowany?
Zdarza się, że serwery SSH są skonfigurowane do nasłuchiwania na niestandardowym porcie (innym niż domyślny 22) ze względów bezpieczeństwa. rsync pozwala na określenie niestandardowego portu SSH za pomocą opcji -e (--rsh), która pozwala określić alternatywny program do zdalnej powłoki.
rsync -avz -e 'ssh -p 2222' /sciezka/lokalna/ user@zdalny.serwer.com:/sciezka/zdalna/
W tym przykładzie rsync użyje SSH do połączenia się ze zdalnym serwerem na porcie 2222.
Kontrola totalna: jak precyzyjnie zarządzać synchronizacją?
rsync oferuje zaawansowane opcje, które pozwalają na niezwykle precyzyjne zarządzanie tym, co jest synchronizowane, a co powinno zostać pominięte. Dzięki nim masz pełną kontrolę nad procesem.
Opcja --delete: Jak stworzyć idealne lustro katalogu (i jakie są tego konsekwencje)?
Opcja --delete jest niezwykle potężna i jednocześnie potencjalnie niebezpieczna. Jej działanie polega na tym, że usuwa pliki w katalogu docelowym, które nie istnieją w katalogu źródłowym. W praktyce oznacza to, że katalog docelowy staje się dokładnym "lustrem" katalogu źródłowego – wszystko, co jest w źródle, jest w celu, a wszystko, czego nie ma w źródle, zostaje usunięte z celu.
Jest to idealne do utrzymywania kopii zapasowych, które są zawsze aktualne i nie zawierają przestarzałych plików. Jednakże, muszę to podkreślić: użycie --delete bez ostrożności może prowadzić do trwałej utraty danych! Zawsze, ale to zawsze, zalecam użycie tej opcji w połączeniu z -n (--dry-run), aby najpierw zobaczyć, co zostanie usunięte, zanim faktycznie wykonasz polecenie.
rsync -av --delete /sciezka/do/zrodla/ /sciezka/do/celu/
To polecenie usunie z /sciezka/do/celu/ wszystkie pliki i katalogi, które nie znajdują się w /sciezka/do/zrodla/.
Wykluczanie plików i katalogów: Jak używać --exclude i --exclude-from?
Często zdarza się, że nie chcemy synchronizować wszystkich plików i katalogów. Na przykład, pliki tymczasowe, cache, katalogi kontroli wersji (np. .git) czy pliki logów są zazwyczaj zbędne w kopii zapasowej lub na serwerze produkcyjnym. Opcje --exclude i --exclude-from pozwalają na precyzyjne wykluczanie.
-
--exclude='WZORZEC': Pozwala na wykluczenie plików lub katalogów pasujących do określonego wzorca. Możesz użyć wielu opcji--excludew jednym poleceniu. -
--exclude-from='PLIK': Pozwala na określenie listy wzorców do wykluczenia w osobnym pliku tekstowym, co jest wygodne dla długich list.
Przykłady:
rsync -av --exclude='*.log' --exclude='cache/' /sciezka/do/zrodla/ /sciezka/do/celu/
Powyższe polecenie wykluczy wszystkie pliki z rozszerzeniem .log oraz katalogi o nazwie cache/.
rsync -av --exclude-from='lista_wykluczen.txt' /sciezka/do/zrodla/ /sciezka/do/celu/
Gdzie lista_wykluczen.txt może zawierać:
.git/
node_modules/
*.tmp
temp_files/
Kopiowanie tylko nowszych plików z opcją -u (--update)
Opcja -u (--update) jest przydatna, gdy chcesz skopiować tylko te pliki, które są nowsze w źródle niż w celu, ale nie chcesz nadpisywać plików w celu, które są nowsze niż ich odpowiedniki w źródle. W praktyce oznacza to, że jeśli plik w miejscu docelowym został zmodyfikowany później niż jego odpowiednik w źródle, rsync z opcją -u go pominie.
Jest to przydatne w scenariuszach, gdzie na obu końcach mogą być dokonywane zmiany, a Ty chcesz jedynie "uzupełnić" brakujące lub starsze pliki ze źródła, nie ryzykując utraty nowszych zmian w celu.
rsync -avu /sciezka/do/zrodla/ /sciezka/do/celu/
Pułapki i częste błędy: na co uważać, by uniknąć katastrofy?
Jak każde potężne narzędzie, rsync ma swoje subtelności, które mogą prowadzić do frustracji lub, co gorsza, do utraty danych, jeśli nie są dobrze zrozumiane. Oto najczęstsze pułapki i sposoby ich unikania.
Znaczenie ukośnika (/) na końcu ścieżki źródłowej – najważniejsza zasada rsync
To jest chyba najczęstsze źródło błędów i nieporozumień dla początkujących użytkowników rsync. Różnica między ścieżką źródłową zakończoną ukośnikiem (/) a ścieżką bez ukośnika jest fundamentalna i ma ogromny wpływ na strukturę katalogów w miejscu docelowym.
-
/sciezka/do/zrodla(bez ukośnika na końcu):rsynctraktujezrodlajako katalog, który ma zostać skopiowany w całości do celu. Oznacza to, że w katalogu docelowym zostanie utworzony podkatalog o nazwiezrodla, a jego zawartość zostanie tam umieszczona. -
/sciezka/do/zrodla/(z ukośnikiem na końcu):rsynctraktuje to jako polecenie skopiowania zawartości kataloguzrodla(czyli wszystkich plików i podkatalogów wewnątrzzrodla) bezpośrednio do katalogu docelowego.
Przykład:
# Kopiuje katalog "source_dir" do "dest_dir", tworząc "dest_dir/source_dir"
# Jeśli source_dir zawiera plik "file.txt", to w celu będzie /path/to/dest_dir/source_dir/file.txt
rsync -av /path/to/source_dir /path/to/dest_dir
# Kopiuje zawartość "source_dir" (pliki i podkatalogi) bezpośrednio do "dest_dir"
# Jeśli source_dir zawiera plik "file.txt", to w celu będzie /path/to/dest_dir/file.txt
rsync -av /path/to/source_dir/ /path/to/dest_dir
Zawsze zwracaj uwagę na ten ukośnik! Niewłaściwe jego użycie może spowodować, że pliki wylądują w nieoczekiwanym miejscu lub, co gorsza, zostaną usunięte, jeśli używasz --delete.
Problemy z uprawnieniami (Permission denied) – jak sobie z nimi radzić?
Błędy "Permission denied" są częstym problemem, zwłaszcza przy operacjach zdalnych lub kopiowaniu plików systemowych. Oznaczają one, że użytkownik, pod którym działa rsync, nie ma odpowiednich uprawnień do odczytu plików źródłowych lub zapisu w katalogu docelowym.
Typowe przyczyny i rozwiązania:
- Niewystarczające uprawnienia użytkownika: Upewnij się, że użytkownik SSH (w przypadku zdalnych operacji) lub użytkownik lokalny ma prawa do odczytu wszystkich plików w źródle i zapisu we wszystkich katalogach w celu.
- Brak dostępu do katalogów: Sprawdź uprawnienia katalogów nadrzędnych. Czasami problemem nie jest sam plik, ale brak uprawnień do wejścia do katalogu, w którym się znajduje.
-
Użycie
sudo: Jeśli kopiujesz pliki systemowe lub jako root, możesz użyćsudo rsync .... Pamiętaj jednak, aby używaćsudoz ostrożnością, ponieważ daje ono pełne uprawnienia i może prowadzić do niechcianych zmian. - Klucze SSH: Dla zdalnych operacji, upewnij się, że klucze SSH są poprawnie skonfigurowane i że agent SSH działa, aby uniknąć konieczności wpisywania hasła przy każdym połączeniu.
Dlaczego --delete może być niebezpieczne i jak go bezpiecznie testować?
Jak już wspomniałem, opcja --delete jest potężna, ale jej niewłaściwe użycie może być katastrofalne. Jeśli źródło zawiera mniej plików niż cel (np. przez pomyłkę w ścieżce źródłowej), rsync z --delete usunie wszystkie "nadmiarowe" pliki z celu, co może oznaczać utratę cennych danych.
Dlatego zawsze testuj polecenia z --delete za pomocą opcji -n (--dry-run). To Twoja ostatnia linia obrony przed przypadkowym usunięciem danych. Uruchom polecenie z -n, dokładnie przeanalizuj wyjście, a dopiero gdy masz pewność, że wszystko jest zgodne z Twoimi oczekiwaniami, usuń -n i wykonaj faktyczną synchronizację.
W bardziej zaawansowanych scenariuszach, jeśli masz obawy, możesz rozważyć użycie opcji --backup, która tworzy kopie zapasowe usuwanych plików w określonym katalogu, lub --delete-before / --delete-after, które kontrolują moment usuwania plików. Jednak dla większości użytkowników, -n jest najlepszym przyjacielem przy --delete.
Automatyzacja i zaawansowane techniki dla profesjonalistów
Gdy opanujesz podstawy i zrozumiesz kluczowe opcje rsync, możesz przejść do bardziej zaawansowanych technik, które pozwolą Ci zautomatyzować zadania i zoptymalizować transfery danych. To właśnie tutaj rsync staje się prawdziwym narzędziem dla profesjonalistów.
Jak zaplanować regularne backupy za pomocą rsync i cron?
Jednym z najczęstszych zastosowań rsync jest tworzenie regularnych kopii zapasowych. Aby zautomatyzować ten proces, możemy połączyć rsync z demonem cron, który jest standardowym narzędziem w systemach uniksopodobnych do planowania zadań. cron pozwala na uruchamianie poleceń lub skryptów w określonych odstępach czasu (np. codziennie o północy, co godzinę, raz w tygodniu).
Aby zaplanować zadanie w cron, edytujesz swój plik crontab za pomocą polecenia crontab -e. Każda linia w crontab reprezentuje jedno zadanie i składa się z pięciu pól czasu, a następnie polecenia do wykonania. Według danych Webmaster.net.pl, automatyzacja backupów za pomocą cron i rsync to jedna z najpopularniejszych praktyk wśród administratorów.
Przykład wpisu do crontab dla codziennego backupu o 3:00 w nocy:
# Przykład wpisu do crontab (edytuj za pomocą crontab -e)
# Codzienny backup o 3:00 w nocy
0 3 * * * /usr/bin/rsync -avz --delete /home/user/dane/ /mnt/backup/dane_codzienne/ >> /var/log/rsync_backup.log 2>&1
Wyjaśnienie wpisu:
-
0 3 * * *: Oznacza "o 03:00 rano, każdego dnia, każdego miesiąca, każdego dnia tygodnia". -
/usr/bin/rsync: Pełna ścieżka do wykonywalnego plikursync. Zawsze używaj pełnych ścieżek wcron, aby uniknąć problemów ze zmiennymi środowiskowymi. -
-avz --delete: Opcjersync, jak już omówiliśmy. -
/home/user/dane/ /mnt/backup/dane_codzienne/: Źródło i cel backupu. -
>> /var/log/rsync_backup.log 2>&1: Przekierowuje standardowe wyjście (stdout) i standardowe błędy (stderr) do pliku logu. To kluczowe dla monitorowania, czy backupy przebiegają pomyślnie.
Ograniczanie zużycia pasma sieciowego dzięki opcji --bwlimit
Podczas długotrwałych synchronizacji, zwłaszcza przez łącza o ograniczonej przepustowości, rsync może "zapchać" całe łącze, utrudniając korzystanie z sieci innym aplikacjom lub użytkownikom. Opcja --bwlimit=KILOBYTES_PER_SECOND pozwala na ograniczenie prędkości transferu danych do określonej wartości w kilobajtach na sekundę.
Na przykład, jeśli chcesz ograniczyć prędkość do 1 megabajta na sekundę (1 MB/s), co odpowiada 1024 kilobajtom na sekundę, użyjesz:
rsync -avz --bwlimit=1024 /sciezka/do/zrodla/ user@zdalny.serwer.com:/sciezka/do/celu/
Ta opcja jest szczególnie przydatna, gdy wykonujesz backupy w godzinach pracy i nie chcesz, aby transfer danych zakłócał normalne funkcjonowanie sieci.
Przeczytaj również: Jak ukryć kable przy podłodze i poprawić estetykę wnętrza
Tworzenie "przyrostowych" kopii zapasowych z wykorzystaniem --link-dest
Tradycyjne pełne kopie zapasowe zajmują dużo miejsca. Przyrostowe kopie zapasowe (incremental backups) to technika, która pozwala oszczędzić miejsce, kopiując tylko zmienione pliki, ale jednocześnie zachowując pełną strukturę katalogów dla każdej wersji backupu. rsync radzi sobie z tym elegancko dzięki opcji --link-dest.
Jak to działa? --link-dest nakazuje rsync, aby przed skopiowaniem pliku sprawdził, czy jego identyczna wersja istnieje w określonym "katalogu referencyjnym" (czyli poprzedniej kopii zapasowej). Jeśli plik jest identyczny, rsync nie kopiuje go ponownie, lecz tworzy do niego twardy link (hard link) w nowej kopii zapasowej. Twardy link to wskaźnik do tego samego pliku na dysku, co oznacza, że plik fizycznie zajmuje miejsce tylko raz, niezależnie od tego, ile twardych linków do niego istnieje.
W ten sposób każda kolejna kopia zapasowa wygląda jak pełna kopia (zawiera wszystkie pliki), ale faktycznie zajmuje miejsce tylko dla nowo utworzonych lub zmodyfikowanych plików. Jest to niezwykle efektywne pod względem przestrzeni dyskowej.
Przykład koncepcyjny dla backupu inkrementalnego:
# Zakładamy, że "ostatni_backup" to katalog z poprzednią kopią
# "nowy_backup" to miejsce na aktualną kopię
rsync -av --link-dest=/mnt/backup/ostatni_backup/ /sciezka/do/zrodla/ /mnt/backup/nowy_backup/
Aby to działało, musisz odpowiednio zarządzać nazwami katalogów backupów (np. używając daty jako nazwy katalogu) i zawsze wskazywać na najnowszą pełną kopię jako --link-dest dla kolejnego backupu. To zaawansowana technika, która wymaga starannego planowania, ale oferuje ogromne korzyści w zarządzaniu przestrzenią dyskową dla kopii zapasowych.
