Salut à tous,
Je me suis mis à bash il y a pas très longtemps et ce weeke end j’ai bricolé un petit script pour faire mes sauvegardes automatiquement sur un disque externe. L’idée c’est de ne plus avoir à y penser et de pouvoir dormir tranquille en cas de pépin. C’est encore simple mais j’ai essayé de faire les choses proprement, je vérifie que le disque est bien monté, je log un peu ce qu’il se passe, et j’utilise rsync pour garder les permissions et tout ça. Voilà ce que ca donne :
#!/bin/bash
# Répertoires source et destination
SRC="/home/user/Documents"
DEST="/mnt/backup/Documents"
# Fichier de log
LOG="/var/log/backup.log"
DATE=$(date +"%Y-%m-%d %H:%M:%S")
# Vérification que le disque est monté
if mountpoint -q /mnt/backup; then
echo "[$DATE] Début du backup" >> "$LOG"
rsync -av --delete "$SRC" "$DEST" >> "$LOG" 2>&1
if [ $? -eq 0 ]; then
echo "[$DATE] Backup terminé avec succès" >> "$LOG"
else
echo "[$DATE] Erreur pendant le backup" >> "$LOG"
fi
else
echo "[$DATE] Disque de backup non monté" >> "$LOG"
fi
Ca tourne bien en cron, j’ai mis ca tous les deux jours pour l’instant. Je suis sur que c’est perfectible donc si vous avez des remarques, conseils ou mauvaises pratiques à corriger, je suis curieux de vous écouter.
Merci
# Mes remarques
Posté par Benoît Sibaud (site web personnel) . Évalué à 7 (+4/-0).
#!/usr/bin/env bash
en shebangset -eu -o pipefail
au début pour s'éviter des problèmes plus tardprintf
àecho
dès que les variables arrivent-a
je mettrais--archive
par exemple). Les versions courtes c'est sympa quand on les écrit, mais moins quand on les lit (genrecurl -sSLf
).[^] # Re: Mes remarques
Posté par MicP . Évalué à 3 (+2/-0). Dernière modification le 22 juillet 2025 à 16:09.
Bonjour
Il faudrait aussi actualiser la valeur de la variable DATE après la fin de la sauvegarde, sinon, la date de tous les messages envoyés dans backup.log sera toujours la même : celle du lancement du script.
# Date ISO miam
Posté par Nanawel (site web personnel, Mastodon) . Évalué à 2 (+1/-0).
Une syntaxe courte et efficace que j'applique dès que je peux sur
date
:Ce qui signifie "format ISO-8601 avec une précision à la seconde".
En bonus : pas d'espaces, donc plus pratique.
# backup ?
Posté par mahikeulbody . Évalué à 3 (+1/-0).
Même si chacun est libre d'avoir la définition qu'il veut de ce qu'est un backup, force est de reconnaître que
rsync -av --delete
ne correspond pas vraiment à la définition la plus courante.
[^] # Re: backup ?
Posté par Voltairine . Évalué à 2 (+0/-0).
Cela dépend surtout du reste du script. On peut parfaitement faire une sauvegarde incrémentale avec rsync (un nouveau dossier horodaté a à chaque fois et des liens en dur).
[^] # Re: backup ?
Posté par mahikeulbody . Évalué à 3 (+1/-0). Dernière modification le 22 juillet 2025 à 19:33.
Tout à fait, voir par exemple Timeshift., un excellent outil de backup basé sur rsync.
Mais ma remarque était par rapport au script "de backup" présenté, qui plus est avec l'option --delete qui est la marque d'une synchronisation, pas d'un backup (au sens habituel du terme).
Envoyer un commentaire
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.