#!/bin/bash ## Première utilisation # backup.sh -i ## Utilisation # backup.sh -r -h -p -s set -e while getopts "i: r: s: h: p:" opt; do case $opt in i) repo=$OPTARG echo "1. Sans Paraphrase ?" echo "2. Avec Paraphrase ?" echo "Entrez 1 ou 2 :" read encrypt if [ $encrypt == "1" ] then borg init -e none $repo exit 0 else borg init -e repokey $repo exit 0 fi ;; r) repo=$OPTARG ;; s) secret=$OPTARG ;; h) host=$OPTARG ;; p) port=$OPTARG ;; esac done # Préparation mkdir -p /srvbak if [ ! $port ] then sshfs -o allow_other root@$host:/ /srvbak else sshfs -p $port -o allow_other root@$host:/ /srvbak fi # Config export BORG_REPO=$repo export BORG_PASSPHRASE=$secret info() { printf "\n%s %s\n\n" "$( date )" "$*" >&2; } trap 'echo $( date ) Arrêt >&2; exit 2' INT TERM # Backup info "backup..." borg create \ --verbose \ --filter AME \ --list \ --stats \ --show-rc \ --compression lz4 \ --exclude-caches \ --exclude '/srvbak/mnt/*' \ --exclude '/srvbak//var/tmp/*' \ --exclude '/srvbak/dev/*' \ --exclude '/srvbak/tmp/*' \ --exclude '/srvbak/proc/*' \ --exclude '/srvbak/media/*' \ --exclude '/srvbak/run/*' \ --exclude '/srvbak/srv/*' \ --exclude '/srvbak/sys/*' \ --exclude '/srvbak/lost+found/*' \ --exclude '/srvbak/swapfile' \ \ ::$host'-{now}' \ /srvbak \ backup_exit=$? # Optimisation sauvegardes info "Optimisation des Sauvegardes..." borg prune \ --list \ --prefix $host'-' \ --show-rc \ --keep-daily 7 \ --keep-weekly 4 \ --keep-monthly 6 \ prune_exit=$? # Fin global_exit=$(( backup_exit > prune_exit ? backup_exit : prune_exit )) if [ ${global_exit} -eq 1 ]; then info "Backup terminé avec AVERTISSEMENT !!" fi if [ ${global_exit} -gt 1 ]; then info "Backup terminé en ERREUR !!" fi fusermount -u /srvbak exit ${global_exit}