Mi è sempre piaciuta l’idea di avere copie “intelligenti”, ossia
- una copia al giorno per una settimana
- una copia alla settimana per un mese
- una copia al mese per un anno
- una copia all’anno per la parte vecchia.
E mi son sempre arrovellato su come implementarlo nel mio umile scriptino bash con cui facevo alcune copie di sicurezza. mount $QNAP; if cd $QNAP/Calcestruzzo/;then mv qualita.tar.bz2 qualita.old.tar.bz2; tar -acf qualita.tar.bz2 $QUALITA/*; else echo Errore;fi )
E la pigrizia vinceva e mi tenevo solo gli ultimi due. Poi, complice una quasi perdita di dati
E non so più cosa usare, tipo asino di buridano. Perché l’idea di rdiff-backup è davvero valida, ma non ti permette di mantere uno storico “selettivo” come piacerebbe a me. Tanto più che c’è un modo facilissimo per ottenere quelle copie intelligenti (vedi How to keep: daily backups for a week, weekly for a month, monthly for a year, and yearly after that ): basta tenere separata in una cartella diversa ogni categoria (quotidiana, settimanale, mensile, annuale). Così:
- Every day:
- make a backup, put into
dailydirectory - remove everything but the last 7
dailybackups
- make a backup, put into
- Every week:
- make a backup, put into
weeklydirectory - remove everything but the last 5
weeklybackups
- make a backup, put into
- Every month:
- make a backup, put into
monthlydirectory - remove everything but the last 12
monthlybackups
- make a backup, put into
- Every year:
- make a backup, put into
yearlydirectory
- make a backup, put into
Cavolo, è l’uovo di Colombo! Roba che si implementa con un cronjob da 4 righe ed uno script bash che si fa prima a leggerlo che a spiegarlo!
@daily /home/paolo/bin/copie-qualita.sh quotidiane
@weekly /home/paolo/bin/copie-qualita.sh settimanali
@monthly /home/paolo/bin/copie-qualita.sh mensili
@yearly /home/paolo/bin/copie-qualita.sh annuali
#!/bin/bash
QUALITA=/home/qualita
QNAP=/mnt/qnap/Public
QUOTIDIANE=$QNAP/Calcestruzzo/qualita/quotidiane
SETTIMANALI=$QNAP/Calcestruzzo/qualita/settimanali
MENSILI=$QNAP/Calcestruzzo/qualita/mensili
ANNUALI=$QNAP/Calcestruzzo/qualita/annuali
case $FREQUENZA in
quotidiane)
DESTINAZIONE=$QUOTIDIANE/qualita-$( date +%F ).tar.bz2
DELENDA=$QUOTIDIANE
MANTENENDA=7
;;
settimanali)
DESTINAZIONE=$SETTIMANALI/qualita-$(date +%F).tar.bz2
DELENDA=$SETTIMANALI
MANTENENDA=4
;;
mensili)
DESTINAZIONE=$MENSILI/qualita-$(date +%F).tar.bz2
DELENDA=$MENSILI
MANTENENDA=12
;;
annuali)
DESTINAZIONE=$ANNUALI/qualita-$(date +%F).tar.bz2
;;
*)
echo "Usage: $0 (quotidiane|settimanali|mensili|annuali)"
exit 5
esac
echo Copie $FREQUENZA da $QUALITA a $DESTINAZIONE
mount $QNAP &&
tar --auto-compress --create --file $DESTINAZIONE $QUALITA/* &&
if [[ $FREQUENZA != "annuali" ]]
then
echo In $DELENDA conservo gli ultimi $MANTENENDA file
rm --verbose --force $( ls $DELENDA | head --lines=-$MANTENENDA )
fi
Poi Va bene, va bene, i percorsi sono codificati nello script e non in un file di configurazione. Ma accipuffa, in prima battuta l’avevo scritta in una riga!
mount $QNAP && tar --auto-compress --create --file $DESTINAZIONE $QUALITA/* && rm --verbose --force $( ls $DELENDA | head --lines=-$MANTENENDA )
Credo che per un po’ lo affiancherò a rdiff-backup