Zálohování

Z Wiki UnArt Slavičín
Skočit na navigaciSkočit na vyhledávání

Pomocí BackupPc

Server

Klient

Linux

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

# 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 http://freenetis.slfree.net/backuppc/authorized_keys && chmod 600 authorized_keys

Ještě je potřeba, aby byl název stroje, který používáme na serveru, 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
...

Windows

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
    auth users = backuppc
    secrets file = c:/rsyncd/rsyncd.secrets
    # hosts allow = 172.16.0.17
    strict modes = false
    read only = true
    list = false

Obzvláště důležité je mít nastavené aut users na hodnoty ze souboru rsyncd.secrets.

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"