Exemple d’un script simple de sauvegarde d’ACLs d’un serveur samba.
Lien sur comment Ajouter/Modifier ACL sur répertoire
Le script, dans le cas suivant ce trouve dans /home/admin/scripts
Arborescence premier niveau du serveur samba:
/partage/dossiers/rh /partage/dossiers/sg /partage/dossiers/compta
Le but est de sauvegarder les ACLs de ces trois arborescences dans un répertoire de sauvegarde sur le serveur, qui sera lui même sauvegardé sur un robot de sauvegarde.
Création des répertoires de sauvegarde pour les ACLs.
mkdir /home/admin/sauvegarde/acl/rh mkdir /home/admin/sauvegarde/acl/compta mkdir /home/admin/sauvegarde/acl/sg
Le script de sauvegarde
nano backup_acl.sh
#!/bin/bash #
#on initialise la variable de temps
timestamp=$(date +%d-%m-%Y_%Hh-%Mmn-%Ss);
#on initialise les variables des différents chemins
rep01=/partage/dossiers/rh; rep02=/partage/dossiers/compta; rep03=/partage/dossiers/sg; acl01=/bureautique/systeme/acl/rh; acl02=/bureautique/systeme/acl/compta; acl03=/bureautique/systeme/acl/sg;
#Sauvegarde des acl du répertoire /partage/dossiers/rh
#direction la racine du serveur
cd /;
#récupération acl et compression avec gunzip
getfacl -R $rep01 | gzip -f9 > $timestamp.acl_rh.gz;
#déplacement de l’acl dans le répertoire de sauvegarde
mv -f $timestamp.acl_rh.gz $acl01;
#création du log
echo "sauvegarde $timestamp.acl_rh.gz" > /var/log/sauv_acl.log;
#Sauvegarde des acl du répertoire /partage/dossiers/compta
getfacl -R $rep02 | gzip -f9 > $timestamp.acl_compta.gz; mv -f $timestamp.acl_compta.gz $acl02; echo "sauvegarde $timestamp.acl_compta.gz" >> /var/log/sauv_acl.log;
#Sauvegarde des acl du répertoire /partage/dossiers/sg
getfacl -R $rep03 | gzip -f9 > $timestamp.acl_sg.gz; mv -f $timestamp.acl_sg.gz $acl03; echo "sauvegarde $timestamp.acl_sg.gz" >> /var/log/sauv_acl.log;
#nettoyage ACL de +15jours
find /home/admin/sauvegarde/acl/ -nane *.gz -mtime +15 | xargs rm -vf;
#envoie du mail à l’administrateur
mail -s [Serveur_Samba]Sauvegarde_ACL admin@domaine.tld </var/log/sauv_acl.log;
sauvegarde du script
ctrl+x
ce qui donne en entier:
#!/bin/bash # #on initialise la variable de temps timestamp=$(date +%d-%m-%Y_%Hh-%Mmn-%Ss); #on initialise les variables des différents chemins rep01=/partage/dossiers/rh; rep02=/partage/dossiers/compta; rep03=/partage/dossiers/sg; acl01=/bureautique/systeme/acl/rh; acl02=/bureautique/systeme/acl/compta; acl03=/bureautique/systeme/acl/sg; #Sauvegarde des acl du répertoire /partage/dossiers/rh #direction la racine du serveur cd /; #récupération acl et compression avec gunzip getfacl -R $01 | gzip -f9 > $timestamp.acl_rh.gz; #déplacement de l'acl dans le répertoire de sauvegarde mv -f $timestamp.acl_rh.gz $acl01; #création du log echo "sauvegarde $timestamp.acl_rh.gz" > /var/log/sauv_acl.log; #Sauvegarde des acl du répertoire /partage/dossiers/compta getfacl -R $rep02 | gzip -f9 > $timestamp.acl_compta.gz; mv -f $timestamp.acl_compta.gz $acl02; echo "sauvegarde $timestamp.acl_compta.gz" >> /var/log/sauv_acl.log; #Sauvegarde des acl du répertoire /partage/dossiers/sg getfacl -R $rep03 | gzip -f9 > $timestamp.acl_sg.gz; mv -f $timestamp.acl_sg.gz $acl03; echo "sauvegarde $timestamp.acl_sg.gz" >> /var/log/sauv_acl.log; #nettoyage ACL de +15jours find /home/admin/sauvegarde/acl/ -nane *.gz -mtime +15 | xargs rm -vf; #envoie du mail à l'administrateur mail -s [Serveur_Samba]Sauvegarde_ACL admin@domaine.tld </var/log/sauv_acl.log;
rendre le script exécutable
chmod +x backup_acl.sh
Planification du script
crontab -e
exemple, tous les jours à 4h du matin
##sauvegarde des ACL 00 04 * * * /home/admin/scripts/backup_acl.sh > /dev/null