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 $data...@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 +.

-- 
Jérôme Benoit aka fraggle
La Météo du Net - http://grenouille.com
OpenPGP Key ID : 9FE9161D
Key fingerprint : 9CA4 0249 AF57 A35B 34B3 AC15 FAA0 CB50 9FE9 161D

Attachment: pgpGNDa0zTPmj.pgp
Description: PGP signature

_______________________________________________
Liste de diffusion du FRsAG
http://www.frsag.org/

Répondre à