Sikkerhetskopi

Fra GNUskole

Revisjon per 8. sep 2009 kl. 06:23 av Espen (Diskusjon | bidrag)
(diff) ← Eldre revisjon | Nåværende revisjon (diff) | Nyere revisjon → (diff)
Gå til: navigasjon, søk

Det er viktig å ta sikkerhetskopi

Innhold

Hva skal man ta sikkerhetskopi av?

Brukerområder

Det viktigste er å ta sikkerhetskopier av brukernes hjemmeområder. Her er alle filene brukerne arbeider med, og alle innstillinger og endringer de har gjort i systemoppsettet og i programmer. Filer som har blitt endret/lagt til bør det tas sikkerhetskopi av minst en gang i døgnet.

Systemfiler

Hvis det er gjort spesielle tilpassinger på en maskin, bør det også vurderes å ta kopi av disse innstillingene. For eksempel kan det være greit å ha en kopi av /etc/dhcpd.conf på dhcp-tjeneren, hele /var/www (og kanskje /etc/httpd/conf/) for en webtjener og /var/spool/mail for en e-posttjener.

Her må det utøves litt skjønn, og man må vurdere hvor lang tid det vil ta å være operativ igjen om man må reinstallere en tjener, og veie det opp mot plass og tid en sikkerhetskopi tar.

Databaser

Det er ofte lett å glemme å ta sikkerhetskopi av databaser man bruker. Har man en MySQL-database er det relativt greit å ta sikkerhetskopi av basen til en fil, og så sikkerhetskopiere denne.


Et praktisk eksempel

Et typisk scenario kan være at en filtjener har alle hjemmeområdene i mappen /home. Denne eksporteres til fire-fem terminaltjenere, som hver har noen lokale innstillinger. For eksempel er /opt/ltsp/i386/etc/lts.conf på de ulike maskinene endret (noen av klientene har for eksempel lokal skriver eller noen har skjerm med spesiell oppløsning). Videre kjører det en MySQL-database på filtjeneren, og den mottar også e-post.

Strategi

Det enkleste er å bruke innebyggete verktøy for å ta sikkerhetskopi. Programmet tar er velegnet til dette, og enkelt å skripte med. Det er også enklest å ta full sikkerhetskopi fremfor inkrementell eller differensiell. I dette eksempelet velger vi derfor den strategien å ta full sikkerhetskopi til disk på en annen maskin. Vi antar derfor at mappen /backup fra en egen sikkerhetskopitjener er montert på filtjeneren. Alt som havner i /backup blir med andre ord fraktet over nettverket til sikkerhetskopitjeneren.

Sikkerhetskopi av /home

På filtjeneren kan man hver natt kjøre et skript som pakker innholdet i /home til en fil som legges i /backup-mappen. Et eksempel på et slikt skript kan være:

#!/bin/bash
DATO=$(date +%Y-%m-%d)
BCKDIR=/backup/$DATO

mkdir -p $BCKDIR/home

for dir in $(ls /home)
do
    tar -czf $BCKDIR/$DATO-$dir.tar.gz /home/$dir > /dev/null 2>&1
done

Dette skriptet lager en mappe under /backup hver natt. Mappen har navn etter datoen skriptet kjører; 17. mai 2005 lages for eksempel mappen /backup/2005-05-17. Skriptet lager så en komprimert tar-fil for hver mappe den finner i /home, og legger denne i /backup/2005-05-17/home/. På denne måten lages det en tar-fil for hver brukers hjemmeområde og ikke en stor tar-fil for hele /home. Fordelen med dette er at gjenoppretting går lettere. Ni av ti tilfeller er nemlig en bruker som ønsker tilbake filen "som bare forsvant", og da trenger man bare leite i tar-filen til den spesielle brukeren.

For å kjøre dette skriptet hver natt kan det lagres som fullbackup.sh og gjøres kjørbart med kommandoen

[root@filtjener] chmod u+x fullbackup.sh

Deretter kjøres det automatisk hver natt hvis det legges i /etc/cron.daily/. Alternativt kan man (hvis man behersker editoren vi) lage sin egen cron-jobb ved å gi kommandoen

[root@filtjener] crontab -e

og legge inn følgende kryptiske linje:

0 1 * * * /root/fullbackup.sh

Dette betyr at skriptet /root/fullbackup.sh starter hver natt klokken 01.00.

Sikkerhetskopi av systemfiler

Man kan helt tilsvarende lage skript som tar sikkerhetskopi av andre områder. For eksempel:

#!/bin/bash
DATO=$(date +%Y-%m-%d)
BCKDIR=/backup/$DATO

mkdir -p $BCKDIR/systemfiler

tar -czf $BCKDIR/annet/$DATO-mail.tar.gz /var/spool/mail     > /dev/null 2>&1
tar -czf $BCKDIR/annet/$DATO-web.tar.gz  /var/www /etc/httpd > /dev/null 2>&1

Dette lager en ny mappe under /backup/2005-05-17/ som heter "annet", og hit havner en tar-fil som er sikkerhetskopien av e-postområdet (/var/spool/mail) og en annen tar-fil som er sikkerhetskopi av filer og innstillinger for webtjeneren.

Sikkerhetskopi av MySQL-databaser

mysqldump lager kopier av ulike baser installert på maskinen, som igjen kan tas vanlig backup av. Husk å sette inn systempassordet for mysql-basen (hvis du har laget ett - som du bør) rett etter -p

for x in $(/usr/bin/mysql -Bse 'show databases;' -pbasepassord); do
   /usr/bin/mysqldump -pbasepassord $x | gzip -9 >/home/mysqlbackup/mysql-$x.sql.gz
done

Dette er et litt mer komplisert skript enn base å bruke kommandoen mysqldump -A, men fordelen her er at du får hver base pent pakken inn i hver sin fil.

Sikkerhetskopi av andre tjenere

Ønsker man å ta sikkerhetskopi av filer på andre maskiner har man flere muligheter. En løsning er å montere /backup på den aktuelle maskinen, og lage tilsvarende skript som for filtjeneren. En annen løsning er å lage en tar-fil på den aktuelle maskinen, og så flytte den til et område på tiltjeneren som det blir tatt sikkerhetskopi av. For eksempel kan man hver natt kopiere filen /opt/ltsp/i386/etc/lts.confts01 til et område under /home på filtjeneren der det blir tatt sikkerhetskopi. På den måten kommer den med i den "vanlige" sikkerhetskopien. Det vanligste er i så fall å lage en egen "backup"-bruker på filtjeneren, og legge ting her.

Hvis du har mange TSer kan et godt tips være at du i backup-skriptet kopierer de nødvendige filene fra TSene ved hjelp av kommandoen scp (og har laget ferdige SSH-nøkler så du slipper å bruke passord for å logge deg på).

Sikkerhetskopi av Windowsmaksiner

Ja, det trengs også...

ftp via skript til backup-brukeren.

Personlige verktøy
Navnerom
Varianter
Handlinger
Navigasjon
Verktøy