rsync je rychlý a univerzální nástroj příkazového řádku pro synchronizaci souborů a adresářů mezi dvěma umístěními přes vzdálený shell nebo z/do vzdáleného démona Rsync. Poskytuje rychlý inkrementální přenos souborů tím, že přenáší pouze rozdíly mezi zdrojem a cílem.
Rsync lze použít pro zrcadlení dat, inkrementální zálohování, kopírování souborů mezi systémy a jako náhradu příkazů scp, sftp a cp.
V tomto článku je vysvětleno použití nástroje rsync na praktických příkladech a podrobném vysvětlení nejčastějších možností nástroje rsync.
Instalace nástroje Rsync #
Utilita rsync je předinstalována ve většině distribucí systému Linux a MacOS. Pokud rsync nemáte ve svém systému nainstalovaný, můžete jej snadno nainstalovat pomocí správce balíčků své distribuce.
Instalace příkazu Rsync v Ubuntu a Debianu #
sudo apt install rsync
Instalace příkazu Rsync v systémech CentOS a Fedora #
sudo yum install rsync
Syntaxe příkazu Rsync #
Než se pustíme do používání příkazu rsync, začneme přehledem základní syntaxe.
Výrazy nástroje rsync mají následující podobu:
Local to Local: rsync ... ... DESTLocal to Remote: rsync ... ... HOST:DESTRemote to Local: rsync ... HOST:SRC...
-
OPTION– Možnosti rsync. -
SRC– Zdrojový adresář. -
DEST– Cílový adresář. -
USER– Vzdálené uživatelské jméno. -
HOST– Vzdálené jméno hostitele nebo IP adresa.
rsync poskytuje řadu možností, které řídí chování příkazu. Nejpoužívanější volby jsou:
-
-a,--archive, archivní režim, ekvivalentní volbě-rlptgoD. Tato volba říkársync, aby synchronizoval adresáře rekurzivně, přenášel speciální a bloková zařízení, zachovával symbolické odkazy, časy modifikací, skupiny, vlastnictví a oprávnění. -
-z,--compress. Tato volba přinutírsynckomprimovat data při jejich odesílání na cílový počítač. Tuto volbu použijte pouze v případě, že je připojení ke vzdálenému počítači pomalé. -
-P, ekvivalent--partial --progress. Při použití této volbyrsyncse během přenosu zobrazuje ukazatel průběhu a zachovávají se částečně přenesené soubory. Je užitečná při přenosu velkých souborů přes pomalé nebo nestabilní síťové připojení. -
--delete. Při použití této možnostirsyncodstraní cizí soubory z cílového umístění. Je užitečná při zrcadlení. -
-q,--quiet. Tuto volbu použijte, pokud chcete potlačit jiné než chybové zprávy. -
-e. Tato volba umožňuje zvolit jiný vzdálený shell. Ve výchozím nastavení jersyncnakonfigurován na použití ssh.
Základní použití Rsync #
Nejzákladnějším případem použití rsync je kopírování jednoho souboru z jednoho do jiného místního umístění. Zde je příklad:
rsync -a /opt/filename.zip /tmp/
Uživatel spouštějící příkaz musí mít oprávnění ke čtení ve zdrojovém umístění a oprávnění k zápisu v cílovém umístění.
Vyslání názvu souboru z cílového umístění zkopíruje soubor s aktuálním názvem. Pokud chcete soubor uložit pod jiným názvem, zadejte nový název v cílové části:
rsync -a /opt/filename.zip /tmp/newfilename.zip
Skutečná síla funkce rsync se projeví při synchronizaci adresářů. Následující příklad ukazuje, jak vytvořit místní zálohu souborů webové stránky:
rsync -a /var/www/domain.com/public_html/ /var/www/domain.com/public_html_backup/
Pokud cílový adresář neexistuje, rsync jej vytvoří.
Je třeba zmínit, že rsync odlišně zachází se zdrojovými adresáři s koncovým lomítkem (/). Pokud má zdrojový adresář koncové lomítko, zkopíruje příkaz do cílového adresáře pouze jeho obsah. Pokud je koncové lomítko vynecháno, příkaz rsync zkopíruje zdrojový adresář dovnitř cílového adresáře.
Použití příkazu rsync k synchronizaci dat z/do vzdáleného počítače #
Při použití příkazu rsync ke vzdálenému přenosu dat musí být nainstalován na zdrojovém i cílovém počítači. Nové verze rsync jsou nakonfigurovány tak, aby jako výchozí vzdálený shell používaly SSH.
V následujícím příkladu přenášíme adresář z místního na vzdálený stroj:
rsync -a /opt/media/ remote_user@remote_host_or_ip:/opt/media/
Chcete-li přenést data ze vzdáleného do místního počítače, použijte vzdálené umístění jako zdroj:
rsync -a remote_user@remote_host_or_ip:/opt/media/ /opt/media/
Pokud SSH na vzdáleném hostiteli naslouchá na jiném portu než na výchozím 22 , zadejte port pomocí možnosti -e:
rsync -a -e "ssh -p 2322" /opt/media/ remote_user@remote_host_or_ip:/opt/media/
Při přenosu velkého množství dat se doporučuje spustit příkaz rsync uvnitř relace obrazovky nebo použít volbu -P:
rsync -a -P remote_user@remote_host_or_ip:/opt/media/ /opt/media/
Vyloučit soubory a adresáře #
K dispozici jsou dvě možnosti vyloučení souborů a adresářů. První možností je použít argument --exclude a zadat soubory a adresáře, které chcete vyloučit, na příkazovém řádku.
Při vylučování souborů nebo adresářů je třeba použít jejich relativní cesty ke zdrojovému umístění.
V následujícím příkladu je ukázáno, jak vyloučit adresáře node_modules a tmp:
rsync -a --exclude=node_modules --exclude=tmp /src_directory/ /dst_directory/
Druhou možností je použít parametr --exclude-from a zadat soubory a adresáře, které chcete vyloučit, v souboru.
rsync -a --exclude-from='/exclude-file.txt' /src_directory/ /dst_directory/
node_modulestmp
Závěr #
Ukázali jsme si, jak pomocí nástroje Rsync kopírovat a synchronizovat soubory a adresáře. Na stránce Uživatelská příručka Rsync se toho o Rsync dozvíte mnohem víc.