Sauvegarder

On peut utiliser un serveur à la maison pour sauvegarder ses documents. C'est une précaution qui ne fait jamais de mal.

Il faut penser aussi à sauvegarder le serveur en cas de défaillance du disque dur qui vieillit un peu, d'un orage virulent ou encore d'un dérapage incontrôlé du chat qui joue derrière les meubles 😼... Ça, c'est INDISPENSABLE.

Sauvegarde automatique de la racine du serveur

OpenBSD a déjà pensé à tout. En effet, il sauvegardera chaque jour le système si une partition /altroot est présente.

Nous allons donc ajouter la ligne suivante dans le fichier "/etc/fstab" :

782f1ddb783cdd13.a /altroot ffs xx 0 0

Vous remarquerez qu'on identifie la partition avec <numéro duid du disque>.a. C'est bien "xx" qui doit être précisé comme option de montage, c' est spécifique à la fonctionnalité altroot.

Afin que le serveur soit sauvegardé chaque nuit, ajoutez maintenant la ligne suivante dans le fichier "/etc/daily.local" :

ROOTBACKUP=1

Et c'est tout ! 😁

Si un jour le disque du serveur a une défaillance, vous pourrez quand même démarrer pour le dépanner. Il faudra alors booter sur la partition de sauvegarde. Tout cela se passera au tout début du démarrage de la machine, lorsque vous verrez le prompt boot >. Vous écrirez à ce moment là :

boot > set device hd1a
boot > boot -s

Ou tout en une seule fois :

boot > boot -s hd1a:/bsd

Si le moment venu vous ne savez plus sur quelle partition se trouve votre sauvegarde, entrez ceci :

boot > machine diskinfo

⚠ ATTENTION : seul le contenu de la partition racine / est sauvegardé. Si /usr/local, /var ou autres sont montées sur des partitions respectives, elles ne seront pas sauvegardées. Ce n'est pas grave pour dépanner un système puisqu'avec le partitionnement par défaut, vous disposerez quand même du système de base, mais en aucun cas des paquets tiers installés ou vos données de sites web, ... Le paragraphe suivant est donc essentiel, ne passez pas à côté 😉

N'hésitez pas à consulter la FAQ officielle sur le sujet.

Autres sauvegardes

rsync

Vous pouvez utiliser une partition dédiée à vos sauvegardes. Dans l'exemple ci-dessous, on utilisera le moint de montage "/mnt/sauvegarde" créé pour nos besoins.

Je vous conseille d'installer l'excellent outil "rsync" pour vos sauvegardes, qui ne copiera que les fichiers qui ont été modifiés. Notez que sous OpenBSD, vous disposez de base d'un équivalent "openrsync".

Il s'agit en effet d'une réécriture de rsync pour OpenBSD, qui propose moins d'options et est actuellement moins performante, mais qui a le mérite d'exister par défaut.

Si la machine cible est une OpenBSD "pure" (sans le port rsync d'installé en plus), précisez l'option "--rsync-path=openrsync". Par défaut, c'est l'exécutable "rsync" qui est utilisé sinon.

Voici un exemple d'utilisation sur votre serveur.

Ajoutez au fichier "/etc/weekly.local" les lignes suivantes afin de sauvegarder quotidiennement les dossiers "/var" et "/usr/local" :

/usr/local/bin/rsync -a --delete /var/ /mnt/sauvegardes/var.bak/
/usr/local/bin/rsync -a --delete /usr/local/ /mnt/sauvegardes/usrlocal.bak/

Notez que vous pouvez aussi envoyer des données à sauvegarder de votre ordinateur personnel si vous voulez utiliser votre serveur comme espace de stockage. À partir de cet ordinateur, lancez la commande :

$ rsync -e "ssh" -avz --delete /dossier/a/sauvegarder \
  toto@chezmoi.tld:/mnt/sauvegarde/toto

On utilise une connexion SSH avec le compte toto pour envoyer tout un dossier sur le serveur.

tar

Vous pouvez créer une archive des différents points de montage de votre système avec "tar".

Voici une proposition générant une archive avec un nom contenant la date du jour.

BACKDIR="/mnt/bckp"
BACKLIST="/var
/home
/etc"
for i in $BACKLIST; do
    backupfile="${BACKDIR}/$(basename ${i})-$(date +%F).tar.gz"
    tar -czf "${backupfile}" "${i}"
done
chmod 700 "${BACKDIR}"
# remove olds
#find "${BACKDIR}" -type f -mtime +90 -delete

À la fin du script, vous pouvez décommenter la ligne commençant par "#find" si vous souhaitez supprimer les archives vieilles de plus de 90 jours.