Skip to Content
🔥 Nová dokumentace BlazeHost.cz je online — prohlédnout

rsync a scp

Oba nástroje kopírují soubory přes SSH. scp je jednoduché a rychlé na jeden soubor, rsync je chytřejší a nezbytný při migraci celého serveru.

scp

scp funguje jako cp, jen zdroj nebo cíl může být na vzdáleném serveru.

# Soubor na server scp zaloha.sql [email protected]:/home/vojta/ # Soubor ze serveru k sobe scp [email protected]:/var/log/app.log ./ # Cela slozka (rekurzivne) scp -r ./web [email protected]:/var/www/

Když běží SSH na jiném portu než 22, u scp se port zadává velkým -P (scp -P 2222 ...). U rsync a ssh je to malé -p — snadno se to plete.

rsync

rsync přenáší jen změněné části souborů. Přerušený přenos umí navázat a při opakování nekopíruje, co už na cíli je.

# Zakladni synchronizace pres ssh rsync -avz ./web/ [email protected]:/var/www/web/ # Ze serveru k sobe rsync -avz [email protected]:/var/www/web/ ./web/
PřepínačVýznam
-aarchivní režim (práva, časy, symlinky)
-vpodrobný výpis
-zkomprese při přenosu
--progressprůběh u velkých souborů
--excludevynechání souborů podle vzoru
--deletesmazání v cíli, co není ve zdroji

Lomítko na konci zdroje rozhoduje. web/ zkopíruje obsah složky, web zkopíruje celou složku včetně jejího jména. Snadný zdroj překvapení.

Vynechání souborů

rsync -avz --exclude 'node_modules' --exclude '*.log' \ ./app/ [email protected]:/var/www/app/

Přerušený přenos

rsync navazuje sám. Když spojení spadne, jen příkaz spustíš znovu a dokopíruje zbytek. Pro obnovení jednoho velkého souboru přidej --partial:

rsync -avz --partial --progress velky-soubor.img [email protected]:/backup/

scp vs rsync

scprsync
Rychlost opakovaného přenosukopíruje vše znovujen změny
Přerušený přenoszačíná od začátkunaváže
Vynechání souborůne--exclude
Synchronizace (mazání)ne--delete
Jednoduchostvyššío něco složitější

Na jeden soubor sáhni po scp. Na složky, opakované přenosy a migrace vždycky rsync — ušetří ti čas i data.

Migrace serveru

Při stěhování na nový VPS přeneseš data i konfiguraci jedním rsyncem. Nejdřív nanečisto, ať víš, co se stane:

# Zkouska nanecisto - nic se nezkopiruje rsync -avz --dry-run --delete ./data/ vojta@novy-server:/srv/data/ # Ostry beh rsync -avz --delete ./data/ vojta@novy-server:/srv/data/

rsync --delete smaže v cíli všechny soubory, které nejsou ve zdroji. Když si spleteš směr přenosu nebo zapomeneš lomítko, přijdeš o data. Vždy nejdřív spusť s --dry-run a výpis si přečti.

Tipy

  • Používej SSH klíče. Nebudeš u každého přenosu psát heslo a rsync ve smyčce projde bez zádrhelu.
  • Přidej --progress u velkých přenosů. Uvidíš, že se něco děje.
  • Migruj přes screen nebo tmux. Přenos přežije i výpadek tvého spojení.

Poznámka

Pro pravidelné zálohy zabal rsync do skriptu a spusť přes cron. Postup najdeš v článku Zálohování dat.

Související články