Polecenie rsync to jedno z najpotężniejszych narzędzi do synchronizacji i kopiowania danych w systemach Linux, umożliwiające szybki transfer plików lokalnie oraz przez sieć z zachowaniem uprawnień i struktury katalogów.
1. Co to jest rsync i do czego służy
rsync umożliwia:
- synchronizację plików i katalogów – sprawnie kopiuje tylko zmiany (tzw. różnice delta), skracając czas i obciążenie sieci;
- tworzenie kopii zapasowych – zarówno lokalnie, jak i na zdalnych serwerach;
- przesyłanie danych przez SSH w sposób bezpieczny.
Kluczowe cechy:
- kopiowanie różnicowe;
- wsparcie dla zachowania uprawnień, dat, struktur katalogów;
- bardzo wiele opcji pozwala precyzyjnie kontrolować proces kopiowania i synchronizacji.
2. Instalacja rsync
Krok 1: Sprawdź, czy rsync jest zainstalowany –
rsync --version
Jeśli nie jest zainstalowany, użyj menedżera pakietów. Przykłady:
- Debian/Ubuntu:
sudo apt-get install rsync
- CentOS/Fedora:
sudo yum install rsync
Większość dystrybucji ma już rsync w standardzie.
3. Podstawowa składnia
rsync [opcje] źródło cel
- źródło – plik lub katalog, który kopiujesz/synchronizujesz.
- cel – miejsce docelowe (lokalne lub zdalne).
4. Najważniejsze opcje rsync
- -r – rekurencyjne kopiowanie katalogów
- -a – tryb archiwalny (zachowanie uprawnień, własności, dat itp.)
- -v – tryb gadatliwy (więcej informacji na ekranie)
- -z – kompresja podczas transferu
- –delete – kasowanie w celu plików nieistniejących już w źródle
- -u – pomijanie (nie nadpisywanie) nowszych plików w miejscu docelowym
- -e – wskazanie protokołu zdalnego (np. SSH).
5. Przykłady użycia – Krok po kroku
5.1. Kopiowanie katalogów lokalnych
Synchronizacja katalogu A z B (na tym samym hoście) –
rsync -av /home/user/A/ /home/user/B/
/home/user/A/– źródło (z ukośnikiem na końcu!)./home/user/B/– cel.
5.2. Synchronizacja na zdalny serwer przez SSH
Kopiowanie katalogu na zdalny serwer –
rsync -avz /home/user/dane/ [email protected]:/backup/
- Dodatek
-zkompresuje transfer. - Domyślnie używany jest SSH.
Kopiowanie z serwera do siebie –
rsync -avz [email protected]:/backup/ /home/user/backup/
5.3. Usuwanie plików po stronie docelowej
Synchronizacja w pełni, kasowanie plików, które nie istnieją już w źródle –
rsync -av --delete /home/user/A/ /home/user/B/
Uwaga: opcja –delete usuwa z miejsca docelowego pliki, których nie ma już w źródle.
5.4. Wykluczanie określonych plików/katalogów
Możesz wykluczyć dane pliki:
rsync -av --exclude 'plik.txt' /src/ /dst/
Lub skorzystać z listy plików do wykluczenia za pomocą parametru --exclude-from=plik_lista.txt.
6. Ustawienia zaawansowane i automatyzacja
6.1. Schedulowanie (automatyczne kopie zapasowe)
Dodaj polecenie do crona:
crontab -e
Przykład (kopie co noc o pierwszej w nocy):
0 1 * * * rsync -av --delete /home/user/dane/ /media/backup/
6.2. Serwer rsync (usługa daemon)
Możliwe jest uruchomienie rsync jako serwera (daemon) do bardziej rozbudowanych zadań sieciowych.
- Plik konfiguracyjny:
/etc/rsyncd.conf - W pliku ustawiasz katalogi udostępniane, prawa dostępu, logowanie itp.
7. Bezpieczeństwo i najlepsze praktyki
- Zawsze przetestuj polecenie na małych zbiorach danych – użyj
-n(–dry-run), by zobaczyć, co by się stało bez rzeczywistego kopiowania. - Planuj synchronizacje w porach najmniejszego obciążenia systemu.
- Chroń transfer siedziowy przez SSH (domyślne zachowanie przy połączeniu zdalnym).
8. Częste błędy i ich unikanie
- Błędne użycie ukośnika („/”) na końcu ścieżek!
/src/vs/src– mają inne znaczenie w kontekście kopiowania. - Nadpisywanie nowszych plików – użyj
-u, aby tego uniknąć. - Brak
--delete– stare pliki nie są usuwane z celu.
9. Dodatkowe źródła i dokumentacja
- Sprawdź stronę man:
man rsync - Oficjalna dokumentacja online oraz przewodniki społeczności linuksowych.
rsync to standard w zarządzaniu kopiami zapasowymi i synchronizacją danych na Linuksie. Odpowiednie wykorzystanie jego opcji pozwoli oszczędzić miejsce, czas i zapobiec utracie ważnych plików.



