Différences
Ci-dessous, les différences entre deux révisions de la page.
| Prochaine révision | Révision précédente | ||
| pbs_backup [2021/08/23 20:33] – créée nekan | pbs_backup [2021/08/26 08:35] (Version actuelle) – [Sauvegarde par agent] nekan | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| ====== La sauvegarde sous PBS ====== | ====== La sauvegarde sous PBS ====== | ||
| - | <label type=" | + | <label type=" |
| ===== Introduction ===== | ===== Introduction ===== | ||
| Ligne 16: | Ligne 16: | ||
| ===== Sauvegarde par agent ===== | ===== Sauvegarde par agent ===== | ||
| - | * TODO : | + | * Pour lancer une sauvegarde, on commence par s' |
| - | * Demande de ticket | + | |
| <sxh bash> | <sxh bash> | ||
| PBS_FINGERPRINT=' | PBS_FINGERPRINT=' | ||
| PBS_ADDRESS=" | PBS_ADDRESS=" | ||
| PBS_STORAGE=" | PBS_STORAGE=" | ||
| + | export PBS_FINGERPRINT | ||
| + | export PBS_PASSWORD | ||
| proxmox-backup-client login --repository root@pam@${PBS_ADDRESS}: | proxmox-backup-client login --repository root@pam@${PBS_ADDRESS}: | ||
| - | * Lancement de la sauvegarde | + | * Cette authentification permet nous fourni un token nous permettant d' |
| <sxh bash> | <sxh bash> | ||
| PBS_STORAGE=" | PBS_STORAGE=" | ||
| PATH_TO_BACKUP="/" | PATH_TO_BACKUP="/" | ||
| proxmox-backup-client backup $HOSTNAME.pxar: | proxmox-backup-client backup $HOSTNAME.pxar: | ||
| - | | + | |
| - | <sxh bash># | + | <sxh bash; title : pbs-backup.sh |
| - | # | + | |
| - | # Script de sauvegarde de serveur via agent Proxmox | + | |
| - | # Par Nicolas THOREZ | + | |
| - | # | + | |
| - | #===========# | + | ###################################################### |
| - | # Fonctions | + | # |
| - | #===========# | + | # |
| + | # Par Nicolas THOREZ | ||
| + | # # | ||
| + | ###################################################### | ||
| + | # | ||
| + | # Définition des variables # | ||
| + | # | ||
| + | |||
| + | # Utilisateur par défaut | ||
| + | DEFAULT_PBS_USER=" | ||
| + | |||
| + | # Chemin du client | ||
| + | PBSCLIENT="/ | ||
| + | |||
| + | # Chemin à sauvegarder par défaut | ||
| + | DEFAULT_PATH_TO_BACKUP="/" | ||
| + | |||
| + | # Regex pour l' | ||
| + | REGEX_FINGERPRINT=" | ||
| + | |||
| + | # Regex pour l' | ||
| + | REGEX_ADDRESS=" | ||
| + | |||
| + | # | ||
| + | # Définition des fonctions # | ||
| + | # | ||
| + | |||
| + | # Fonction d' | ||
| display-help() | display-help() | ||
| { | { | ||
| + | echo " | ||
| + | echo "" | ||
| + | echo "Usage : pbs-backup.sh [-u|--user] utilisateur [-p|--password] mot de passe" | ||
| + | echo " | ||
| + | echo " | ||
| + | echo " | ||
| + | echo "" | ||
| + | echo " | ||
| + | echo "" | ||
| + | echo "-h, --help | ||
| + | echo "" | ||
| + | echo "-u, --user | ||
| + | echo " | ||
| + | echo "" | ||
| + | echo "-p, --password | ||
| + | echo " | ||
| + | echo "" | ||
| + | echo "-a, --address | ||
| + | echo "" | ||
| + | echo "-r, --repository | ||
| + | echo "" | ||
| + | echo "-b, --backup | ||
| + | echo " | ||
| + | echo "" | ||
| + | echo "-f, --fingerprint | ||
| + | echo "" | ||
| + | exit 2 | ||
| + | } | ||
| + | |||
| + | # Fonction de collecte du mot de passe | ||
| + | get-password() | ||
| + | { | ||
| + | read -p " | ||
| + | if [ -z " | ||
| + | then | ||
| + | echo "CRIT - Le mot de passe est obligatoire" | ||
| + | exit 2 | ||
| + | else | ||
| + | echo $PASS | ||
| + | fi | ||
| } | } | ||
| Ligne 46: | Ligne 110: | ||
| # Gestion des entrées # | # Gestion des entrées # | ||
| # | # | ||
| + | |||
| + | while [[ $# -gt 0 ]] | ||
| + | do | ||
| + | PARAM=" | ||
| + | case $PARAM in | ||
| + | # aide | ||
| + | " | ||
| + | display-help | ||
| + | shift | ||
| + | ;; | ||
| + | # Utilisateur | ||
| + | " | ||
| + | PBS_USER=" | ||
| + | shift | ||
| + | shift | ||
| + | ;; | ||
| + | # Mot de passe | ||
| + | " | ||
| + | case $2 in | ||
| + | " | ||
| + | PBS_PASSWORD=$(get-password) | ||
| + | echo "" | ||
| + | shift | ||
| + | ;; | ||
| + | *) | ||
| + | PBS_PASSWORD=" | ||
| + | shift | ||
| + | shift | ||
| + | ;; | ||
| + | esac | ||
| + | ;; | ||
| + | # Adresse | ||
| + | " | ||
| + | PBS_ADDRESS=" | ||
| + | shift | ||
| + | shift | ||
| + | ;; | ||
| + | # Dépôt de sauvegarde | ||
| + | " | ||
| + | PBS_REPOSITORY=" | ||
| + | shift | ||
| + | shift | ||
| + | ;; | ||
| + | # Chemin à sauvegarder | ||
| + | " | ||
| + | PATH_TO_BACKUP=" | ||
| + | shift | ||
| + | shift | ||
| + | ;; | ||
| + | # Empreinte | ||
| + | " | ||
| + | PBS_FINGERPRINT=" | ||
| + | shift | ||
| + | shift | ||
| + | ;; | ||
| + | # Autre | ||
| + | *) | ||
| + | display-help | ||
| + | shift | ||
| + | ;; | ||
| + | esac | ||
| + | done | ||
| # | # | ||
| # Vérification des entrées # | # Vérification des entrées # | ||
| # | # | ||
| + | |||
| + | # Utilisateur | ||
| + | if [ -z " | ||
| + | then | ||
| + | PBS_USER=" | ||
| + | fi | ||
| + | |||
| + | # Mot de passe | ||
| + | if [ -z " | ||
| + | then | ||
| + | PBS_PASSWORD=$(get-password) | ||
| + | echo "" | ||
| + | fi | ||
| + | |||
| + | # Adresse | ||
| + | if [[ ! $PBS_ADDRESS =~ $REGEX_ADDRESS ]] | ||
| + | then | ||
| + | echo "CRIT - L' | ||
| + | exit 2 | ||
| + | fi | ||
| + | |||
| + | # Dépôt de sauvegarde | ||
| + | if [ -z " | ||
| + | then | ||
| + | echo "CRIT - Le dépôt de sauvegarde est invalide." | ||
| + | exit 2 | ||
| + | fi | ||
| + | |||
| + | # Chemin à sauvegarder | ||
| + | if [ -z " | ||
| + | then | ||
| + | PATH_TO_BACKUP=" | ||
| + | else | ||
| + | if [ ! -d " | ||
| + | then | ||
| + | echo "CRIT - Le chemin donnée n'est par un dossier valide" | ||
| + | exit 2 | ||
| + | fi | ||
| + | fi | ||
| + | |||
| + | # Empreinte | ||
| + | if [[ ! $PBS_FINGERPRINT =~ $REGEX_FINGERPRINT ]] | ||
| + | then | ||
| + | echo "CRIT - L' | ||
| + | fi | ||
| # | # | ||
| Ligne 55: | Ligne 226: | ||
| # | # | ||
| + | # Demande de token | ||
| + | export PBS_FINGERPRINT | ||
| + | export PBS_PASSWORD | ||
| + | $PBSCLIENT login --repository ${PBS_USER}@${PBS_ADDRESS}: | ||
| + | |||
| + | # Mise en forme du nom de la sauvegarde | ||
| + | PATH_NAME=" | ||
| + | if [ " | ||
| + | then | ||
| + | PATH_NAME=" | ||
| + | fi | ||
| + | |||
| + | # Sauvegarde | ||
| + | $PBSCLIENT backup ${HOSTNAME}${PATH_NAME}.pxar: | ||
| + | </ | ||
| + | * Ce script, nous permet alors de mettre en place un cron : | ||
| + | <sxh bash># Tâche de sauvegarde | ||
| + | 0 1 * * * root / | ||
| </ | </ | ||
| - | | + | <callout type=" |
| + | |||
| + | <callout type=" | ||
| + | | ||
| + | <sxh bash> | ||
| + | * Lors de la sauvegarde, la clé par défaut est utilisée automatiquement. Pour spécifier une clé, on peux indiquer son chemin avec le paramètre '' | ||
| + | </ | ||
| ===== Gestion de la rétention ===== | ===== Gestion de la rétention ===== | ||
| + | Au travers de l' | ||
| + | * **Garbage Collection Schedule** : Fréquence à laquelle le serveur va supprimer les anciennes sauvegardes. | ||
| + | * ** Planification du Délestage** : Fréquence à laquelle le serveur va délester les anciennes sauvegardes. Cette action supprime uniquement les index et non les données de sauvegardes. | ||
| + | * **Garder Dernier** : Permet de conserver les x dernières sauvegardes. | ||
| + | * **Garder Horaires** : Permet de conserver les sauvegardes pendant x heures. | ||
| + | * **Garder Journaliers** : Permet de conserver les sauvegardes pendant x jours. | ||
| + | * **Garder Hebdomadaires** : Permet de conserver les sauvegardes pendant x semaines. | ||
| + | * **Garder Mensuels** : Permet de conserver les sauvegardes pendant x mois. | ||
| + | * **Garder Annuels** : Permet de conserver les sauvegardes pendant x années. | ||
| + | |||
| + | <image shape=" | ||
| ===== Vérification des sauvegardes ===== | ===== Vérification des sauvegardes ===== | ||
| - | {{:underconstruction-copy-300x150.jpg?400|}} | + | La vérification des sauvegardes permet de valider leurs intégrités. Pour ce faire, toujours au niveau de l' |
| + | |||
| + | <image shape=" | ||
| ~~DISCUSSION~~ | ~~DISCUSSION~~ | ||