tuxer Guru
Joined: 10 May 2004 Posts: 328
|
Posted: Mon Mar 28, 2005 11:03 pm Post subject: Backup incrementale con tar |
|
|
Buuuuh sono disperato sono 3 ore che cerco di capirci qualcosa ma niente da fare...
Devo fare uno script che backuppa su una dir locale (ma montata da smb) tutta una cartella (grossina, 1,32 GB).
Ora subito stavo provando con dump, poi (dopo mezz'ora di parolacce) mi sono accorto che andava solo con ext2/3.
Allora mi sono dato a tar, ho letto di tutto ma proprio non riesco a capire...
Dunque vorrei fare backup incrementale tutti i giorni e full una volta ogni 10 (più o meno).
Ora '-g' crea il tarrone e mi fa una lista dei vari file, così se ci sono già aggiornati non li mette più.
Ora io mi creo il full, poi faccio l'incrementale ma non riesco cazzarola a riestrarre tutto dopo :O!!
E poi non capisco perché diavolo '-u' che dovrebbe aggiungere solo se sono nuovi li aggiunge anche se sono uguali, così ho più copie dello stesso file!
vabbeh incollo quello che ho fatto fino adesso, vi prego aiutatemi...
Code: | #!/bin/bash
set +x
#script per backuppare tutto usando tar
#per permettere l'update non devo usare un archivio compresso
#non ho bisogno di salvare permessi proprietari o simili
#posizione delle varie directory
PAPI='/home/andrea/works/progs'
DST='/home/andrea/papi'
#opzioni per la creazione di un archivio W=controllo,P=path assoluto,p=tengo permessi
CR_OPTIONS='-cpPWf'
#opzioni per l'update
UP_OPTIONS='-cPwpf'
INCR='-g log.snar'
#faccio il diff per vedere se va bene
D_OPTIONS='-df'
#l'opzione all'inizio e' nulla
OPTIONS=''
#modalita (full update)
MODE=''
#controllo la data, se e' un multiplo di 10 allora devo fare il backup completo
#altrimenti updato solamente l'esistente
NUM=expr $(date | cut -d ' ' -f 3) % 10
#se non c'e nessun backup full ne faccio uno
if ls $DST | grep full > /dev/null;
then
echo "backup totale trovato"
else
echo "backup totale non trovato"
NUM=0
fi
if [[ "$NUM" = 0 ]]
then
OPTIONS=$CR_OPTIONS
MODE='full'
#cancello il precendete backup full e lascio l'ultimo update
for f in *full*
do rm -vi $f && echo "cancellato $f";
done;
else
OPTIONS=$UP_OPTIONS
MODE='update'
fi
#nome del file
NOME="papi_$(date +%F)_$MODE.tar"
echo "adesso faccio il tar vero e proprio"
#faccio il tar vero e proprio
cd $DST
tar $OPTIONS $NOME $INCR $PAPI |
PS poi lo script dovrà essere eseguito su macosx, ma non dovrebbero esserci problemi, e anche se non mi salva i resource fork non è importante... |
|