[Systemd/Systemctl] Automatiser le lancement du script de BackUp

Applications, problèmes de configuration réseau
Backtoback
yeomen
Messages : 263
Inscription : jeu. 26 avr. 2012, 23:33

[Systemd/Systemctl] Automatiser le lancement du script de BackUp

Message par Backtoback »

Bonsoir,

J'ai créé un script à base de rsync pour faire des backups de ma machine.

Je souhaiterais automatiser son lancement. Je souhaite utiliser systemd pour deux raisons. D'un cron n'est pas installé par défaut sur Archlinux et de deux, ca me permettra d'apprendre un truc nouveau.

Je me tourne donc vers le forum pour valider mes fichiers. Ai je oublié qqch? ai-je bien fait les choses?

backup.timer

Code : Tout sélectionner

[Unit]
Description=Execute the Back Up script every 4 hours

[Timer]
OnCalendar=00/4:00
OnCalendar=*-*-* 00/4:00:00
Unit=backup.service

[Install]
WantedBy=multi-user.target
Ou alors ce type de Timer

Code : Tout sélectionner

[Unit]
Description=Execute the Back Up script every day

[Timer]
OnBootSec=10min
OnUnitActive=1d
Unit=backup.service

[Install]
WantedBy=multi-user.target

backup.service

Code : Tout sélectionner

[Unit]
Description=Script to Back Up my laptop regularly

[Service]
Type=
ExecStart=/home/toto/BackUp/rsync_backup.sh

[Install]
WantedBy=multi-user.target
Concernant le répertoire, pour ces deux fichiers, doivent ils être placés dans /etc/systemd/system/ ou un autre répertoire?

Merci pour votre aide.
B2B
Avatar de l’utilisateur
waitnsea
Maître du Kyudo
Messages : 2114
Inscription : jeu. 15 mars 2012, 05:08

Re: [Systemd/Systemctl] Automatiser le lancement du script de BackUp

Message par waitnsea »

Backtoback a écrit : sam. 29 juin 2019, 23:53 J'ai créé un script à base de rsync pour faire des backups de ma machine.
Bonjour,
Je te conseillerai plutôt 2 scripts différents : un en root pour la sauvegarde système, l'autre en --user pour tes data persos
Pour Borg j'ai donné un exemple pour des data persos, mais tu fais le même depuis root pour l'OS
Pour les Data en "systemd user", il faut créer un dossier nommé .config/systemd/user (user, pas B2B) et y placer tes bkp.service et bkp.timer
Pour l'OS ce sera une unit et un timer habituels

Ce qui "m'interpelle dans le vécu" c'est plutôt :
Backtoback a écrit : sam. 29 juin 2019, 23:53 Description=Execute the Back Up script every 4 hours
Si tu dois faire des sauvegardes aussi rapprochées (je n'en fais qu'une chaque matin), tu ne serais pas mieux avec un système en continu, syncthing par exemple ?
Je crois que btrfs permet aussi des "snapshots", mais là je n'y connais rien et ça t'obligerait à refaire ton système en partitionnement btrfs

Edit :Pour les data avec rsync,c'est assez complexe et lourd d'en garder plusieurs versions, par exemple 7 sauvegardes incrémentales quotidiennes différentes avec délétion automatique de la plus ancienne pour faire de la place à celle du jour. Et pourtant il est nécessaire de ne pas effacer de suite les anciennes données que l'on croit périmées, avoir droit au remords....
C'est plus facile, rapide, et économique en place occupée, avec borg ou restic qui sauvegardent les modifications et ne recopient pas des blocs pré-existants. Borg par exemple, qui permet la compression, me garde 3 données mensuelles + 4 hebdomadaires + 7 quotidiennes pour 38 G alors que chacune fait à elle seule 30 G... et le tout en quelques minutes seulement chaque matin.
Backtoback
yeomen
Messages : 263
Inscription : jeu. 26 avr. 2012, 23:33

Re: [Systemd/Systemctl] Automatiser le lancement du script de BackUp

Message par Backtoback »

Bonjour,

Merci pour votre réponse.

Alors pour commencer je vais préciser un peu mon idée de système de sauvegarde.

Aujourd'hui j'ai un serveur en local (LAN) sur lequel je synchronise mes fichiers persos avec Rsync. Il ne sauvegarde que des fichiers présents dans mon home.

Une fois que ce serveur sera totalement configuré et fonctionnel. Je ferais un rsync entre ce serveur et un autre distant. On parle donc ici uniquement de fichiers utilisateur.

Pour la partie système, je pense mettre en place un autre type de sauvegarde.

J'avais mis toutes les 4 heures dans une version, puis j'ai compris qu'on pouvait aussi se baser sur le boot du device, donc j'en ai fait un deuxième qui me semble plus réaliste.

Je précise qu'il s'agit d'un laptop donc pas toujours allumé.
Avatar de l’utilisateur
waitnsea
Maître du Kyudo
Messages : 2114
Inscription : jeu. 15 mars 2012, 05:08

Re: [Systemd/Systemctl] Automatiser le lancement du script de BackUp

Message par waitnsea »

Pour tes données persos il faut donc un service systemd/utilisateur, mettre tes unit et timer dans un dossier .config/systemd/user/, ton script là où tu as configuré ton PATH (traditionnellement .local/bin/), et lancer les commandes en user et avec l'option --user : $ systemctl --user enable ...
Quand tu t'attaqueras à l'OS, rsync est LA méthode de choix pour sa simplicité et son efficacité en cas, soit de restauration du système, soit de clonage vers une autre machine.
Bien configurer le fichier d'exclusions, le Wiki fr est à jour.
Comme toujours il y a foultitude d'autres systèmes, à toi de voir.
Backtoback
yeomen
Messages : 263
Inscription : jeu. 26 avr. 2012, 23:33

Re: [Systemd/Systemctl] Automatiser le lancement du script de BackUp

Message par Backtoback »

Justement, j'ai un souci avec le placement des fichiers.

Dans /etc/systemd/system/ ça pose souci à cause de l'auth ssh par clé.
Mais si je crée le répertoire .config/systemd/user/ mes fichiers dedans ne semblent pas être reconnus.

Code : Tout sélectionner

> pwd
/home/toto/.config/systemd/user

Code : Tout sélectionner

> ll  
total 8
-rw-r--r-- 1 toto toto 242 30 juin  16:15 backup.service
-rw-r--r-- 1 toto toto 191 30 juin  16:31 backup.timer

Code : Tout sélectionner

> cat backup.timer 
[Unit]
Description=Execute the Back Up script 10 min after every power on and then every 12h

[Timer]
OnBootSec=10min
OnUnitActiveSec=6h
Unit=backup.service

[Install]
WantedBy=timers.target

Code : Tout sélectionner

> cat backup.service 
[Unit]
Description=Script to Back Up my laptop
Wants=network-online.target
After=network-online.target

[Service]
User=toto
Group=toto
ExecStart=/home/toto/BackUp/backup/rsync_backup.sh

[Install]
WantedBy=multi-user.target
Je pense que mes fichiers timer et service sont corrects.

Donc si vous avez des idées, je vous en remercie
Avatar de l’utilisateur
waitnsea
Maître du Kyudo
Messages : 2114
Inscription : jeu. 15 mars 2012, 05:08

Re: [Systemd/Systemctl] Automatiser le lancement du script de BackUp

Message par waitnsea »

Backtoback a écrit : dim. 30 juin 2019, 16:47 Donc si vous avez des idées, je vous en remercie
Je suis attendu, donc pas trop le temps de chercher... mais je te donne les miens en vitesse :
1. Ils sont exécutables, mais je crois que ça ne sert à rien (à vérifier)
2. le service .config/systemd/user/bkpdata.service

Code : Tout sélectionner

[Unit]
Description=Sauvegarde des donnees de waitnsea

[Service]
Type=oneshot
ExecStart=/home/waitnsea/.local/bin/Borg_Daily.sh
3. le timer .config/systemd/user/bkpdata.timer

Code : Tout sélectionner

[Unit]
Description=Sauvegarde des donnees de waitnsea quotidienne
Documentation=man:borg  

[Timer]
OnCalendar=*-*-* 07:00:00
Persistent=true

[Install]
WantedBy=timers.target
...et, bien sûr $ systemctl --user enable bkpdata.timer , rien d'autre
Backtoback
yeomen
Messages : 263
Inscription : jeu. 26 avr. 2012, 23:33

Re: [Systemd/Systemctl] Automatiser le lancement du script de BackUp

Message par Backtoback »

Merci pour les infos, je suis entrain de tester et je vous fais un retour.

Désolé pour mon délai de réponse
Backtoback
yeomen
Messages : 263
Inscription : jeu. 26 avr. 2012, 23:33

Re: [Systemd/Systemctl] Automatiser le lancement du script de BackUp

Message par Backtoback »

Bonjour,

J'ai un souci, mon script ne semble pas être capable de pinger mon serveur, alors qu'en le lançant manuellement ca marche.
Je vais investiguer
Répondre