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írsync
komprimovat 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 volbyrsync
se 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žnostirsync
odstraní 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í jersync
nakonfigurová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.