Backup

Vi tar backup. Backup er veldig fint å ha.

Backupskriptene er skrevet av ITK en gang i tiden, og fikk en puss av Berge i juli 2007.

Backupsystemet er svært enkelt, og er i praksis en fancy wrapper rundt ssh og tar. Alle filene ligger i kolje:/home/backup. backup.sh er hovedbackupskriptet, som tar backup av alle ordinære bokser. backup-nonpriv.sh tar backup av maskiner kolje ikke har root på. I /home/backup/conf/ ligger konfigurasjonen til backupen.

Backup skjer at skriptene SSHer til maskinene det skal tas backup av, kjører tar og piper tilbake til seg selv. Backupene lagres som tar.gz-filer, og backupskriptene finner ut når siste fullbackup var, og passer på å flytte og slette inkrementelle backuper.

backup.sh logger ingenting til stdout når alt går bra, og logger informative meldinger til stderr. Når noe feil skjer logger den til stdout, men fortsetter med andre backuper.

Backupen kjører fra /etc/cron.d/backup på kolje.

Backup-schedule

Forskjellige bokser og filsystemer tar backup forskjellige dager. Om du oppretter et nytt filsystem på cass, oppdater /home/backup/conf/ på kolje.

Kryptert backup

OBS: dette er nå en legacy-seksjon. Per oktober 2024 tas det ikke lengre kryptert backup noe sted.

Her er hvordan prosessen var for å håndtere kryptert backup. TLDR; GPG-nøkler genereres av de som ønsker å dekryptere, disse nøklene flyttes til boksene som det tas backup av, og nøkkelen kan så dekryptere kryptert backup når det trengs.

theodorc@cassarossa: gpg –-gen-key # generer nøkkelen
theodorc@cassarossa: gpg -o key.gpg –export <eposten du assosierte med nøkkelen> # Eksporter din offentlige nøkkel til en fil
Så flytter du nøkkelen til de serverne som tar kryptert backup
root@{server}: gpg –import key.gpg  # importer en offentlig nøkkel fra fil
root@{server}: vim /usr/local/sbin/output-encrypted-backup
Du må også signere nøkkelen på disse serverene så de kan validere eieren av nøkkelen og derfor kan stole på den
root@{server}: gpg –sign-key <eposten du assosierte med nøkkelen>
Du kan enten legge inn de 8 siste karakterene fra nøkkelen din (hint "gpg –list-fingerprint") eller eposten assosiert med nøkkelen. Du forstår godt mønsteret i filen vil jeg tro. Hvis du skal åpne en kryptert backup
gpg -d <kryptert fil>

Restore fra backup

Hvor ligger backupen?

Backupen ligger på backup:/backup/<maskin>/partisjon/{full,daglig}/dato.{tgz,idx,sdx} (aka kolje)

Hva er de forskjellige filene?

*.tgz
selve arkivet
*.idx
liste av arkivet (resultat av tar tvfz...)
*.sdx
.idx sortert etter filnavn

Hvordan tar jeg en restore?

Bruk 'tar' for å pakke ut. De som klager på at det går tregt kan kjøpe ny maskin eller finne på noe annet smart, samt være glad for at vi har disk-backup og ikke tape-backup.

Nyttige kommandoer

Om du pakker ut backupene på kolje (praktisk hvis mange inkrementelle) må du huske å gjøre dette med –numeric-owner. Deretter kan du kopiere dette til ønsket server med

root@kolje:/restore/inkrementelt# tar czf - . | ssh \
server tar --numeric-owner -xzvf - -C /foo/bar/på/server

Videre har vi erfart at å hente ut filer fra et gitt klokketidspunkt også kan være hensiktsmessig i noen tilfeller:

touch idagklx -t "YYYYMMDDHHMM"
rsync -vPan0 –files-from=<(cd /from/path && \
find . -newer /tmp/idagklx -print0) /from/path .

-n-en her kjører dry run.

Typisk restore av viktig fil:

% cd /backup/cirkus/_export_home_itk/daglig
% grep "viktige filer" ×idx
....
% cd /restore
% tar xfzv /backup/cirkus/_export_home_itk/daglig/200012230202.tgz ./halset/"viktige filer"/julegaver.txt
% rsync -vPa halset/"viktige filer"/julegaver.txt halset@cirkus:
% rm -r halset

Standardtabben er å glemme "./" om det trengs.

Hvor ligger logger

Loggen ligger på /var/log/backup/backup.sh.

Hvordan legger jeg til en ny host å ta backup av?

Legg til hosten i /home/backup/conf/computers.unix. Sørg for at hosten har koljes SSH-nøkkel som godkjent, og sett dump-bit i /etc/fstab for alle partisjoner du vil ha backup av. Ikke glem å lage directories i /backup på kolje, scriptene gjør ikke dette av seg selv. Husk at skriptet kjører som brukeren backup, så det er den som trenger nøklene.

Backup av Skrue

Skrue er en Windows-server og har derfor et eget backupscript skrevet av jodal i oktober 2003. Scriptet ligger under /home/backup på kolje og heter skruebackup.sh. Det bruker smbtar for å hente filene og dytte rett tar-filer.

Du har ikke idx eller sdx-filer, men en inkrementell tar-fil for hver share (10-12 stykker) for hver dag, samt fullbackup en gang i måneden.

skruebackup.sh er greit dokumentert i skriptet. For å legge til share dytter du dem i /home/backup/skruebackup_this.txt. For å ta fullbackup kjører du skriptet med --full, og for å ta inkrementell backup (default) med --incr. skruebackup.sh kjøres fra crontab på kolje.

Gjenopprette en slettet bruker fra backup

Legg først brukeren til med itkadduser på vanlig måte. (Vi har ingen standard måte å hente ut enkelt-Kerberos-hasher o.l. fra backup per i dag.)

Gå så inn i /restore på kolje, og lag en mappe med brukernavnet e.l.Sjekk at brukeren finnes i backup:

grep <bruker> /backup/cassarossa/_export_cassarossa_gruppe/full/<siste datoen>.idx

Hent ut brukermappen:

for FILE in $( /root/backup-restore-list gruppe ); do echo $FILE; tar -g /dev/null -zxvf $FILE ./bruker; done

Sjekk at brukeren ikke eksisterer i hjemmemappen på cass. Hvis ikke, kan du starte overføringen:

rsync -vPa <bruker> login:/home/cassarossa/<gruppe>/

Så må du chowne vedkommendes hjemmemappe:

chown -R <bruker>:<gruppe> /home/cassarossa/<grupper>/<bruker>

All done! :)

Midlertidig gjenopprette en hel database

Se også PITR.

Det har blitt fjernet rader du trenger fra en database (her: pst), så du vil gjerne gå tilbake i tid for å lese den. Først, hent dumpen fra kolje:

ssh root@kolje
cd /restore
mkdir pst_20171030 # ryddig. det er denne datoen vi vil hente dumpen fra
cd pst_20171030
grep pst /backup/cirkus/_var_lib_postgresql/daily/201710300402.idx
# match: ./home/backup/pst.dump
tar xzvf /backup/cirkus/_var_lib_postgresql/daily/201710300402.tgz ./home/backup/pst.dump
# dette kan ta litt tid. når outputten sier at den har hentet pst.dump kan du avbryte resten med CTRL+C
rsync -avz ./home/backup/pst.dump herman@login.samfundet.no:~/ # kopier til hjem-mappen din
cd /restore
rm -rf pst_20171030 # rydd opp etter deg!

Deretter, konverter dumpen til en sql-fil, og les den inn i en midlertidig database:

pg_restore pst.dump -f pst_20171030.sql # konverterer til sql
psql postgres
CREATE DATABASE pst_20171030 OWNER = 'herman'; # oppretter databasen
\c pst_20171030 # åpne den nye databasen
\i pst_20171030.sql # fyll den med data - dette kan ta tid!

Når databasen er opprettet, kan den brukes som du ønsker. Når du har funnet ut det du skal, rydd opp etter deg:

psql postgres
DROP DATABASE pst_20171030; # dobbeltsjekk at du dropper riktig database!
\q
rm pst.dump # slett dumpen
rm pst_20171030.sql # slett sql-filen
echo "hurra for meg"

Lenker: Start, lvm, til nye itkere

Epost: itk@samfundet.no | Telefon: 992 15 925 | Sist endret: 2024-10-21 00:41 | Revisjon: 55 (historie, blame) | Totalt: 1905 kB | Rediger