Dirvish

From TD-er's Wiki
Jump to: navigation, search

/etc/dirvish/master.conf

## Example dirvish master configuration file:
bank:
       /storage/dirvish_bank
image-default: %Y%m%d
log: bzip2
index: bzip2
exclude:
       lost+found/
       core
       *~
       .nfs*
       dev/
       proc/
       tmp/
       mnt/
Runall:
       fileserver_data 22:00
       mailserver_data 22:00
#        mailserver_filesystem 22:00
expire-default: +15 days
expire-rule:
#       MIN HR    DOM MON       DOW  STRFTIME_FMT
        *   *     *   *         1    +3 months
#       *   *     1-7 *         1    +1 year
#       *   *     1-7 1,4,7,10  1
        *   10-20 *   *         *    +4 days
#       *   *     *   *         2-7  +15 days

default.conf

De gebruikte config heeft de betreffende dirvish-bank in /storage/dirvish_bank/fileserver_data/ staan. Een dirvish-bank is een dirvish-bank, omdat er de file /dirvish/default.conf in staat met de volgende inhoud:

client: root@192.168.1.5
tree: /storage/networkdrive
xdev: 0
index: gzip

Voorbeeld na een paar weken aan dirvish-backup:

backupserver:/storage/dirvish_bank/fileserver_data# ls
20080203  20080224  20080304  20080307  20080310  20080313  20080316
20080210  20080302  20080305  20080308  20080311  20080314  dirvish
20080217  20080303  20080306  20080309  20080312  20080315

Met onder elke "datum-directory" de volgende structuur:

backupserver:/storage/dirvish_bank/fileserver_data# ls -l 20080203/
total 4636
-rw-r--r--  1 root root  4718902 Feb  4 10:51 index.gz
-rw-r--r--  1 root root      759 Feb  4 10:51 log
-rw-r--r--  1 root root      842 Feb  4 10:51 summary
drwxrwxr-x 20 1017 users    4096 Jan 15 15:29 tree

Onder de directory "tree" is een volledige snapshot te vinden van de datastructuur van dat moment.

Dirvish-bank initialiseren

Om een vault te kunnen gebruiken moet deze eerst een keer aangemaakt worden. Dit doe je dmv het volgende commando:

dirvish --vault fileserver_data --init

N.B. Dit maakt een complete rsync backup van je data, dus kan een grotere netwerk/server belasting veroorzaken dan een normale backup.


cronjob

De cronjob om de backups te maken ziet er als volgt uit:

# m h  dom mon dow   command
0 22 * * * /usr/sbin/dirvish-expire --quiet ; /usr/sbin/dirvish-runall --quiet

Automatisch inloggen via ssh op een andere machine

Genereer eerst een eigen ssh-identity.

ssh-keygen -t dsa

Eventueel kun je een passphrase opgeven, maar dat is in dit geval niet praktisch. Dit maakt de private id_dsa en public key id_dsa.pub aan in /root/.ssh/ Hierna kopieer je die key naar de andere machine (waarop je automatisch wilt inloggen):

ssh-copy-id -i id_dsa root@mail

Zorg wel dat de hostname mail bestaat en maak deze desnoods aan in de /etc/hosts Hierna kun je zonder een wachtwoord in te hoeven vullen, inloggen op de andere pc ("mail" in dit geval) Rsync en dergelijke hebben nu ook geen wachtwoord meer nodig.

Kopieren van Dirvish-vault

Ik heb een script geschreven wat op de CH3SNAS automatisch na het booten de backup-server kopieert naar zijn eigen schijven. Op de CH3SNAS heb ik met funplug eerst een Linux-distributie gezet.

Script kijkt wat de laatste lokale backup is, en haalt vervolgens alles wat nieuwer is van de backupserver (inclusief --link-dest)

#!/bin/sh
hostname=192.1.132.15
dirvishbank=/storage/dirvish_bank/
remote_dirvishbank=/storage/dirvish_bank/
expire_days=100
TODAY=`date +%Y%m%d`  
dobackup(){
  echo "Doing backup of $dirvishbank / $dirvishvault"
  cd /$dirvishbank/$dirvishvault/
  LATEST_LOCAL=`ls | tail -n 1`
  remote_allfiles=`ssh root@$hostname ls /storage/dirvish_bank/$dirvishvault/ --file-type | grep '/$' |sort -n |grep '[0-9]'` 
  for file in $remote_allfiles
    do remote_latest=$file
  done 
  remote_backups=`ssh root@$hostname ls /storage/dirvish_bank/$dirvishvault/ --file-type | grep '/$' |sort -n |grep '[0-9]' |grep -B 26 $remote_latest |grep
  todo=`echo $remote_backups $LATEST_LOCAL/ |xargs -n 1 echo|sort -n | uniq |grep -A 26 $LATEST_LOCAL/ |grep -v $LATEST_LOCAL/`
  for ARG in $todo
    do echo "Transferring $dirvishvault using $LATEST_LOCAL as link-dest, processing $ARG"
    rsync -e 'ssh -ax -c blowfish' -vrltH --delete -pgo --stats -D --numeric-ids -x  --link-dest=/$dirvishbank/$dirvishvault/$LATEST_LOCAL  root@$hostname:$remote_dirvishbank/$dirvish
    LATEST_LOCAL=$ARG
  done
}
dirvishvault=system_files/
dobackup
dirvishvault=mailserver_data/
dobackup
dirvishvault=tekensysteem_data/
dobackup
dirvishvault=fileserver_data/
dobackup

Er is geen dirvish-expire op de CH3NAS (eventueel een keer kijken naar waarom dat (een perl-script) niet werkt). Oude backups (meer dan 100 dagen) verwijderen met:

find /storage/dirvish_bank/VAULT   -maxdepth 1 -mtime +100 -type d -exec rm -r {} \;

Op dit moment 2 schijven in de CH3NAS, eenmaal 500 en eenmaal 300G:

# df -h
Filesystem                Size      Used Available Use% Mounted on
rootfs                    9.7M      7.2M      2.0M  78% /
/dev/root                 9.7M      7.2M      2.0M  78% /
/dev/sda2               457.5G    132.8G    324.7G  29% /mnt/HD_a2
/dev/sdb2               292.4G    191.2G    101.2G  65% /mnt/HD_b2
/dev/sda4               486.2M      9.0k    486.2M   0% /mnt/HD_a4
/dev/sdb4               486.2M      5.0k    486.2M   0% /mnt/HD_b4

In /storage/dirvish_bank staan symlinks, zodat alle backups van de dirvish-backups uniform te benaderen zijn:

/storage/dirvish_bank # ls -l
lrwxrwxrwx    1 root     root           38 Jan 26 13:37 fileserver_data -> /mnt/HD_a2/dirvishbank/fileserver_data
lrwxrwxrwx    1 root     root           46 Jan 26 13:37 fileserver_installation -> /mnt/HD_b2/dirvishbank/fileserver_installation
lrwxrwxrwx    1 root     root           38 Jan 26 13:37 mailserver_data -> /mnt/HD_b2/dirvishbank/mailserver_data
lrwxrwxrwx    1 root     root           46 Jan 26 13:37 mailserver_installation -> /mnt/HD_b2/dirvishbank/mailserver_installation
lrwxrwxrwx    1 root     root           36 Jan 28 13:30 system_files -> /mnt/HD_a2/dirvishbank/system_files/

fileserver_data en system_files komen dus op de schijf van 500, de rest op de 300G.

Links