đŸ’Ÿ Sauvegarde dĂšs le branchement avec Systemd

| ~ 4 mins | 808 mots

Introduction

Dans l’article sur mon processus de gestion de photos, je notais que je n’avais pas poussĂ© l’automatisation Ă  fond sur la partie sauvegardes du contenu des cartes avec le NAS. C’est maintenant chose faite. Je vais donc dans cette logique, expliquer ici comment on peut facilement gĂ©rer ce type d’automatisation avec udev et systemd.

Enregistrement automatique de carte sd

Le principe est assez simple :

Créer une rÚgle Udev

Systemd n’est pas capable par lui-mĂȘme d’écouter les Ă©vĂšnements provenant des pĂ©riphĂ©riques. Le logiciel permettant cela est udev. Il faut donc rajouter une nouvelle rĂšgle .rules dans le dossier /etc/udev/rules.d/.

📝 Note : j’ai volontairement affichĂ© ici que quelques rĂ©sultats de la commande.

$ udevadm info --query=all --name=/dev/mmcblk0


N: mmcblk0


E: SUBSYSTEM=block


E: DEVNAME=/dev/mmcblk0


$ udevadm info --query=all --name=/dev/mmcblk0p1


N: mmcblk0p1


E: SUBSYSTEM=block


E: DEVNAME=/dev/mmcblk0p1

Il est assez facile dans le cas prĂ©sent de bien filtrĂ© dans mon cas :

/etc/udev/rules.d/20-automount_sd_cards.rules

# Automount sd card on insertion
ACTION!="remove", SUBSYSTEM=="block", KERNEL=="mmcblk0p*", ENV{SYSTEMD_WANTS}+="mnt-sdcard.mount"

Ce qui signifie :

📝 Note : Il est prĂ©fĂ©rable pour des raisons de fiabilitĂ© d’utilisĂ© ACTION!="remove" plutĂŽt que ACTION=="add".

Point de montage

Les points de montages avec systemd peuvent ĂȘtre aussi bien crĂ©Ă© avec des fichiers .mount qu’avec une syntaxe /etc/fstab. Aucune des deux mĂ©thodes n’est plus valable. La mĂ©canique de .mount Ă  l’avantage/le dĂ©savantage de produire des fichiers sĂ©parer pour chaque point de montage, ce qui est Ă  la fois plus complexe, mais bien plus pratique, notamment si vous cherchez Ă  empaqueter la configuration.

Attention le nommage doit “correspondre” au point de montage ainsi mnt-sdcard correspond à /mnt/sdcard

/etc/systemd/system/mnt-sdcard.mount

[Unit]
Description=Mount SD Card
# liaison forte Ă  save_photos.service, 
# - Demande que save_photos.service soit activé
# - s'arrĂštera quand save.photos.service s'arrĂȘtera.
BindsTo=save_photos.service

[Mount]
What=/dev/mmcblk0p1
Where=/mnt/sdcard
# On préfÚrera ne pas monter la carte en écriture.
Options=ro

Avec ce point de montage, systemd sait maintenant, qu’en cas d’activation de mnt-sdcard.mount:

Service de sauvegarde

On peut maintenant faire la sauvegarde a proprement dit :

/etc/systemd/system/save_photos.service

[Unit]
# liaison forte Ă  mnt-sdcard.mount
# - Demande que mnt-sdcard.mount soit activé.
# - s'arrĂštera quand  mnt-sdcard.mount s'arrĂȘtera.
# - On met une relation d'ordre pour que le montage s'execute avant.
After=mnt-sdcard.mount
BindsTo=mnt-sdcard.mount
# On empĂȘche le dĂ©marrage manuel, seul mnt-sdcard.service doit dĂ©marrer ce service
RefuseManualStart=true

[Service]
# on démarre le service avec les droits utilisateur
User=inkey
# le type oneshot permet facileent de cumuler les commandes
Type=oneshot
# Photos
ExecStart=/home/inkey/.local/bin/phockup /mnt/sdcard/ /home/inkey/Images/Photos/ -c 6 --progress --file-type image
# Video
ExecStart=/home/inkey/.local/bin/phockup /mnt/sdcard/ /home/inkey/Vidéos/Perso/ -c 6 --progress --file-type video

📝 Note : j’ai installĂ© phockup dans $HOME/.local/bin pour le moment

Aller plus loin ?

Notification

Le systĂšme ici ne notifie ni quand la copie est dĂ©marrĂ© ni quand elle est finie. Pour ma part, j’ai complĂ©tĂ© ce mĂ©canisme avec des commandes qui me notifie avec xmpp. C’est trĂšs facile avec ExecStartPre et ExecStartPost.

SĂ©curisation

Si vous voulez vous amuser un peu, vous pouvez sĂ©curiser un peu plus le service Ă  l’aide de: systemd-analyze security save_photos.service

MĂ©canisme de Sauvegarde de donnĂ©es hors-ligne (“backup”)

La mĂ©canique pourrait ĂȘtre ajustĂ© pour gĂ©rer un systĂšme de sauvegarde du contenu du NAS :

C’est une mĂ©thode Ă  la fois simple et efficace pour pouvoir faire des sauvegardes et s’assurer de cette façon que la sauvegarde est bel et bien offline.

Conclusion

Il est assez facile de gĂ©rer les points de montage avec systemd pour ce type d’usage. Bref Systemd, c’est sympa, c’est puissant, n’hĂ©sitez pas Ă  jouer avec 😃.