Polecenie rsync w Linuksie: opcje i przykłady użycia

Informacja o linkach partnerskich v3.1
Informacja o linkach partnerskich v3.2 (wersja mobilna)
Środowisko testoweRodzina RHELAlmaLinux 9.8konto rootSprawdzono 07.10.2026

Jeśli za każdym razem kopiujesz cały folder, by zsynchronizować dwa serwery, transfer ma pełny rozmiar, nawet gdy zmienił się tylko jeden plik. Polecenie rsync to skrót od remote sync. Porównuje źródło z celem i wysyła tylko różniące się pliki, działając tak samo między folderami lokalnymi i między serwerami połączonymi przez SSH. Ten wpis omawia podstawy, opcje i przykłady dwóch metod połączenia: SSH i demona rsync.

Wyniki w tym wpisie pochodzą z rsync 3.2.7 w AlmaLinux 9.8. Jeśli rsync nie jest zainstalowany, zainstaluj go menedżerem pakietów.

# rodzina RHEL
dnf -y install rsync
# rodzina Debian
apt -y install rsync

✅ Podstawowe użycie

Podstawowa składnia wygląda tak.

rsync -opcje źródło cel

Podobnie jak w poleceniu cp, najpierw wpisz źródło, a po nim cel. Ukośnik [/] na końcu źródła sprawia, że do celu trafia tylko zawartość folderu; bez niego trafia cały folder.

~]# rsync -av www/ backup/
sending incremental file list
index.html
img/
img/logo.png
~]# rsync -av www backup/
sending incremental file list
www/
www/index.html
www/img/
www/img/logo.png

Uruchom to samo polecenie ponownie, a lista plików będzie pusta, a liczba bajtów sent spadnie do kilkuset. Pliki o tym samym rozmiarze i czasie modyfikacji są pomijane.

~]# rsync -av www/ backup/
sending incremental file list

sent 166 bytes  received 13 bytes  358.00 bytes/sec
total size is 3,015  speedup is 16.84

Z samym -r, bez -a, czasy modyfikacji nie są zachowywane, więc następne uruchomienie znowu wyśle te same pliki. Przy synchronizacji folderów domyślnie używaj -a.

Opcja -n pokazuje tylko, które pliki by się zmieniły, niczego nie przesyłając, a wynik kończy się [(DRY RUN)]. Opcje usuwające pliki w celu, jak --delete, najpierw sprawdź przez -n, a dopiero potem uruchom naprawdę.

~]# rsync -avn --delete www/ backup/
sending incremental file list
deleting old.bak
index.html

sent 188 bytes  received 39 bytes  454.00 bytes/sec
total size is 3,013  speedup is 13.27 (DRY RUN)

✅ Opcje polecenia rsync & symulator

OpcjaOpis
-a--archiveKopiuje też podkatalogi i zachowuje uprawnienia, właściciela, czas modyfikacji i dowiązania symboliczne (to samo co -rlptgoD)
-v--verboseWypisuje nazwę każdego przesłanego pliku i sumy transferu
-z--compressKompresuje dane plików podczas transferu
-r--recursiveKopiuje też podkatalogi (zawarte w -a)
-t--timesZachowuje czasy modyfikacji (zawarte w -a). To decyduje, które pliki zostaną pominięte przy następnym uruchomieniu
-n--dry-runPokazuje tylko pliki, które by się zmieniły, bez transferu, i oznacza koniec przez (DRY RUN)
-u--updatePomija pliki nowsze w miejscu docelowym
-h--human-readableWypisuje bajty w jednostkach K, M i G
-PTo samo co --partial --progress. Pokazuje postęp dla każdego pliku i wznawia przerwane transfery
-i--itemize-changesWypisuje kodem, co zmieniło się w każdym pliku>f+++++++++ nowy plik · >f.st...... zmiana rozmiaru i czasu · *deleting usunięty
-e--rsh=COMMANDOkreśla powłokę zdalną-e 'ssh -p 2222 -i /root/.ssh/key.pem'
--deleteUsuwa z celu pliki, których nie ma już w źródle (wymaga -r lub -a)
--exclude=PATTERNWyklucza pliki i katalogi pasujące do wzorca--exclude '*.tmp' --exclude 'cache/'
--include=PATTERNUmieszczone przed --exclude wyłącza tylko ten wzorzec z wykluczenia
--max-size=SIZENie przesyła plików większych niż podany rozmiar (--min-size dla mniejszych)--max-size=3M --min-size=10k
--bwlimit=RATEOgranicza szybkość transferu, w KiB/s
--statsWypisuje liczbę plików i statystyki transferu
Symulator polecenia rsyncrsync 3.2.7
[root@server work]#
Działa tylko w przeglądarce i nie dotyka prawdziwych plików. Folder www to źródło, a folder backup to poprzednia kopia zapasowa. Wpisuj rsync z różnymi opcjami i sprawdzaj wynik przez ll, cat i diff. Adresy zdalne (user@host:ścieżka) są przyjmowane tylko składniowo; połączenie nie jest nawiązywane. Naciśnij [Start over], aby cofnąć zmiany. Klawiszami ↑↓ przywołasz wcześniejsze polecenia, a wpisanie uknew help pokaże dostępne polecenia.

✅ Metody połączenia: SSH i demon rsync

Są dwa sposoby połączenia ze zdalnym serwerem. Jeden dwukropek [:] po hoście idzie przez SSH; podwójny dwukropek [::] łączy się bezpośrednio z demonem rsync na porcie 873.

RodzajMetoda SSH (:)Metoda demona rsync (::)
Składniarsync -opcje user@host:/ścieżka /lokalna/ścieżkarsync -opcje host::moduł/ścieżka /lokalna/ścieżka
PortPort SSH (domyślnie 22)873
SzyfrowanieSzyfrowane przez SSHBrak szyfrowania
UwierzytelnianieKlucz SSH lub hasłohosts allow w rsyncd.conf; konto i hasło opcjonalnie
Konfiguracja po stronie serweraBrak (działa, gdy działa dostęp SSH)Instalacja rsync-daemon, /etc/rsyncd.conf, otwarcie portu 873
PrzeznaczenieKopie zapasowe i wdrożenia między serwerami (domyślny wybór)Kopiowanie lustrzane w sieci wewnętrznej bez rozdawania kont SSH

🔲 Metoda SSH

Jeśli masz dostęp do serwera przez SSH, działa bez konfiguracji po stronie serwera. Gdy port jest inny albo używasz pliku klucza, wstaw polecenie ssh w niezmienionej postaci do opcji -e.

# lokalnie → zdalnie
rsync -avz /home/2server_data/ root@192.168.45.239:/home/1server_data/
# zdalnie → lokalnie
rsync -avz root@192.168.45.239:/home/1server_data/html_Remote /home/2server_data
# port SSH i plik klucza
rsync -avz -e 'ssh -p 2222 -i /root/.ssh/key.pem' root@192.168.45.239:/home/1server_data/ /home/2server_data
Polecenie rsync: wynik ze zdalnego na lokalny

Aby pominąć określone pliki lub katalogi, dodaj --exclude raz dla każdego wzorca albo zgrupuj wzorce w nawiasach klamrowych i wpisz je raz.

rsync -avz --exclude 'html_Remote_Excertion' --exclude 'Exception_File' root@192.168.45.239:/home/1server_data/ /home/2server_data
rsync -avz --exclude={'html_Remote_excertion/*','Exception_File'} root@192.168.45.239:/home/1server_data/ /home/2server_data
Polecenie rsync: ze zdalnego na lokalny z wykluczeniem określonych plików i katalogów

🔲 Metoda demona rsync

Demon rsync daje dostęp do modułów na porcie 873 bez konta SSH. Ruch nie jest szyfrowany, więc używa się go między serwerami w tej samej sieci wewnętrznej.

W AlmaLinux 9 zainstaluj pakiet rsync-daemon i uruchom usługę. Na serwerach z firewalld otwórz port 873; na serwerach w chmurze otwórz go w zaporze w konsoli. Metoda xinetd z RHEL 8 i starszych zniknęła w 9.

dnf -y install rsync-daemon
systemctl enable --now rsyncd
firewall-cmd --permanent --add-port=873/tcp
firewall-cmd --reload

W pliku konfiguracyjnym [/etc/rsyncd.conf] ustaw nazwę modułu, ścieżkę i dozwolone hosty. Przy read only ustawionym na yes zdalni klienci mogą tylko pobierać.

[myhome]
path = /home
uid = root
gid = root
use chroot = yes
read only = yes
hosts allow = 192.168.45.182
max connections = 3
timeout = 30

Po stronie zdalnej sam podwójny dwukropek po hoście wypisuje moduły; dodanie nazwy modułu pokazuje pliki w środku.

~]# rsync 192.168.45.239::
myhome
home
~]# rsync 192.168.45.239::myhome
drwxr-xr-x          4,096 2025/06/12 22:14:39 .
drwxr-xr-x          4,096 2025/06/12 22:21:10 1server_data
drwxr-xr-x          4,096 2025/06/12 22:14:39 2server_data

Kopiowanie ma postać [host::moduł/ścieżka]. --delete usuwa z celu pliki, których nie ma w źródle, a --include wyłącza z wykluczenia tylko pozycje umieszczone przed --exclude.

~]# rsync -avz 192.168.45.239::myhome/1server_data/ /home/2server_data/
receiving incremental file list
./
Exception_File
html_Remote/
html_Remote_Excertion/

sent 58 bytes  received 332 bytes  780.00 bytes/sec
total size is 442  speedup is 1.13
~]# rsync -avz --delete 192.168.45.239::myhome/1server_data/ /home/2server_data/
~]# rsync -avz --include '*.html' --exclude 'exclude.txt' 192.168.45.239::myhome/1server_data/ /home/2server_data/
Polecenie rsync: ze zdalnego na lokalny z opcją delete
Polecenie rsync: ze zdalnego na lokalny z opcjami delete, include i exclude

Na serwerze z włączonym SELinux dostęp do ścieżki modułu może zostać zablokowany komunikatem [Permission denied (13)]. W teście przeszło po wyłączeniu SELinux poleceniem [setenforce 0].

~]# rsync -avz 192.168.45.239::myhome/1server_data/ /home/2server_data/
receiving incremental file list
rsync: change_dir "/1server_data" (in myhome) failed: Permission denied (13)
sent 8 bytes  received 90 bytes  65.33 bytes/sec
total size is 0  speedup is 0.00
rsync error: some files/attrs were not transferred (see poprzedni errors) (code 23) at main.c(1658) [Receiver=3.1.2]

--bwlimit ogranicza szybkość transferu w KiB/s, a z -P widać też postęp każdego pliku. --max-size i --min-size przesyłają tylko pliki w podanym zakresie rozmiaru.

rsync -avzP --bwlimit=100 192.168.45.239::myhome/1server_data/ /home/2server_data/
rsync -avz --max-size='3M' --min-size='10k' 192.168.45.239::myhome/1server_data/ /home/2server_data/
Polecenie rsync: ze zdalnego na lokalny, przepustowość ograniczona do 100kb i postęp przez -P

ℹ️ Informacja o linkach partnerskich
Treści tej witryny zawierają linki partnerskie. Jeśli odwiedzający kupi produkt lub usługę przez taki link, witryna otrzymuje od sprzedawcy prowizję. Kwota płacona przy tym przez kupującego (podczas promocji spada↓) nie wzrasta. Podane ceny, rabaty i dostępność odnoszą się do chwili pisania i mogą różnić się od stanu faktycznego, dlatego przed zakupem sprawdź je u sprzedawcy. Produkty wybieramy i oceniamy według własnych kryteriów, a prowizja nie wpływa ani na kolejność prezentacji, ani na treść ocen.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *

Prove your humanity: 1   +   3   =