121 lines
2.5 KiB
Bash
Executable File
121 lines
2.5 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
## Première utilisation
|
|
# backup.sh -i <chemin local du dépot de sauvegarde>
|
|
|
|
## Utilisation
|
|
# backup.sh -r <chemin local du dépot de sauvegarde> -h <ip/host du serveur distant> -p <port ssh. Ne rien indiquer si vous utlisez le port par défaut (21)> -s <Paraphrase du dépot. Ne rien indiquer si aucune n'a été configurée>
|
|
|
|
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/*' \
|
|
\
|
|
::$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}
|