Pokud potřebujete efektivně a bezpečně přenášet soubory mezi dvěma servery nebo počítači, jednou z nejlepších možností je použití nástroje rsync
v kombinaci s SSH (Secure Shell). Tento postup je oblíbený mezi administrátory serverů a vývojáři díky své rychlosti, flexibilitě a schopnosti synchronizovat data bezpečnou cestou. V tomto článku se podíváme na to, jak přesně funguje kopírování souborů pomocí rsync
přes SSH, jak nastavit jednotlivé kroky a jaké možnosti tento nástroj nabízí.
Co je rsync a proč ho používat?
rsync
(Remote Sync) je nástroj, který slouží k přenosu a synchronizaci souborů mezi dvěma místy, přičemž optimalizuje přenos dat. Mezi jeho hlavní výhody patří:
- Inkrementální kopírování: Přenáší pouze změněné soubory nebo části souborů, což šetří čas i přenosovou šířku.
- Flexibilita: Může být použit pro lokální i vzdálené kopírování.
- Bezpečnost: V kombinaci s SSH je přenos šifrován, což zaručuje, že data nebudou odposlouchávána nebo pozměněna během přenosu.
- Komprese: Možnost komprimovat data během přenosu pro snížení objemu přenášených dat.
- Automatizace: Snadná integrace do skriptů a automatizovaných úloh.
Jak funguje SSH v kombinaci s rsync?
SSH zajišťuje bezpečný šifrovaný kanál pro přenos dat. Když používáte rsync
s SSH, všechny přenášené soubory jsou zašifrovány, což chrání citlivá data před neoprávněným přístupem.
Syntaxe příkazu pro kopírování souborů pomocí rsync
přes SSH je následující:
rsync -avz -e ssh zdrojová_složka/ uživatel@server:/cílová_složka/
Zde je rozpis jednotlivých parametrů:
- -a: Archivní režim, který zachová symbolické odkazy, oprávnění, časové značky a další atributy souborů.
- -v: Verbose mód, který vypisuje průběh kopírování do terminálu.
- -z: Komprimuje data během přenosu.
- -e ssh: Určuje, že přenos bude probíhat přes SSH.
Praktický příklad kopírování pomocí rsync přes SSH
Řekněme, že máte složku s názvem projekt
, kterou chcete zkopírovat z lokálního počítače na vzdálený server. Na serveru máte uživatelský účet s názvem uzivatel
a cílová složka je umístěna v /home/uzivatel/projekty/
. Příkaz pro tento přenos bude vypadat takto:
rsync -avz -e ssh ~/projekt/ uzivatel@server:/home/uzivatel/projekty/
Tento příkaz:
- Využije
rsync
k rekurzivnímu kopírování všech souborů a podsložek ze složky projekt
.
- Data budou komprimována pomocí parametru
-z
.
- Přenos proběhne přes SSH, což zaručí šifrování.
Další možnosti a parametry rsyncu
Jednou z nejsilnějších vlastností rsync
je jeho široká škála parametrů, které můžete přizpůsobit podle svých potřeb. Zde jsou některé užitečné možnosti:
-
--delete: Tento parametr zajišťuje, že v cílové složce budou smazány soubory, které byly odstraněny ve zdrojové složce. Tento přístup je vhodný pro přesné zrcadlení obsahu mezi servery.
rsync -avz --delete -e ssh ~/projekt/ uzivatel@server:/home/uzivatel/projekty/
- --progress: Pokud chcete sledovat průběh kopírování, použijte tento parametr, který zobrazí informace o velikosti souborů a rychlosti přenosu.
rsync -avz --progress -e ssh ~/projekt/ uzivatel@server:/home/uzivatel/projekty/
- --exclude: Tato volba umožňuje vyloučit určité soubory nebo adresáře z kopírování. Například, pokud nechcete přenášet skryté soubory (začínající tečkou), můžete je vynechat takto:
rsync -avz --exclude '.*' -e ssh ~/projekt/ uzivatel@server:/home/uzivatel/projekty/
Automatizace a plánování úloh s rsync
Jednou z výhod rsync
je jeho schopnost snadno se integrovat do plánovaných úloh pomocí nástrojů jako je cron
v Unixových systémech. Tímto způsobem můžete nastavit automatické zálohování nebo synchronizaci souborů mezi servery. Zde je příklad jednoduché cron úlohy, která bude provádět zálohu každou noc ve 2:00 ráno:
0 2 * * * rsync -avz -e ssh ~/projekt/ uzivatel@server:/home/uzivatel/projekty/
Použití rsync
v kombinaci s SSH je výkonný nástroj pro bezpečné, efektivní a flexibilní kopírování a synchronizaci souborů mezi dvěma počítači nebo servery. Díky široké škále parametrů lze přizpůsobit konkrétním potřebám a jeho integrace do skriptů a automatizovaných úloh z něj činí nepostradatelný nástroj pro správu dat a záloh.