Bonjour à tous !
J'utilise depuis quelques temps un script pour faire des snapshots ZFS automatiquement. C'est cool, ca marche bien, mais comme les améliorations sont toujours possible, je me suis dit que partager ce truc ici pouvait être productif (et peut-être même servir à certains).
Donc voilà, vos commentaires, suggestions et patches sont les bienvenus :)
(Et oui, je sais, c'est pas très bien codé :p)
Ah, et j'oubliais, le code est publié sous la WTF Public Licence, parce que j'aime pas la VF (vu que j'en ai pas rien à branler, dans la mesure ou les idées de chacun m'intéressent :p)
On 07/01/2011 16:25, Julien Gormotte wrote:
Ah, et j'oubliais, le code est publié sous la WTF Public Licence, parce que j'aime pas la VF (vu que j'en ai pas rien à branler, dans la mesure ou les idées de chacun m'intéressent :p) _______________________________________________ Liste de diffusion du FRsAG http://www.frsag.org/
Salut,
perso j'utilise nexenta core 3.0.1 avec l'outil napp-it (http://napp-it.org/) qui permet de gére tout l'attirail de fonctionnalités ZFS dont les snapshot. Comme cet outil est entièrement en perl, tu peux commencer par y jetter un oeil afin de comparer ta manière de faire et la leur ;-)
Sinon qu'utilises tu comme OS pour profiter de ZFS ?
Christophe.
Salut,
On Fri, Jan 07, 2011 at 04:22:48PM +0100, Julien Gormotte wrote:
Bonjour à tous !
J'utilise depuis quelques temps un script pour faire des snapshots ZFS automatiquement. C'est cool, ca marche bien, mais comme les améliorations sont toujours possible, je me suis dit que partager ce truc ici pouvait être productif (et peut-être même servir à certains).
Donc voilà, vos commentaires, suggestions et patches sont les bienvenus :)
Ralf Engelschall a fait un script qui gère cela de façon assez propre pour UFS (qui supporte les snapshots sous FreeBSD) et ZFS.
http://people.freebsd.org/~rse/snapshot/
Il s'intègre au framework periodic(8) de FreeBSD pour faire tourner les snapshots.
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 +.