Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Obě strany předchozí revize Předchozí verze Následující verze | Předchozí verze | ||
linux-hosts-backup [2009/07/18 14:37] petr |
linux-hosts-backup [2013/08/06 21:41] (aktuální) |
||
---|---|---|---|
Řádek 1: | Řádek 1: | ||
====== Zálohování více hostů pomocí rsync ====== | ====== Zálohování více hostů pomocí rsync ====== | ||
- | Na zálohování více linux strojů jsem se rozhodnul, že bych mohl použít aplikace rsnyc. Uvidíme, jak se nám pro tuto věc bude hodit. | + | Na zálohování více linux strojů jsem se rozhodnul, že bych mohl použít aplikace rsnyc. Uvidíme, jak se nám pro tuto věc bude hodit. Naše požadavky jsou zálohovat více linux serverů pomocí ssh |
===== Instalace rsync-e ===== | ===== Instalace rsync-e ===== | ||
- | Rsync určitě bude v každé distribuci linuxu. Kdyý ji ještě nemáme nainstalovanou, uděláme to. V Debianu : | + | Rsync určitě bude v každé distribuci linuxu. Když ji ještě nemáme nainstalovanou, uděláme to. V Debianu : |
<code> | <code> | ||
apt-get install rsync | apt-get install rsync | ||
Řádek 10: | Řádek 10: | ||
v Gentoo : | v Gentoo : | ||
<code> | <code> | ||
- | emerge rsync | + | emerge rsync |
</code> | </code> | ||
- | ===== Nastavení Horde,Horde-IMP ===== | + | ===== Přípravy před tvorbou skriptu ===== |
- | V příslušných adresářích si okopírujeme soubory z distribuce do pracovních souborů: | + | Pro zálohování vytvoříme na zálohovacím serveru ssh klíče, abychom je mohli distribuovat na zálohované servery a zajistit tak vzdálené přihlašování pomocí klíčů, bez zadávání hesel. Pri generování ssh klíče zadáme heslo. Finta je v tom, že pomocí aplikace keychain jsme schopni uchovat po zadání hesla toto v paměti. Samozřejmě po restartu zálohovacího serveru už heslo není v paměti a **MUSÍ** se pro zálohování znovu zadat, jinak sckript čeká na heslo. |
<code> | <code> | ||
- | cd /var/www/localhost/htdocs/horde/config | + | ssh-keygen -t dsa |
- | for f in *.dist ; do cp ${f} ${f/.dist} ; done | + | </code> |
- | cd /var/www/localhost/htdocs/horde-imp/config | + | Přeneseme veřejný ssh klíč na vzdálený server a po přihlášené k serveru je přidáme do ssh klíčů, které bude akceptovat při vzdáleném připojení. Následně vyzkoušíme přihlášení. Vzdálený server bude vyžadovat pouze heslo k ssh klíči (Enter passphrase for key '/root/.ssh/id_dsa') |
- | for f in *.dist ; do cp ${f} ${f/.dist} ; done | + | <code> |
+ | scp ~/.ssh/id_dsa.pub root@my-remote-server.com: | ||
+ | ssh root@my-remote-server.cz | ||
+ | cd .ssh | ||
+ | touch authorized_keys2 | ||
+ | chmod 600 authorized_keys2 | ||
+ | cat ../id_dsa.pub >> authorized_keys2 | ||
+ | rm ../id_dsa.pub | ||
+ | </code> | ||
+ | |||
+ | V jiném terminálu ověříme : | ||
+ | <code> | ||
+ | backup-server ~ # ssh root@my-remote-server.com | ||
+ | Enter passphrase for key '/root/.ssh/id_dsa': | ||
+ | Last login: Sat Jul 18 15:14:10 2009 from lululala.domena.com | ||
+ | remote-server1 ~ # | ||
+ | </code> | ||
+ | Takto přeneseme veřejný ssh klíč na všechny servery, ze kterých budeme pomocí rsync dělat zálohy. Co s tím, když u každého serveru potřebujeme zálohovat / vynechat určité adresáře? K tomu využijeme u rsync aplikace vhodného přepínače --exclude-from. | ||
+ | |||
+ | |||
+ | ===== Keychain pro zadávání passphrase ===== | ||
+ | Abychom mohli dát script do cron-u, musíme nějakým způsobem zajistit "automatické" zadávání passphrase pro ssh klíč. Na to se nám bude hodit šikovná aplikace keychain. U uživatele root do .bash_profile přidáme následující : | ||
+ | <code> | ||
+ | /usr/bin/keychain ~/.ssh/id_dsa | ||
+ | # sourcing my hostname | ||
+ | source ~/.keychain/$HOSTNAME-sh | ||
</code> | </code> | ||
- | V souboru horde-imp/config/servers.php nastavíme náš mailserver: | + | Následně se odhlásíme a přihlásíme. Při přihlášení se nás keychain zeptá na passphrase. Zadáme ji a máme ji v paměti. Tak a teď je ten okamžik, kdy už se můžeme s passphrase v paměti přihlásit ke vzdálenému serveru pomocí ssh a bez hesla dostaneme prompt :-) : |
<code> | <code> | ||
- | <?php | + | ssh root@my-remote-server.com |
- | $servers['imap'] = array( | + | |
- | 'name' => 'IMAP Server', | + | |
- | 'server' => 'localhost', | + | |
- | 'hordeauth' => false, | + | |
- | 'protocol' => 'imap/ssl/novalidate-cert', | + | |
- | 'port' => 993, | + | |
- | 'folders' => 'INBOX.', | + | |
- | 'namespace' => '', | + | |
- | 'maildomain' => 'mydomain.cz', | + | |
- | 'smtphost' => 'localhost', | + | |
- | 'smtpport' => 25, | + | |
- | 'realm' => '', | + | |
- | 'preferred' => '', | + | |
- | ); | + | |
</code> | </code> | ||