Remote Server Backup
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

122 lines
2.5KB

  1. #!/bin/bash
  2. ## Première utilisation
  3. # backup.sh -i <chemin local du dépot de sauvegarde>
  4. ## Utilisation
  5. # 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>
  6. set -e
  7. while getopts "i: r: s: h: p:" opt; do
  8. case $opt in
  9. i)
  10. repo=$OPTARG
  11. echo "1. Sans Paraphrase ?"
  12. echo "2. Avec Paraphrase ?"
  13. echo "Entrez 1 ou 2 :"
  14. read encrypt
  15. if [ $encrypt == "1" ]
  16. then
  17. borg init -e none $repo
  18. exit 0
  19. else
  20. borg init -e repokey $repo
  21. exit 0
  22. fi
  23. ;;
  24. r)
  25. repo=$OPTARG
  26. ;;
  27. s)
  28. secret=$OPTARG
  29. ;;
  30. h)
  31. host=$OPTARG
  32. ;;
  33. p)
  34. port=$OPTARG
  35. ;;
  36. esac
  37. done
  38. # Préparation
  39. mkdir -p /srvbak
  40. if [ ! $port ]
  41. then
  42. sshfs -o allow_other root@$host:/ /srvbak
  43. else
  44. sshfs -p $port -o allow_other root@$host:/ /srvbak
  45. fi
  46. # Config
  47. export BORG_REPO=$repo
  48. export BORG_PASSPHRASE=$secret
  49. info() { printf "\n%s %s\n\n" "$( date )" "$*" >&2; }
  50. trap 'echo $( date ) Arrêt >&2; exit 2' INT TERM
  51. # Backup
  52. info "backup..."
  53. borg create \
  54. --verbose \
  55. --filter AME \
  56. --list \
  57. --stats \
  58. --show-rc \
  59. --compression lz4 \
  60. --exclude-caches \
  61. --exclude '/srvbak/mnt/*' \
  62. --exclude '/srvbak//var/tmp/*' \
  63. --exclude '/srvbak/dev/*' \
  64. --exclude '/srvbak/tmp/*' \
  65. --exclude '/srvbak/proc/*' \
  66. --exclude '/srvbak/media/*' \
  67. --exclude '/srvbak/run/*' \
  68. --exclude '/srvbak/srv/*' \
  69. --exclude '/srvbak/sys/*' \
  70. --exclude '/srvbak/lost+found/*' \
  71. --exclude '/srvbak/swapfile' \
  72. \
  73. ::$host'-{now}' \
  74. /srvbak \
  75. backup_exit=$?
  76. # Optimisation sauvegardes
  77. info "Optimisation des Sauvegardes..."
  78. borg prune \
  79. --list \
  80. --prefix $host'-' \
  81. --show-rc \
  82. --keep-daily 7 \
  83. --keep-weekly 4 \
  84. --keep-monthly 6 \
  85. prune_exit=$?
  86. # Fin
  87. global_exit=$(( backup_exit > prune_exit ? backup_exit : prune_exit ))
  88. if [ ${global_exit} -eq 1 ];
  89. then
  90. info "Backup terminé avec AVERTISSEMENT !!"
  91. fi
  92. if [ ${global_exit} -gt 1 ];
  93. then
  94. info "Backup terminé en ERREUR !!"
  95. fi
  96. fusermount -u /srvbak
  97. exit ${global_exit}