Zálohování

Z Wiki UnArt Slavičín
Verze z 19. 11. 2012, 05:01, kterou vytvořil Quimi (diskuse | příspěvky) (Změna odkazu)
Skočit na navigaciSkočit na vyhledávání

Pomocí BackupPc

Server

Klient

Linux

Požadavky: Stroj musí naslouchat na portu 22 (SSH).

Postup: Návod je na debian, ale až na drobné výjimky by měl fungovat na všech linuxových distribucích.

# KEY_URL - nahraďte s URL s veřejným SSH klíčem zálohovacího serveru
export KEY_URL="http://www.unart.cz/virtual/backuppc_authorized_keys"

# nainstujeme rsync, wget a sudo
apt-get install rsync wget sudo

# přidáme uživatele backuppc bez hesla
adduser -q --disabled-password --gecos "" backuppc

# přidáme mu práva spouštět rsync jako root
echo "backuppc  ALL=NOPASSWD: /usr/bin/rsync" >> /etc/sudoers

# staneme se jím :-)
su backuppc

# a stáhneme si SSH veřejný klíč
cd && mkdir .ssh && chmod 700 .ssh && cd .ssh && wget $KEY_URL -O authorized_keys --no-check-certificate && chmod 600 authorized_keys

Ještě je potřeba, aby název stroje, který používáme na serveru, byl na klientovi v /etc/hosts. Pokud si teda například na serveru přidáme hostitele lenny, soubor /etc/hosts by měl vypadat nějak takto:

127.0.0.1      localhost lenny
...

Obnova

Předpokládá se čistá instalace Debianu.

Poté je nutno zopakovat předchozí bod.

Zazálohujeme složku etc:

tar zcvf /root/etc.tar.gz /etc

Klientovi se změnil SSH otisk prstu, proto je na serveru nutné nahradit patřičné řádky v souboru /var/lib/backuppc/.ssh/known_hosts.

V administraci backuppc serveru je pak nutné dát obnovit složky:

/bin
/etc
/home
/lib
/opt
/sbin
/tmp
/usr
/var
/root/.ssh

Obnovíme zálohu:

cd /root/
tar xzvf etc.tar.gz

Obnova udev pravidel:

rm -rf /etc/udev/
cp -r /root/etc/udev/ /etc/

Obnova fstabu:

cp /root/etc/fstab /etc/fstab

Nyní by po restartu měl najet původní server.

Windows

Požadavky: Stroj musí mít povelený port 873.

Postup: Tady je instalace poněkud odlišná. Místo rsync se zde používá rsyncd, což je daemonek využívající CYGWIN. Já použil verzi 2.6.8.0, která je ke stažení zde.

Jedná se o zip soubor obsahující vše potřebné - není potřeba doinstalovávat žádné další aplikace/knihovny.

Tento zip si rozbalíme do C:\rsyncd.

V souboru C:\rsyncd\rsyncd.secrets nastavíme autentizační údaje - ve tvaru jméno:heslo, např.:

backuppc:Ed6pIa7z97

V souboru C:\rsyncd\rsyncd.conf (hlavní konfigurační soubor) nastavíme, kterou část chceme zálohovat. Ve výchozím stavu jsou nastaveny 2 oblasti - docs (C:\Documents and Settings) a cDrive (C:\). Pokud chcete definovat některou jinou oblast, můžete jako vzor použít jednu z nich. Např.:

[cDrive]
    path = c:
    comment = Entire Drive
    # důležité mít nastavené hodnoty ze souboru rsyncd.secrets.
    auth users = backuppc
    secrets file = c:/rsyncd/rsyncd.secrets
    # hosts allow = 172.16.0.17
    strict modes = false
    read only = true
    list = false

Nakonec už jen stačí spustit soubor services.bat, který spustí soubor C:\rsyncd\rsync.exe jako daemon a přidá jej do služeb po spuštění.

Nyní by již měl stroj naslouchat na portu 873. Můžeme to otestovat z linuxové mašiny:

nmap -p873 IP_WINDOWS_STROJE

Pokud nmap vrátí open nebo filtered je vše v pořádku, v opačném případě je někde chyba (obvykle ve firewallu windows stroje).

Pomocí skriptu

Zálohovací skript Romana Ševčíka napsaný pro vyuka.fai.utb.cz:

DST_DIR_TMP="/var/backup"
DST_DIR="/backup"
PASSWORD="pass"
SPACE=$'\n'
IFS=$'\n'
IP="sip.icamp.eu"
USER="root"
echo "$SPACE"
echo "Ulozeni datatabaze $SPACE"
if ! [ -d "$DST_DIR_TMP" ] ; then # kontrola existence adresare v cilovem adresari, pripadne jeho vytvoreni
  echo "Vytvarim adresar$DST_DIR_TMP"
  mkdir $DST_DIR_TMP
fi
cd "$DST_DIR_TMP"
date > datum +"%A"
read DAT < datum
rm datum
mkdir "$DST_DIR_TMP"/daily_"$DAT"
cd "$DST_DIR_TMP"/daily_"$DAT"
for row in $(mysql -N --password="$PASSWORD"  -u root <<<'show databases')
do (
 IFS=$'\t'
 cols=($row)
 echo "Ukladam databazi ${cols[0]} do souboru ${cols[0]}.sql"
 mysqldump --databases --quick --add-drop-table --add-locks --extended-insert --lock-tables -u root --password="$PASSWORD" "${cols[0]}" >"${cols[0]}".sql
 echo "Hotovo... $SPACE"
)
done
cd "$DST_DIR_TMP"
echo "Balim  do "$DST_DIR_TMP"/daily_"$DAT".tar.bz2"
tar cjvf "$DST_DIR_TMP"/daily_"$DAT".tar.bz2 daily_"$DAT"
echo "Hotovo... $SPACE"
cd ..
ssh "$USER"@"$IP" 'mkdir -p /backup/eric/Sunday/database'
ssh "$USER"@"$IP" 'mkdir -p /backup/eric/Monday/database'
ssh "$USER"@"$IP" 'mkdir -p /backup/eric/Tuesday /database'
ssh "$USER"@"$IP" 'mkdir -p /backup/eric/Wednesday/database'
ssh "$USER"@"$IP" 'mkdir -p /backup/eric/Thursday/database'
ssh "$USER"@"$IP" 'mkdir -p /backup/eric/Friday/database'
ssh "$USER"@"$IP" 'mkdir -p /backup/eric/Saturday/database'
echo "Posilam zalohu daily_"$DAT".tar.gz na $IP"
scp "$DST_DIR_TMP"/daily_"$DAT".tar.bz2 "$USER"@"$IP":/backup/eric/"$DAT"/database
rm -r "$DST_DIR_TMP"/daily_"$DAT"
rm -r "$DST_DIR_TMP"
echo "Synchronizuju lokalni adresar /var/www s adresarem na $IP"
ssh "$USER"@"$IP" 'mkdir -p /backup/eric/Sunday//data/var/www'
ssh "$USER"@"$IP" 'mkdir -p /backup/eric/Monday/data/var/www'
ssh "$USER"@"$IP" 'mkdir -p /backup/eric/Tuesday/data/var/www'
ssh "$USER"@"$IP" 'mkdir -p /backup/eric/Wednesday/data/var/www'
ssh "$USER"@"$IP" 'mkdir -p /backup/eric/Thursday/data/var/www'
ssh "$USER"@"$IP" 'mkdir -p /backup/eric/Friday/data/var/www'
ssh "$USER"@"$IP" 'mkdir -p /backup/eric/Saturday/data/var/www'
rsync -av -e ssh --delete /var/www/  "$USER"@"$IP":/backup/eric/"$DAT"/data/var/www
echo "Backup of data from $DAT has been succesfuly sent to $IP." | mail -s "Backup" dulik@fai.utb.cz -v
echo "Koncim... $SPACE"