Skip to main content

Sauvegarde

Borgbackup

Pour effectuer des sauvegardes incrémentielles, j'utilise BorgBackup qui a l'avantage de pouvoir garder seulement X sauvegardes, de restaurer uniquement un fichier ou dossier en particulier et de monter la sauvegarde dans le système de fichier.

En prérequis, il faut bien sûr avoir installé le paquet borgbackup.

Voici mon script :

#!/bin/bash

# Définir le répertoire de sauvegarde
backup_dir="/mnt/disque1/borgbackup"

# Définir le nom de l'archive
archive_name=borg_backup

# Définir le nombre de sauvegardes à conserver
num_backups_to_keep=5

# Obtenir la date et l'heure actuelles
current_date_time=$(date +%d-%m-%Y_%H-%M-%S)

# Supprimer les sauvegardes excédentaires
borg prune --keep-last $num_backups_to_keep "${backup_dir}"

# Créer la sauvegarde incrémentielle en excluant les dossiers indiqués
borg create -v --stats --compression none \
    --exclude /swapfile \
    --exclude '/dev/*' \
    --exclude '/proc/*' \
    --exclude '/sys/*' \
    --exclude '/tmp/*' \
    --exclude '/run/*' \
    --exclude '/mnt/*' \
    --exclude '/media/*' \
    --exclude '/lost+found' \
    "${backup_dir}::${archive_name}_${current_date_time}" /

# https://doc.ubuntu-fr.org/borgbackup
# restauration
# borg extract --progress /chemin/vers/repertoire/de/sauvegarde::borg_backup_01-01-2021_12-00-00

# Montage de la sauvegarde
# borg mount /backup/borg::20230119 /tmp/backup
# Démontage
# borg umount /tmp/backup

Ne pas oublier de personnaliser selon les besoins et la configuration du système de fichier.
Notez qu'à la fin du script, je me suis laissé des notes.

DD

dd va me permettre de faire une image complète que je vais envoyer sur un autre serveur en cas de panne du disque dur système.

Voici le script simplifié :

!#/bin/bash

# serveur ftp
FTP_USER='user'
FTP_PASSWORD='passwd'
FTP_SERVER='exemple.com'
FTP_MOUNTPOINT='/mnt/ftp'
FTP_BACKUP='/Disque_1/backup'

# Définir la source (sda) et la destination
src_disk=/dev/sda
dst_dir=${FTP_MOUNTPOINT}${FTP_BACKUP}
dst_image=${dst_dir}/sda_image_$(date +%d%m%Y).img
error_log=${dst_dir}/ERROR_image_$(date +%d%m%Y)

# création du dossier de montage

fusermount -u $FTP_MOUNTPOINT ;
mkdir $FTP_MOUNTPOINT

# Montage FTP

curlftpfs $FTP_SERVER $FTP_MOUNTPOINT -o user=$FTP_USER:$FTP_PASSWORD

# Commencer la copie bloc par bloc
echo "Démarrage de la création de l'image disque..."
dd if=$src_disk of=$dst_image bs=4096 conv=noerror,sync

# Vérifier si la copie s'est terminée avec succès
if [ $? -eq 0 ]; then
  echo "Image disque créée avec succès dans $dst_image."
  find $dst_dir -type f -name "sda_image_*" -not -name "$(basename $dst_image)" -delete
else
  echo "Erreur lors de la création de l'image disque."
  touch $error_log
fi

# Démontage du dossier ftp

sync
fusermount -u $FTP_MOUNTPOINT

# Suppression du point de montage

sleep 2
rm -r $FTP_MOUNTPOINT

Bien sûr, il ne faut pas oublier de l'adapter et de créer une tâche CRON.