Rsync je rychlý a mimořádně všestranný nástroj pro kopírování souborů. Může kopírovat lokálně, do/z jiného hostitele přes libovolný vzdálený shell nebo do/ze vzdáleného démona rsync. Nabízí velké množství možností, které řídí každý aspekt jeho chování a umožňují velmi flexibilní specifikace sady souborů ke kopírování. Je známý svým algoritmem delta-transfer, který snižuje množství dat odesílaných přes síť tím, že posílá pouze rozdíly mezi zdrojovými soubory a existujícími soubory v cíli. Rsync se široce používá pro zálohování a zrcadlení a jako vylepšený příkaz pro kopírování pro každodenní použití.
Rsync najde soubory, které je třeba přenést, pomocí algoritmu „rychlé kontroly“ (ve výchozím nastavení), který hledá soubory, které se změnily ve velikosti nebo v čase poslední změny. Jakékoli změny v ostatních zachovaných atributech (podle požadavků voleb) se provedou přímo v cílovém souboru, když rychlá kontrola ukáže, že data souboru není třeba aktualizovat.
Některé z dalších funkcí rsync jsou
- podpora kopírování odkazů, zařízení, vlastníků, skupin a oprávnění
- možnosti vylučování a vylučování podobné jako u GNU tar
- režim vyloučení CVS pro ignorování stejných souborů, které by ignorovalo CVS
- může používat jakýkoli transparentní vzdálený shell, včetně ssh nebo rsh
- nevyžaduje oprávnění superuživatele
- řetězení přenosů souborů za účelem minimalizace nákladů na latenci
- podpora anonymních nebo ověřených démonů rsync (ideální pro zrcadlení)
Syntaxe
Základní syntaxe příkazu rsync je:
# rsync options source destination
Některé z běžně používaných možností:
- –smazat :odstranit soubory, které u odesílatele (systému) neexistují.
- -v :Podrobný výstup
- -e „možnosti ssh“ :zadejte ssh jako vzdálený shell
- -a :režim archivace
- -r :návrat do adresářů
- -z :komprimovat data souboru
Příklady příkazů rsync v Linuxu
synchronizace souborů a adresářů v místním systému
# rsync -zvr /usr/ /root/sync-data/
Výše uvedený příkaz zkopíruje nebo synchronizuje všechny soubory a adresáře složky /usr do složky /root/sync-data.
místně synchronizovat soubory se zachováním oprávnění
-a možnosti dělají následující:poskytuje rekurzivní funkce a zachovává oprávnění, symbolické odkazy, informace o uživatelích a skupinách.
# rsync -azv /usr/ /root/sync-data/
synchronizace/kopírování souborů z místního počítače na vzdálený server
# rsync -avz /root/sync-data/ [email protected]:/tmp
Výše uvedený příkaz zkopíruje data složky /root/syc-data na vzdálený počítač s pověřeními uživatele root ve složce /tmp.
synchronizace/kopírování souborů ze vzdáleného serveru na místní počítač
# rsync -avz [email protected]:/tmp/src /opt [email protected]'s password: receiving file list ... done src/ src/debug/ src/kernels/ sent 38 bytes received 99 bytes 10.96 bytes/sec total size is 0 speedup is 0.00
Výše uvedený příkaz zkopíruje složku /tmp/src vzdáleného serveru do složky /opt místního počítače.
Vzdálená synchronizace přes ssh
rsync nám umožňuje synchronizovat soubory se vzdáleným počítačem a naopak přes ssh, tj. zabezpečenou komunikaci. Pomocí „rsync -e ssh“ specifikujte, který vzdálený shell se má použít. V našem případě rsync použije ssh.
# rsync -avz -e ssh [email protected]:/var/lib/rpm /opt The authenticity of host '192.168.2.149 (192.168.2.149)' can't be established. RSA key fingerprint is 45:fc:99:57:34:ba:6a:bb:e3:6f:00:bb:ca:15:3d:c3. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.2.149' (RSA) to the list of known hosts. [email protected]'s password: receiving file list ... done rpm/ rpm/.rpm.lock rpm/Basenames rpm/Conflictname ............ rpm/Triggername sent 422 bytes received 12521670 bytes 115410.99 bytes/sec total size is 35467264 speedup is 2.83
Zobrazit průběh synchronizace
Pro zobrazení průběhu synchronizace můžeme použít volbu „–progress“.
# rsync -avz --progress [email protected]:/usr /opt [email protected]'s password: receiving file list ... 44609 files to consider usr/ usr/tmp -> ../var/tmp usr/bin/ usr/bin/.fipscheck.hmac 65 100% 63.48kB/s 0:00:00 (xfer#1, to-check=44605/44609) usr/bin/.ssh.hmac 65 100% 63.48kB/s 0:00:00 (xfer#2, to-check=44604/44609) usr/bin/GET 14519 100% 248.75kB/s 0:00:00 (xfer#3, to-check=44603/44609) usr/bin/HEAD 14519 100% 232.44kB/s 0:00:00 (xfer#4, to-check=44602/44609) ............
Zahrnout a vyloučit možnosti v rsync
rsync nám umožňuje určit vzor, který chceme zahrnout a vyloučit soubory nebo adresáře během synchronizace.
# rsync -avz --include 'P*' --exclude '*' [email protected]:/var/lib/rpm/ /opt [email protected]'s password: receiving file list ... done ./ Packages Providename Provideversion Pubkeys sent 129 bytes received 9395561 bytes 695977.04 bytes/sec total size is 28999680 speedup is 3.09
Výše uvedený příklad zahrnuje pouze soubory nebo adresáře začínající na „P“ a vylučuje všechny ostatní soubory. (pomocí rsync vyloučit ‚*‘)
Smažte soubory v cíli, pokud soubory nejsou přítomny ve zdroji
Pomocí možnosti „–delete“ v rsync můžeme smazat soubory vytvořené v cíli, pokud stejné soubory nejsou přítomny ve zdroji.
# rsync -avz --delete [email protected]:/var/lib/rpm/ /opt
PŘÍKLAD:9 ZOBRAZENÍ ZMĚN MEZI ZDROJEM A CÍLEM POMOCÍ VOLBY „-I“
Zobrazení změn mezi zdrojem a cílem
Změny mezi zdrojovými a cílovými soubory můžete zobrazit pomocí volby „-i“. Například:
# rsync -avzi [email protected]:/var/lib/rpm/ /opt [email protected]'s password: receiving file list ... done >f+++++++ .rpm.lock >f+++++++ Basenames >f+++++++ Conflictname >f+++++++ Dirnames >f+++++++ Filedigests >f+++++++ Group >f+++++++ Installtid >f+++++++ Name >f+++++++ Obsoletename >f+++++++ Requirename >f+++++++ Requireversion >f+++++++ Sha1header >f+++++++ Sigmd5 >f+++++++ Triggername sent 328 bytes received 3126214 bytes 297765.90 bytes/sec total size is 35467264 speedup is 11.34
Omezte velikost přenosového souboru
Pomocí možnosti „–max-size“ můžete přinutit rsync nepřenášet soubory, které jsou větší než určitá velikost.
# rsync -avz --max-size='200k' [email protected]:/var/lib/rpm/ /opt
Výše uvedený příkaz způsobí, že rsync přenese pouze soubory, které jsou menší nebo rovné 200 kB. Můžeme označit M pro megabajty a G pro gigabajty.