Zálohování souborového systému pomocí utility rsnapshot

Máte v hostingu virtuální nebo dedikovaný server s pronajatým místem pro backup na externím diskovém poli nebo si chcete zálohovat vlastní server? Nastává otázka jaký software pro tento účel použít
Známe přísloví říka že v jednoduchosti je síla. Použijeme tedy utilitu rsnapshot , což je perlový skript napsaný nad rsync.

rsnapshot je utilita pro vytváření snapshotu (aktuálního obrazu systému) pro zálohu lokálních nebo vzdálených systemů, která synchronizuje soubory a adresáře mezi různými místy za použití co nejmenšího přenosu dat. Tam, kde je to možné, přenáší pouze rozdíly mezi soubory. Zálohy nepoužívají žádný druh komprese, máte tedy vždy s dispozici kompletní zálohu stavu Vašeho serveru k danému datu

rsnapshot využívá tzv. hardlinks - tedy více záznamů pro souborový systém ukazujícíh na jeden soubor, čímž minimalizuje nároky na diskový prostor pro Vaše zálohy



Záloha filesystému

Nainstalujeme si rsnapshot, v Debian like systémech aptitude install rsnapshot

Vytvoříme adresář pro zálohování mkdir /mnt/backup


Namountujeme sdílené místo pomocí NFS protokolu, celý níže uvedený řádek můžete uložit do /etc/rc.local aby se adresář namountoval vždy po spuštení serveru.

mount -o nfsvers=3 backup.tvujweb.cz:/client/jmenozakaznika/ /mnt/backup
Parametr -o nfsvers=3 je potřeba přidat aby záloha byla namoutována se správným oprávněním a vlastníkem souborů a adresářů

Lze mountovat i v /etc/fstab


Úprava konfiguračního souboru



nano /etc/rsnapshot.conf
# nastavte snapshot root
snapshot_root /mnt/backup/

# nastavte interval záloh
interval daily 7

## Možnost 1: nastavte explicitně, které adresáře zálohovat
backup<TAB>/var/www/<TAB><ENTER>
backup<TAB>/etc/<TAB><ENTER>

## Možnost 2: nastavte zálohování celého rootu
backup<TAB>/<TAB><ENTER>

# a poté vynechejte nepotřebné adresáře:
exclude /dev
exclude /proc
exclude /sys
exclude /tmp
# vynechejte adresář se SQL databází, záloha spustěné databáze je nepoužitelná, korektní SQL dump provedeme později v postexec scriptu
exclude /varlib/mysql
# !!!vynechejte adresář se zálohou, jinak by došlo k zacyklení
exclude /mnt/backup

Pozor: script je citlivý na to, že mezery nesmí být mezery, ale TAB. v našem příkladu znamená, že nejprve odskočíme pomocí tlačítka TAB a pote zmáčkneme Enter.
Správnost syntaxe config souboru oveříte příkazemrsnapshot configtest

Tento formát používáme abychom zálohovali přímo do rootu namoutovaného diskspace, tedy např. /mnt/backup/daily.0/etc. Pokud bychom uvedli jméno adresář jak je uvedeno v příkladech v konfig scriptu po instalaci, jako třeba backup/etc//backup/ program by vytvářel strukturu adresáře /mnt/backup/daily0/backup/



Přidejte spouštení scriptu do cronu
crontab -e
35 01 * * * /usr/bin/rsnapshot -c /etc/rsnapshot.conf daily

Tento záznam znamená že zálohy se spustí každý den v 01:35 hodin
v adresáři /mnt/backup/mujserver1 pak uvidíte pro každý den jeden adresář
daily.0 (nejnovejsi)
daily.1
.
.
daily.6 (nejstarší)

V každém z adresářů uvidíte plnou zalohu souborů k danému dni. Program stahuje pouze soubory, ktere jsou nové nebo se změnily a pro zbytek vytvori hardlinky, soubory tedy zabiraji jen velikost jednoho plného backupu a změnených souborů.



Záloha MySQL
Pro obsah MySQL databází nestačí jednoduchá záloha souborů pro MySQL, nedošlo by ke korektní záloze právě používaných souborů. Stejně tak pomocí zálohy filesystému nedojde k záloze například souborových balíčků, obsahu crontabu atd.
Ukážeme si tedy jak koretktně zazálohovat MySQl databázi:

v /etc/rsnapshot.conf lze definovat Vase vlastni skripty které se mají spustit před zálohou souborů a po ní, mužete tedy po kopírovaní souborů (po kopírování proto, aby již byl vytvořen dnešní adresář daily.0) udelat třeba dump databáze, namountovat disk se zálohami etc..
jsou to parametry:
cmd_preexec /path/to/preexec/script
cmd_postexec /path/to/postexec/script

Nejříve tedy nastavíme v konfiguraci rsnapshot postexec script:

nano /etc/rsnapshot.conf
# přidáme řádek
cmd_postexec /root/scripts/po-zaloze-dat.sh

Z důvodu větší bezpečnosti je vhodnější vytvořit pro zálohování uživatele MySQL databáze s globálním oprávněním: SELECT, RELOAD, SHOW DATABASES, LOCK TABLES, SHOW VIEW. Pokud by se k heslu dostal útočník bude moci databázi přečíst, nikoliv však smazat nebo upravit

Vytvoříme soubor /root/scripts/po-zaloze-dat.sh nano /root/scripts/po-zaloze-dat.sh
který bude obsahovat:

#! /bin/sh

mysql_user="backup"
mysql_pass="HesloUzivateleBackup"
timestamp="`date +%Y%m%d-%H%M`"
host="1.2.3.4"

# následujicí řádky nám vytvoří jednotlivé soubory pro všechny databáze a zabalí je pomocí gzip, můžeme je tedy v případe potřeby přímo importovat v phpMyAdmin
mkdir /mnt/backup/daily.0/_mysql_dump-${timestamp}
cd /mnt/backup/daily.0/_mysql_dump-${timestamp}
echo "show databases;" | mysql -h${host} -u${mysql_user} -p${mysql_pass} > databases_list

# odstraníme ze seznamu název souboru se seznamem DB a pomocné systémové databáze
sed -i '/Database/d' databases_list
sed -i '/performance_schema/d' databases_list
sed -i '/information_schema/d' databases_list
# provedeme dump všech databází

for i in `cat databases_list`; do mysqldump -f --single-transaction --events -h${host} -u${mysql_user} -p${mysql_pass} $i | gzip > $i.sql.gz ; done
# smažeme soubor se seznamem db
rm databases_list

# následujicí řádky nám ukazuj jak vytvořit kompletní zálohu celé MySQL databáze, pokud nechceme dělat dump po jedné
mysqldump -h${host} -f -u${mysql_user} -p${mysql_pass} --events --all-databases | gzip > ${timestamp}-all_databases.sql.gz


Pro zálohu jsme vytvořili adresář /mnt/backup/daily.0/_mysql_dump-${timestamp}, tento adresář nám další den odrotuje a dnešni záloha MySQL tedy zítra bude v adresáři -mnt/backup/daily.1/_mysql_dump-${timestamp}

Nezapomeňte že script musí být spustitelný uživatelem root
chmod 700 /root/scripts/po-zaloze-dat.sh

  • 9 Uživatelům pomohlo
Byla tato odpověď nápomocná?

Související Články

Snížení parametrů VPS / přechod na nižší hostingový program

Snížení parametrů VPS je problematičtější než jejich navýšení, které lze provést na jeden...

virtio nebo emulace IDE?

Podporujeme 2 způsoby jak operační systémy ve virtuálním serveru mohou přistupovat k pevným...

Navýšení parametrů VPS / přechod na vyšší hostingový program

Pokud přestane vaše VPS dostačovat výkonem nebo diskovou kapacitou, nabízíme možnost navýšení...

ISPConfig3

ISPCONFIG TIPYZakládání stránek a verze PHPPři zakládání webové stránky v menu Sites->Add new...

Klientská zóna - podrobné informace o VPS, ovládání VPS, KVM konzole, boot z ISO image

Přihlasit do klientské zóny se můžeme na adrese https://client.tvujweb.cz. K přihlášení použijeme...