Sikkerhetskopi
Fra GNUskole
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.conf på ts01 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.