pátek 2. října 2009

Zálohování a obnova SVN a Trac

Debian se SVN a Trac běží ve VirtualBoxu, který je hostovaný ve Windows 7 - viz předchozí blog. Zálohovat se tedy bude do sdíleného adresáře z Windows 7.

Nastavení Windows 7
  • vytvořit adresář na zálohy: c:\backup
  • vytvořit uživatele Backup s heslem
  • nasdílet c:\backup tak, že jen uživatel Backup do něj má právo zápisu a ostatní nic
Nastavení Debianu
  • apt-get install winbind smbclient smbfs bzip2
  • nastavit Workgroup, nepoužívat WINS z DHCP
  • v /etc/nsswitch.conf upravit řádku s host na:
    hosts:     files wins dns
  • otestovat sdílení: smbclient -L server -U Backup
    po zadání hesla vypíše seznam sdílených adresářů
    svntrac:~# smbclient -L server -U Backup
    Enter Backup's password:
    Domain=[SERVER] OS=[Windows 7 Professional 7600] Server=[Windows 7 Professional 6.1]
    
            Sharename       Type      Comment
            ---------       ----      -------
            ADMIN$          Disk      Remote Admin
            Backup          Disk
            C$              Disk      Default share
            IPC$            IPC       Remote IPC
    Domain=[SERVER] OS=[Windows 7 Professional 7600] Server=[Windows 7 Professional 6.1]
    
            Server               Comment
            ---------            -------
    
            Workgroup            Master
            ---------            -------
    
  • vytvořit mount-adresář : mkdir /mnt/backup
  • namountovat ručně: mount -o user=backup -t smbfs //server/backup /mnt/backup
  • pokud funguje, tak nastavit automatické mountování upravením /etc/fstab:
    //server/backup /mnt/backup     smbfs   user=backup,password=backup,file_mode=0777,dir_mode=0777 0 0
  • restart a zkusit, že to funguje
  • pokud je heslo příliš dlouhé (víc jak 16 znaků) anebo vadí, že je v /etc/fstab viditelné, tak se musí vytvořit soubor s hesly:
    vim /root/.smbcredentials
    username=backup
    password=backuppassword
    chmod 700 /root/.smbcredentials
    //server/backup /mnt/backup     smbfs   credentials=/root/.smbcredentials,file_mode=0777,dir_mode=0777 0 0

Zálohování

Trac
  • mkdir /mnt/backup/trac
  • Vytvořit skript trac-backup.sh
    #!/bin/sh
    projekt="bakalari"
    tmpdir="/tmp/trac"
    rm -rf $tmpdir
    mkdir $tmpdir
    
    backupfile=$tmpdir"/"$projekt"."`eval date +%Y%m%d%H%M`".tgz"
    trac-admin /home/trac/$projekt hotcopy $tmpdir"/"$projekt
    tar -jcf $backupfile -C $tmpdir $projekt 
    cp $backupfile /mnt/backup/trac
  • chmod u+x trac-backup.sh
  • Spustit: ./trac-backup.sh
    V /mnt/backup/trac by se měl vytvořit soubor projekty.YYYYmmddHHMM.tgz, který obsahuje zálohu Tracu. Je komprimovaný pomocí bzip2.
  • Nastavit denní zálohování: do crontab -e přidat
    35 3 * * * /root/trac-bakalari-backup.sh
SVN
Zálohuje se jak hotcopy, tak dump. Hotcopy není jednoduše přenositelný na jiný systém, ale zálohuje i pre/post commit skripty.
  • mkdir /mnt/backup/svn
  • Vytvořit skript svn-backup.sh:
    #!/bin/sh
    projekt="bakalari"
    tmpdir="/tmp/svn"
    rm -rf $tmpdir
    mkdir $tmpdir
    
    backupfile=$tmpdir"/"$projekt".dump."`eval date +%Y%m%d%H%M`".tgz"
    svnadmin dump /home/svn/$projekt | bzip2 -c > $backupfile
    cp $backupfile /mnt/backup/svn
    
    backupfile=$tmpdir"/"$projekt"."`eval date +%Y%m%d%H%M`".tgz"
    svnadmin hotcopy /home/svn/$projekt $tmpdir"/"$projekt
    tar -jcf $backupfile -C $tmpdir $projekt 
    cp $backupfile /mnt/backup/svn
  • chmod u+x trac-backup.sh
  • Spustit: ./svn-backup.sh
    /mnt/backup/svn by se měly vytvořit soubor projekty.dump.YYYYmmddHHMM.tgz, a projekty.YYYYmmddHHMM.tgz které obsahují dump a hotcopy zálohu SVN. Jsou komprimovaný pomocí bzip2.
  • Nastavit denní zálohování: do crontab -e přidat
    35 3 * * * /root/svn-bakalari-backup.sh
Poznámka: Nakonec zálohuju jen hotcopy - přenos na jinej systém nehrozí, protože SVN běží ve virtuálním počítači. A případný dump se dá jednoduše udělat.

Obnova

Trac
  • Zastavit Apache: /etc/init.d/apache2 stop
  • Smazat aktuální verzi: rm -rf /home/trac/projekty
  • Nahrát zálohu: tar -xvkjf zaloha.tgz -C /home/svn/
  • Upravit práva:
    • chown -R www-data.www-data /home/svn/projekty
    • chmod -R g+ws /home/svn/projekty
  • Spustit Apache: /etc/init.d/apache2 start
Obnova SVN - z hotcopy
  • Zastavit Apache: /etc/init.d/apache2 stop
  • Smazat aktuální repozitář: rm -rf /home/svn/projekty
  • Nahrát zálohu: tar -xvkjf zaloha.tgz -C /home/svn/
  • Upravit práva:
    • chown -R www-data.www-data /home/trac/projekty
  • Spustit Apache: /etc/init.d/apache2 start
  • Klienti musí znovu provést checkout pokud jsou na vyšší verzi než byla záloha.
Obnova SVN - z dump
  • Zastavit Apache: /etc/init.d/apache2 stop
  • Smazat aktuální repozitář: rm -rf /home/svn/projekty
  • Vytvořit ho znovu: svnadmin create /home/svn/projekty
  • Upravit práva:
    • chown -R www-data.www-data /home/svn/projekty
    • chmod -R g+ws /home/svn/projekty
  • Nahrát zálohu: bunzip2 -kc zaloha.dump.tgz | svnadmin load /home/svn/projekty
  • Spustit Apache: /etc/init.d/apache2 start
  • Klienti musí znovu provést checkout pokud jsou na vyšší verzi než byla záloha.

Žádné komentáře:

Okomentovat