Rdiff-backup "speglar" en eller flera kataloger till en "spegel" katalog. Denna spegel uppdateras inkrementellt för varje backup man tar. Rättigheter, länkar, timestamps i filerna bevaras.
Rdiff spar alla förändringar man gör, dvs man kan få tillbaka grejer från forntiden om man önskar. Man kan se på rdiff-spegeln som en hink man öser sina grejer i, men också förändringarna sparas undan.
Fördelen med att ta backup på detta sätt är att restore blir så himla enkelt, backupen ligger där som filer i ett helt vanligt filsystem. Nackdelen (om man tycker det är en nackdel) är att spegeln tar minst lika mycket plats som den katalog som backas av. Om du har inte har plats, utan måste komprimera hårt,eller bara har t.ex bandstation som enda alternativ som backup media, då kan du sluta läsa nu, rdiff är inget för dig. Om du däremot har plats på någon disk i ditt nätverk, och vill enkelt kunna göra restore, ja då är rdiff det smidigaste jag hittat hitills.
Denna guide visar rdiff-backup på 2 sätt. En klient-maskin använder sig av ssh, den andra av NFS.
Servern
Min server kör Ubuntu-server (dapper) och den har en disk i sig som jag i princip bara använder för backup. Servern NFS exporterar backup katalogen, och jag har följande struktur där:
rdiff/hostA
rdiff/hostB
En gång i månaden bränner jag ut backupen på en DVD.
Ok, nog snackat, hur gör man då ?
Först, se till att rdiff-backup är installerat på både server och klienter.
root@burk> apt-get update
root@burk> apt-get install rdiff-backup
hostA
Denna maskin använder sig av NFS och kör rdiff i ett cronjobb som root, vilket innebär att servern måste nfs exportera backup katalogen med 'no_root_squash'. 3 kataloger backas av, /home, /etc + /var/www. På servern kommer dessa 3 att dyka upp som :
rdiff/hostA/home
rdiff/hostA/etc
rdiff/hostA/var_www
script:
Kod: Markera allt
#!/bin/bash
TARGETS="/home /etc /var/www"
REMOTEBASE=/backup/rdiff/hostA
VERBOSITY="5"
TERMINAL_VERBOSITY="3"
VERBOSE="--verbosity ${VERBOSITY} --terminal-verbosity ${TERMINAL_VERBOSITY}"
OPTS="--print-statistics"
for target in $TARGETS
do
echo "rdiff ${target}..."
filtered_target=`echo $target | sed -r -e 's,(^/)(.*),\2,g' | sed -e s,/,_,g`
rdiff-backup ${VERBOSE} ${OPTS} ${target} ${REMOTEBASE}/${filtered_target}
done
echo "Rdiff Backup done"
hostB
Denna exempel använder sig av ssh, och visar hur man kan få till automatisk backup med ssh-inloggning.
Samma sak här, scriptet kör som ett cronjobb av root, men backupen kommer att hamna på servern med användaren 'user' som ägare till spegeln. Först måste vi fixa några saker.
på hostB:
1. Skapa en ssh-nyckel för root utan passphrase
# ssh-keygen -t rsa (tryck enter på alla frågor inklusive passphrase)
2. Kopiera över den publika nyckeln till servern
På servern:
1. Om inte användaren 'user' finns, skapa. Skapa sen följande katalog:
rdiff/hostB/user, med user som ägare
2. Se till att användaren 'user' tillåts logga in via ssh
3. Lägg in root's publika nyckel från hostB i 'user' authorized_keys
root#> su - user
user$> cd ~/.ssh (skapa om inte finns)
user$> cat 'hostB-root-publika nyckelfilen' >> authorized_keys
Nu är vi redo att testa. Om allt går bra kommer backupen att dyka upp på servern som :
rdiff/hostB/user/home_user
rdiff/hostB/user/opt_mitt_stuff
script:
Kod: Markera allt
#!/bin/bash
TARGETS="/home/user /opt/mitt/stuff"
SSHKEY="/root/.ssh/id_rsa"
REMOTEHOST=server
REMOTEUSER=user
REMOTEBASE=/backup/rdiff/hostB/user
VERBOSITY="5"
TERMINAL_VERBOSITY="3"
SCHEMA="ssh -i ${SSHKEY} -C %s rdiff-backup --server"
VERBOSE="--verbosity ${VERBOSITY} --terminal-verbosity ${TERMINAL_VERBOSITY}"
OPTS="--print-statistics"
for target in $TARGETS
do
echo "rdiff ${target}..."
filtered_target=`echo $target | sed -r -e 's,(^/)(.*),\2,g' | sed -e s,/,_,g`
rdiff-backup --remote-schema "${SCHEMA}" ${VERBOSE} ${OPTS} ${target} ${REMOTEUSER}@${REMOTEHOST}::${REMOTEBASE}/${filtered_target}
done
echo "Rdiff Backup done"
Det här var 2 exempel på hur man kan använda rdiff-backup. Finns säkert fler...:-)