Le Fri, 07 Jan 2011 16:22:48 +0100, Julien Gormotte a écrit :
# KEEP_DAYS : number of hourly snapshots to keep # KEEP_DAYS : number of daily snapshots to keep # KEEP_DAYS : number of weekly snapshots to keep KEEP_HOURS=25 KEEP_DAYS=8 KEEP_WEEKS=5 KEEP_MONTHS=13
J'aurais plutôt mis des valeurs vides puis ensuite
[ -z $VARIABLE ] && (echo "using default value for VARIABLE"; VARIABLE=${VARIABLE:-DEFAULT_VARIABLE_VALUE}) ^ un printf, çà serait encore mieux
cat << EOF
cat << EOF
Tu ouvres stdin comme descripteur de fichiers pour rien, printf et echo, c'est bien aussi. Et bong des fonctions qui font des exit, c'est vraiment pas bon. return 1 et ensuite tu t'occupes du code retour pour sortir du script au besoin.
for DATASET in $DATASETS do /sbin/zfs snapshot -r $DATASET@AutoH`date '+%Y%m%d_%H:%M'` done
C'est une fonction à factoriser çà.
for BASIS in HOURLY DAILY WEEKLY MONTHLY
Je vois pas l'utilité de ce découpage ... mais alors pas du tout :) Tu as défini un temps de rétention des snapshots, cron te donne des heures d’exécution. Pourquoi tu découpes encore artificiellement avec un case ? Ton script doit être capable de savoir s'il est lancé pour le backup du mois ou du jour tout seul comme un grand en fonction de l'existence d'ancien type de snapshot etc.
/sbin/zfs list -t snapshot\ | grep AutoH\ | grep `date -v-${KEEP_HOURS}H '+%Y%m%d_%H:%M'`\ | awk '{print $1}'\ | while read OLDFS; do /sbin/zfs destroy $OLDFS ;donecpde a factoriser
code à factoriser.
done }
case $1 in backup) BASIS=$2 [ -z "$BASIS" ] && usage_backup backup ;; clean) clean;; *) usage ;; esac
Et tu sais si tout est Ok parce que tu gères pas exactement proprement les erreurs ...
handle_num_error () { [ $1 -neq 0 ] && (echo "$2 command/function has failed with errno $1, exiting"; exit 1) } Ou un truc approchant.
a +.