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…
Avant toutes choses, sachez qu'OpenBSD est livré avec
l'outil openrsync
qui vous sera très utile pour synchroniser
deux répertoires sur votre serveur, voire de votre serveur vers
une autre machine à travers un tunnel ssh.
Il est d'autant plus pratique qu'il ne copie que les fichiers qui
ont changés.
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.
Quelques exemples :
Copie le contenu de repertoire1 vers repertoire2 ainsi que tous son contenu | openrsync -r repertoire1/ /home/repertoire2/ |
Pareil qu'au-dessus, mais supprime les fichiers absents dans repertoire1 et présents dans repertoire2 | openrsync -r --delete repertoire1/ /home/repertoire2/ |
Pareil que le premier, mais conserve les permissions, les liens symboliques… | openrsync -a repertoire1/ /home/repertoire2/ |
Sauvegarde le contenu de repertoire1 sur un serveur accessible en ssh dans le dossier /backup via le compte toto | openrsync -e "ssh" -a repertoire1/ toto@chezmoi.tld:/backup |
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
.
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, logs… Le paragraphe suivant est donc essentiel, ne passez pas à côté ;)
Nous allons utiliser la seconde partition du disque externe pour y sauvegarder les autres données qui nous semblent importantes. Tout d'abord, on crée un point de montage :
# mkdir -p /mnt/sauvegardes
Ensuite, on ajoute une ligne au fichier /etc/fstab
pour monter ce disque :
782f1ddb783cdd13.d /mnt/sauvegardes ffs rw,nodev,nosuid,softdep,noatime 1 2
Afin de le monter, entrez mount -a
.
Vous pouvez changer les droits en écriture sur ce disque avec chmod
ou
l'attribuer à un utilisateur.
Si la machine à sauvegarder n'est pas un système OpenBSD (cf openrsync), je vous conseille d'installer l'excellent outil rsync pour vos sauvegardes, qui ne copiera que les fichiers qui ont été modifiés. 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/
N'hésitez pas à consulter la FAQ officielle sur le sujet.
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 -p <port ssh>" -avz --progress --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.
Cette solution peut ne pas convenir, en particulier si vous souhaitez permettre à plusieurs utilisateurs de réaliser des sauvegardes. Préférez dans ce cas la mise en place d'un chroot SFTP.
Une autre solution consiste à utiliser syncthing détaillé plus loin.