restic_utilitaire_de_sauvegarde
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| restic_utilitaire_de_sauvegarde [2020/03/16 23:59] – n1c0 | restic_utilitaire_de_sauvegarde [2023/10/10 20:41] (Version actuelle) – [Restore] Labomedia | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | ====== Restic ====== | + | ======= Restic |
| [[https:// | [[https:// | ||
| Ligne 9: | Ligne 9: | ||
| On peut adapter très facilement ce tuto pour sauver une machine sur un disque externe par exemple : il suffit de changer la valeur du paramètre -r qui défini où se trouve le dépôt de sauvegarde (il peut être [[https:// | On peut adapter très facilement ce tuto pour sauver une machine sur un disque externe par exemple : il suffit de changer la valeur du paramètre -r qui défini où se trouve le dépôt de sauvegarde (il peut être [[https:// | ||
| - | ====== Installation | + | **Important** : Restic utilise massivement les entrées/ |
| + | |||
| + | ===== Installation ===== | ||
| Il faut l' | Il faut l' | ||
| Ligne 18: | Ligne 20: | ||
| <code bash> | <code bash> | ||
| - | $ adduser restic | + | adduser restic |
| </ | </ | ||
| Ligne 24: | Ligne 26: | ||
| <code bash> | <code bash> | ||
| - | $ chown restic: / | + | chown restic: / |
| </ | </ | ||
| Ligne 30: | Ligne 32: | ||
| <code bash> | <code bash> | ||
| - | $ cd / | + | cd / |
| - | $ mkdir bin | + | mkdir bin |
| - | $ cd bin | + | cd bin |
| - | $ wget https:// | + | wget https:// |
| - | $ bunzip2 restic_0.9.6_linux_amd64.bz2 | + | bunzip2 restic_0.9.6_linux_amd64.bz2 |
| - | $ mv restic_0.9.6_linux_amd64 restic | + | mv restic_0.9.6_linux_amd64 restic |
| - | $ cd .. | + | cd .. |
| - | $ chown -R root:restic bin | + | chown -R root:restic bin |
| - | $ chmod 750 bin/restic | + | chmod 750 bin/restic |
| </ | </ | ||
| Ligne 46: | Ligne 48: | ||
| <code bash> | <code bash> | ||
| - | $ setcap cap_dac_read_search=+ep / | + | setcap cap_dac_read_search=+ep / |
| </ | </ | ||
| Ligne 52: | Ligne 54: | ||
| <code bash> | <code bash> | ||
| - | $ sudo -u restic / | + | sudo -u restic / |
| </ | </ | ||
| - | ====== Configuration | + | ===== Configuration ===== |
| - | ===== Sur le serveur de save ===== | + | ==== Sur le serveur de save ==== |
| Créer un nouvel utilisateur **resticbackup** : | Créer un nouvel utilisateur **resticbackup** : | ||
| <code bash> | <code bash> | ||
| - | $ adduser resticbackup | + | adduser resticbackup |
| </ | </ | ||
| Ligne 68: | Ligne 70: | ||
| <code bash> | <code bash> | ||
| - | $ mkdir resticrepo && chown -R resticbackup: | + | mkdir resticrepo && chown -R resticbackup: |
| </ | </ | ||
| - | ===== Sur le serveur de prod ===== | + | ==== Sur le serveur de prod ==== |
| - | ==== Déclarer l' | + | === Déclarer l' |
| Afin de pouvoir se connecter au serveur de save sans avoir à taper toutes l' | Afin de pouvoir se connecter au serveur de save sans avoir à taper toutes l' | ||
| Ligne 91: | Ligne 93: | ||
| <code bash> | <code bash> | ||
| # on peut taper | # on peut taper | ||
| - | $ ssh resticbox | + | ssh resticbox |
| # au lieu de | # au lieu de | ||
| - | $ ssh resticbackup@XXX.XXX.XXX.XXX -p 22 | + | ssh resticbackup@XXX.XXX.XXX.XXX -p 22 |
| </ | </ | ||
| - | ==== Config SSH ==== | + | === Config SSH === |
| Pour permettre à l' | Pour permettre à l' | ||
| Ligne 104: | Ligne 106: | ||
| <code bash> | <code bash> | ||
| - | $ ssh-keygen -t rsa | + | ssh-keygen -t rsa |
| </ | </ | ||
| Ligne 110: | Ligne 112: | ||
| <code bash> | <code bash> | ||
| - | $ less .ssh/ | + | less .ssh/ |
| </ | </ | ||
| Ligne 122: | Ligne 124: | ||
| </ | </ | ||
| - | ==== Raccourci de commande | + | === Raccourci de commande === |
| Pour l' | Pour l' | ||
| Ligne 135: | Ligne 137: | ||
| On pourra donc executer la commande **rstc** seulement. | On pourra donc executer la commande **rstc** seulement. | ||
| - | __Remarque__ : la RESTIC_PASSWORD contient le mot de passe du dépôt (différent du user resticbackup du server | + | __Remarque__ : la variable |
| Pour que le user root puisse utiliser ce nouvel alias, soit il faut se déconnecter / reconnecter, | Pour que le user root puisse utiliser ce nouvel alias, soit il faut se déconnecter / reconnecter, | ||
| <code bash> | <code bash> | ||
| - | $ source / | + | source / |
| </ | </ | ||
| - | ====== Initialiser le depôt | + | |
| + | ===== Initialiser le depôt ===== | ||
| Maintenant que tout est configuré, il faut initialiser le dépôt (sans utiliser l' | Maintenant que tout est configuré, il faut initialiser le dépôt (sans utiliser l' | ||
| <code bash> | <code bash> | ||
| - | $ sudo -u restic / | + | sudo -u restic / |
| </ | </ | ||
| Ligne 155: | Ligne 158: | ||
| Cela demandera de définir un mot de passe pour le dépôt : attention à bien le conserver, s'il est perdu, c'est foutu :) Idéalement, | Cela demandera de définir un mot de passe pour le dépôt : attention à bien le conserver, s'il est perdu, c'est foutu :) Idéalement, | ||
| - | ====== Backup | + | ===== Backup ===== |
| On peut tout a fait utiliser notre alias **rstc** maintenant que le dépôt est initialisé. | On peut tout a fait utiliser notre alias **rstc** maintenant que le dépôt est initialisé. | ||
| Ligne 164: | Ligne 167: | ||
| <code bash> | <code bash> | ||
| - | $ rstc --verbose backup / | + | rstc --verbose backup / |
| </ | </ | ||
| Ligne 170: | Ligne 173: | ||
| <code bash> | <code bash> | ||
| - | $ rstc --verbose backup --tag jeanclaude / | + | rstc --verbose backup --tag jeanclaude / |
| </ | </ | ||
| Pour tagger un snapshot dejà fait, voir [[https:// | Pour tagger un snapshot dejà fait, voir [[https:// | ||
| - | ====== Restore | + | ===== Restore ===== |
| On peut évidemment restaurer n' | On peut évidemment restaurer n' | ||
| + | |||
| + | Ce dossier temporaire doit appartenir au user restic. | ||
| Pour restaurer, on a besoin d'un numéro unique de snapshot. Voir plus bas pour la commande listant les snapshots disponibles. | Pour restaurer, on a besoin d'un numéro unique de snapshot. Voir plus bas pour la commande listant les snapshots disponibles. | ||
| Ligne 184: | Ligne 189: | ||
| <code bash> | <code bash> | ||
| - | $ rstc restore 3054af84 --target / | + | rstc restore 3054af84 --target / |
| </ | </ | ||
| - | ====== Suppression de snapshots | + | ===== Suppression de snapshots ===== |
| [[https:// | [[https:// | ||
| Ligne 197: | Ligne 202: | ||
| </ | </ | ||
| - | Ne garder qu'un snapshot par jour sur 7 jours pour un **path** donné (pour 7 jours où il y a une sauvegarde, c-a-d que si la sauvegarde est le dimanche, cela gardera 1 sauvegarde | + | Ne garder qu'un snapshot par jour sur 7 jours pour un **path** donné (pour 7 jours où il y a une sauvegarde, c-a-d que si la sauvegarde est le dimanche, cela gardera 1 sauvegarde |
| <code bash> | <code bash> | ||
| - | $ rstc forget --path="/ | + | rstc forget --path="/ |
| </ | </ | ||
| Ligne 206: | Ligne 211: | ||
| <code bash> | <code bash> | ||
| - | $ rstc forget --tag restic1 --keep-daily 7 --prune | + | rstc forget --tag restic1 --keep-daily 7 --prune |
| </ | </ | ||
| Ligne 212: | Ligne 217: | ||
| <code bash> | <code bash> | ||
| - | $ rstc forget --group-by tags --keep-daily 7 --keep-weekly 5 --keep-monthly 6 --prune | + | rstc forget --group-by tags --keep-daily 7 --keep-weekly 5 --keep-monthly 6 --prune |
| </ | </ | ||
| - | ====== Commandes utiles ====== | + | Pour supprimer tous les snapshots d'un tag par exemple, il faut d' |
| - | ===== Lister les snapshots | + | <code bash> |
| + | rstc forget --tag montag --keep-last 1 | ||
| + | rstc forget bdbd3439 --prune | ||
| + | </ | ||
| + | ===== Commandes utiles ===== | ||
| + | |||
| + | ==== Mise à jour de Restic ==== | ||
| + | |||
| + | Lancer la commande de mise à jour puis remettre les bons droits : | ||
| + | |||
| + | <code bash> | ||
| + | cd / | ||
| + | ./restic self-update | ||
| + | chown root:restic restic && setcap cap_dac_read_search=+ep / | ||
| + | </ | ||
| + | |||
| + | ==== Lister les snapshots ==== | ||
| <code bash> | <code bash> | ||
| - | $ rstc snapshots | + | rstc snapshots |
| </ | </ | ||
| Ligne 243: | Ligne 264: | ||
| </ | </ | ||
| - | ===== Checker intégrité du dépôt | + | ==== Checker intégrité du dépôt ==== |
| <code bash> | <code bash> | ||
| - | $ rstc check | + | rstc check |
| </ | </ | ||
| Ligne 255: | Ligne 276: | ||
| </ | </ | ||
| - | ===== Différences entre 2 snapshots | + | ==== Différences entre 2 snapshots ==== |
| <code bash> | <code bash> | ||
| - | $ rstc diff 5845b002 2ab627a6 | + | rstc diff 5845b002 2ab627a6 |
| </ | </ | ||
| + | ===== Script de sauvegarde des homes ===== | ||
| + | |||
| + | Dans l' | ||
| + | |||
| + | On crée donc un fichier backup-server-homes dans un coin où seul root peut venir et executer ce fichier. Dedans on colle ça (explications ci-dessous) : | ||
| + | |||
| + | <code bash> | ||
| + | #!/bin/bash | ||
| + | |||
| + | for f in /home/*; do | ||
| + | if [ -d ${f} ]; then | ||
| + | |||
| + | sudo RESTIC_PASSWORD=' | ||
| + | |||
| + | fi | ||
| + | done | ||
| + | </ | ||
| + | |||
| + | Penser à changer la valeur de RESTIC_PASSWORD par le vrai mot de passe de votre dépôt. | ||
| + | |||
| + | Ce que fait ce script est plutôt simple en réalité : | ||
| + | |||
| + | * avec le '' | ||
| + | * si le fichier est un dossier, alors : | ||
| + | * on execute la commande restic de backup du dossier home en cours | ||
| + | |||
| + | La commande execute : | ||
| + | |||
| + | * en tant que l' | ||
| + | * l' | ||
| + | * en donnant l' | ||
| + | * de façon verbeuse | ||
| + | * on veut faire un backup | ||
| + | * on tag ce snapshot avec le nom du dossier du home : '' | ||
| + | * on lui dit quoi sauvegarder, | ||
| + | |||
| + | {{tag> | ||
restic_utilitaire_de_sauvegarde.1584403173.txt.gz · Dernière modification : de n1c0
