Rsync

Fra GNUskole
Revisjon per 26. des. 2014 kl. 13:33 av Odin (diskusjon | bidrag) (Slette store mengder filer og dokumenter)
(diff) ← Eldre revisjon | Nåværende revisjon (diff) | Nyere revisjon → (diff)
Hopp til: navigasjon, søk

Slette store mengder filer og dokumenter

rsync -a --delete tomkatalog/ skalslettes/

Bruk denne lenge før du prøver deg på rm -rf når du har noen hundretusen filer du skal slette.

rsync som backup

rsync kan brukes til å synkronisere filer, både over nettverk og mellom disker. Det er etter hvert kommer flere avanserte funksjoner i rsync som gjør at du kan bruke kommandoen til å ta nokså gode sikkerhetskopier, også inkrementelle.

Her er et eksempel på et skript som tar inkrementelle sikkerhetskopier - på en litt kul måte (litt avansert forklaring følger lengre nede på siden).

#!/bin/bash
#Lager datostrenger for i dag og i går.
DATO=`date +&y-&m-&d`
LDATO=`date --date='1 days ago' +&Y-&m-&d`

#Og hvor er backup-området koblet opp?
BCKSITE=målmaskin:/backup

#Kataloger det skal tas backup av ligger i filen backup-kataloger.txt
for katalog in `cat /sti_til_filen/backup-kataloger.txt`
do
 rsync -av --delete --link-dest=../$LDATO $katalog $BCKSITE/$DATO
done

Verre var det ikke... men vær klar over at hvis eierrettigheter skal følge med over til $BCKSITE så må du utføre jobben som root på maskinen du sender dette til. Bare så du vet det. Hvis ikke vil eierrettighetene settes til den brukeren som overfører filene. Overfører du dataene til en annen maskin er det praktisk om du har utvekslet SSH-nøkler med denne maskinen slik at du ikke trenger å opplyse rsync om SSH-passordet for root.

I filen backup-kataloger.txt kan det f.eks. stå

/home
/etc
/var/spool/mail

(Det er viktig å ikke skrive /home/ - da vil ikke selve katalogen home komme med til backup (bare alt som ligger i home-katalogen).)


Den litt avanserte forklaringen

Dette lille rsync-skriptet lager en katalog på maskinen du sender backupen til som ser slik ut 2007-01-03 (hvis backupen ble tatt 3. januar 2007) som inneholder alle kataloger og filer som ligger i katalogene/filene du viser til i filen backup-kataloger.txt. Det som er litt spesielt er at dagen etter vil skriptet lage en katalog som heter 2007-01-04 og du finner alle kataloger og filer i den katalogen også. Men... filer i 2007-01-04 som er identiske (som ikke har endret innhold eller rettigheter) med filer i 2007-01-03 er linket til samme inode (også kalt en "hard link" i motsetting til en "symolic link"). Det betyr på godt norsk at filreferansen i begge katalogene viser til samme fysiske sted (fil) på harddisken. Så selv om alle filer finnes i begge kataloger er det ikke brukt mer plass på å legge inn 2007-01-04-katalogen enn det det er endrede filer i denne katalogen. Kult eller?

Hvis du skal slette filen må du slette begge filene i katalogene for at den skal "slettes" fra harddisken.

En gang i uken / måneden kan du jo pakke ned en av katalogene med kommandoen

$ tar -zcf /backup/2007-01-03.tar.gz /backup/2007-01-03

Så kan du alltid brenne denne komprimerte filen til en DVD eller et annet passende lagringsmedie (vi bruker stort sett harddisker - det er ikke nok plass på en dvd eller en tape).

Hvis du leste dette og ikke skjønte så mye... pytt pytt - det virker :-)