Synchronizac RSYNC

Rsync je super nástroj, ktorý Vám pomže v mnohých situáciach. Može služiť pre synchroniyovanie adresárov na lokalnom servery alebo synchronizovanie 2 a viacerých serverov.

Príklady rsync

Ukážeme si ako synchronizovať adresáre na jednom servery, medzi servermi a medzi jedným a n servermy. Taktiež si ukážeme ako používať rsync pomocou ssh klúčov.

Synchronizovanie adresárov

Základní príklad ukazuje ako synchronizovať dva adresáre.

rsync -avc --delete  --exclude /var/www/sessions /var/www/*  /var/www-backup/

Synchronizovanie 2-och servrov

Synchronizovanie 2 serverov je jednoduche e velmi podobné ako predchadzájúci príklad.

rsync -avc --delete   --exclude /var/www/sessions /var/www/*  root@backup.example.com:/var/www-backup/

Synchronizovanie n serverov

Vytvortíme bash script, ktorím budeme synchronizovat n serverov.

#!/bin/bash
SERVERS="192.168.1.2 192.168.1.3 192.168.1.4 192.168.1.5"

echo "## START SYNCHRONIZATION"

for srv in $SERVERS;
do
  echo "#### begin sync server: $srv"
  rsync -avc --delete -e ssh --exclude sessions --exclude cache --exclude logs /var/www/* root@${srv}:/var/www/
  echo "## end sync server: $srv"
done
echo "#### END SYNCHRONIZATION"

Synchrnizovanie serverov s ssh klucom

Vdaka synchronizácii s klúčmi možeme synchronivať viacere server aj pomocou crnou bez toho aby sme museli zadávať heslo. Je to veľmi užitočné hlavne pri HA(high avaliable) službách, keď potrebujete mať intime synchronizované viacere servre.

Vytvortíme bash script, ktorím budeme synchronizovat n serverov. Tentokrát však bude použivať ssh klúče, kvoli bezpečnosti a hlavne preto aby sa nás to nepitalo stále na heslo a mohli sme tak synchronizovať napr. pomovou cronu.

Vytváranie podísaných a nepodpísaných klúčov sme si vyveltili v sekcii ssh základy

#!/bin/bash

EXCLUDE="/var/www/logs"
SERVER="web01.example.com"
PATHTOKEY="/opt/keys/private/example-sync"

echo "## START sync www directory"
rsync -avc -e "ssh -c blowfish -i ${PATHTOKEY}" --exclude-from=${EXCLUDE} /var/www/* glogster@$SERVER:/var/www/
echo "## END sync www directory"

Personal Tools