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.
- 2. kolje
- 3. altersex (alt, kun fullbackup)
- 4. cirkus (alle filsystemer)
- 5. cassarossa (alle filsystemer som ikke er nevnt under).
- 6. cassarossa: gsek, fs, ku, propheten
- 7. cassarossa: dg, kiss, lsl, lk, nybygg
- 8. cassarossa: regi, sikring, su, tftpboot, torsk
- 9. cassarossa: kkontor, laafte, sangern
- 10. cassarossa: klst, sg, ksg
- 11. cassarossa: salong, studentmediene
- 12. cassarossa: styret, sit-arkiv
- 13. cassarossa: vk
- 14. cassarossa: ark
- 15. cassarossa: arkivet
- 16. cassarossa: felles
- 17. cassarossa: fg
- 18. cassarossa: fk
- 19. cassarossa: itk
- 20. cassarossa: (tom da itk bruker >24t på backup sep.2022)
- 21. cassarossa: vertskapet
- 22. cassarossa: lydarkivet
- 23. cassarossa: sit
- 24. cassarossa: uka
- 25. cassarossa: ymse, skp
- 26. cassarossa: musikk
- 27. sivzooce (nagios), lim
- 28. cassarossa: mg-layoutarkivet
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 filSå 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-backupDu 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
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