Programování keyboard_arrow_right Linux keyboard_arrow_rightZálohování dat v Linuxu na externí server ..

Zálohování dat v Linuxu na externí server za pomoci Rsync a Cronu
Občas se stane, že potřebujete zautomatizovat zálohu dat synchronizací složek na dvou odlišných Linux serverech. Pokud je tohle váš případ, můžu vám poradit jak toto udělat na Linux systému Cent OS 7 nebo Debian.
Výsledkem bude, že se Vám bude spouštět každé dvě hodiny automaticky synchronizace, která nahraje chybějící soubory na serveru B ze serveru A.
1. První se ujistěte, že máte nainstalován rsync a SSH ve vašem Linux operačním systému:
sudo yum -y install ssh rsync
sudo apt install ssh rsync
2. Přihlašte se na server B
Na serveru B vytvoříme složku kam budeme později nahrávat data ze serveru A. Pro přihlášení použijte ideálně root uživatele.
2.1 - Vytvoříme na serveru B složku
mkdir -p /var/zaloha
2.2 - Pomocí příkazu ss-keygen si necháme vygenerovat public key a private key, které budeme potřebovat a díky nimž později dokážeme rsync zautomatizovat (nebude potřeba zadávat heslo). Nevyplňujte passphrase, ani nic jiného - pouze klikejte na ENTER!
ssh-keygen
2.3 Takto vygenerovaný public key si ze serveru B zkopírujeme na server A
scp /root/.ssh/id_rsa.pub root@A.cz:/root/id_rsa.pub
3. Přihlašte se na server A
Opět ideálně jako root!
3.1 - Vytvoříme soubor authorized_keys
Postupujte přesně podle návodu, včetně oprávnění, jinak vám synchronizace nemusí fungovat.
mkdir -p /root/.ssh
chmod 700 /root/.ssh
touch /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
3.2 - Vložíme do souboru authorized_keys public key
V kroku 2.3 jsme si na server A poslali public key a měli bychom jej najít zde: /root/.ssh/id_rsa.pub
, takže si zkopírujeme obsah public key a vložíme do nově vytvořeného souboru authorized_keys
cat /root/id_rsa.pub >> /root/.ssh/authorized_keys
4. Přihlašte se na server B
Nyní máme vše připraveno, požadavek na synchronizaci budeme spouštět na serveru B a protože chceme naši synchronizaci zautomatizovat použijeme k tomu CRON ÚLOHU
4.1 - Otevřete si soubor /etc/crontab
4.2 - Na konec souboru crontab vložte:
Zde můžete nastavit kdy se má synchronizace spouštět, níže se bude úloha spouštět každou hodinu, pokud ale chcete spouštět úlohu jedenkrát denně ve dvě ráno, pak můžete použít 0 2 * * *, pokud stejně jako já chcete spouštět cron jednou za hodinu pak použijte:
0 * * * * root bash backup.sh
4.3 - Vytvoříme backup.sh soubor
Vytvořte si backup.sh soubor, třeba v root/backup.sh a vložte do něj obsah, například:
#!/bin/sh
/usr/bin/rsync -avz -e "ssh -i /root/.ssh/id_rsa.pub" root@A.com:/var/lib/mysql /var/zaloha
To je všechno, nyní každou hodinu se spustí backup.sh a zkontroluje zda na serveru A ve složce var/lib/mysql nejsou nějaké soubory, které nejsou ve složce /var/zaloha na serveru B - pokud zjistí, že existují chybějící soubory - automaticky je odešle do složky /var/zaloha na serveru B.
Rsync má zajímave flags, díky kterým můžete nastavit například to, že pokud soubor na serveru A neexistuje a na serveru B existuje, protože tam byl zazálohován můžete spouštět:
#!/bin/sh
/usr/bin/rsync -avz -e "ssh -i /root/.ssh/id_rsa" --delete root@A.com:/var/lib/mysql /var/zaloha
Díky tomu budou soubory na serveru B, které již neexistují na serveru A automaticky ze serveru B odstraněny!
Dokumentace funkce rsync a hromady možností nastavení naleznete zde: https://www.samba.org/ftp/rsync/rsync.html
A nezapomeňte restartovat váš cron:
service crond restart
0 komentářů
Vložit komentář
Nepublikujte SPAM!
Jakékoliv SPAM komentáře, které nejsou relevantní k obsahu tohoto článku budou odstraněny.
Pokud chcete, můžete přidat první komentář k tomuto článku níže.