Samba - sauvegarde des fichiers de travail et restauration en cas de problème

Principe général

Samba stocke ses informations dans des fichiers avec l’extension tdb. Ces fichiers sont stockés à deux endroits :

  • /var/cache/samba : fichiers de travail
  • /etc/samba/secrets.tdb : fichier contenant les codes d’accès à samba (SID...).

Une sauvegarde de ces fichiers est effectuée une fois par semaine. Les fichiers sont stockés dans /root/backup/samba/cache/ et /root/backup/samba/etc/. Les fichiers sauvegardés portent l’extension tdb.bak.

Script de sauvegarde

cat backup_samba
mkdir -p /root/backup/samba/cache
cd /root/backup/samba/cache
tdbbackup /var/cache/samba/*.tdb 2>/var/log/errortdb
mv -f /var/cache/samba/*.bak .
mkdir -p /root/backup/samba/etc
cd /root/backup/samba/etc
tdbbackup /etc/samba/secrets.tdb 2>>/var/log/errortdb
mv -f /etc/samba/secrets.tdb.bak .
if [ -s /var/log/errortdb ]; then
mail -s "Echec sauvegarde fichiers tdb sur serveur" root </var/log/errortdb
fi

Des optimisations pourraient être réalisées, notamment en récupérant automatiquement le nom du serveur et en modifiant la boite de destination du mél (en cas d’erreur), en la positionnant sur root (avec redirection dans les paramètres de configuration de postfix).

La sauvegarde est déclenchée une fois par semaine par la ligne suivante, insérée dans le crontab :

00 3 * * 0 /root/backup_samba

Que faire en cas de problème ?

On peut suspecter un problème sur les fichiers samba quand samba ne fonctionne plus tout à fait normalement. Par exemple, sur un serveur d’impression, on n’a plus la possibilité d’installer une imprimante.

Diagnostiquer le problème

Se positionner dans le dossier /var/cache/samba, et lancer la commande :

tdbbackup -v *.tdb

En cas d’erreur, on aura un message du type :

Restoring test.tdb

Résoudre le problème

Si le problème survient sur un fichier winbind, arrêter le service winbind :

service winbind stop

Si le problème survient sur un autre fichier, arrêter le service samba :

service smb stop

Supprimer ensuite le fichier qui ne fonctionne pas :

rm test.tdb

Récupérer la dernière version correcte depuis la sauvegarde :

cp /root/backup/samba/cache/test.tdb.bak test.tdb

Vérifier le fichier :

tdbbackup -v test.tdb

Si tout est ok, redémarrer le service qui a été arrêté :

service winbind start
service smb start