restic_utilitaire_de_sauvegarde
Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
restic_utilitaire_de_sauvegarde [2020/03/16 23:54] – créée n1c0 | restic_utilitaire_de_sauvegarde [2023/10/10 20:41] (Version actuelle) – [Restore] Labomedia | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ======= Restic ======= | ||
+ | |||
+ | [[https:// | ||
+ | |||
La doc est [[https:// | La doc est [[https:// | ||
- | On va considérer qu'on a 2 serveurs, 1 de production (prod), et 1 de sauvegarde (save). On veut sauver les homes du serveur prod, chacune ayant sa propre timeline de sauvegarde. 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 va considérer qu'on a 2 serveurs, 1 de production (prod), et 1 de sauvegarde (save). On veut sauver les homes du serveur prod, chacune ayant sa propre timeline de sauvegarde. |
+ | |||
+ | 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:// | ||
+ | |||
+ | **Important** : Restic utilise massivement les entrées/ | ||
===== Installation ===== | ===== Installation ===== | ||
Ligne 12: | Ligne 20: | ||
<code bash> | <code bash> | ||
- | $ adduser restic | + | adduser restic |
</ | </ | ||
Ligne 18: | Ligne 26: | ||
<code bash> | <code bash> | ||
- | $ chown restic: / | + | chown restic: / |
</ | </ | ||
Ligne 24: | 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 40: | Ligne 48: | ||
<code bash> | <code bash> | ||
- | $ setcap cap_dac_read_search=+ep / | + | setcap cap_dac_read_search=+ep / |
</ | </ | ||
Ligne 46: | Ligne 54: | ||
<code bash> | <code bash> | ||
- | $ sudo -u restic / | + | sudo -u restic / |
</ | </ | ||
Ligne 56: | Ligne 64: | ||
<code bash> | <code bash> | ||
- | $ adduser resticbackup | + | adduser resticbackup |
</ | </ | ||
Ligne 62: | Ligne 70: | ||
<code bash> | <code bash> | ||
- | $ mkdir resticrepo && chown -R resticbackup: | + | mkdir resticrepo && chown -R resticbackup: |
</ | </ | ||
Ligne 85: | 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 |
</ | </ | ||
Ligne 98: | Ligne 106: | ||
<code bash> | <code bash> | ||
- | $ ssh-keygen -t rsa | + | ssh-keygen -t rsa |
</ | </ | ||
Ligne 104: | Ligne 112: | ||
<code bash> | <code bash> | ||
- | $ less .ssh/ | + | less .ssh/ |
</ | </ | ||
Ligne 129: | 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 ===== | ||
Ligne 142: | Ligne 151: | ||
<code bash> | <code bash> | ||
- | $ sudo -u restic / | + | sudo -u restic / |
</ | </ | ||
Ligne 158: | Ligne 167: | ||
<code bash> | <code bash> | ||
- | $ rstc --verbose backup / | + | rstc --verbose backup / |
</ | </ | ||
Ligne 164: | Ligne 173: | ||
<code bash> | <code bash> | ||
- | $ rstc --verbose backup --tag jeanclaude / | + | rstc --verbose backup --tag jeanclaude / |
</ | </ | ||
Ligne 172: | Ligne 181: | ||
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 178: | Ligne 189: | ||
<code bash> | <code bash> | ||
- | $ rstc restore 3054af84 --target / | + | rstc restore 3054af84 --target / |
</ | </ | ||
Ligne 191: | 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 200: | Ligne 211: | ||
<code bash> | <code bash> | ||
- | $ rstc forget --tag restic1 --keep-daily 7 --prune | + | rstc forget --tag restic1 --keep-daily 7 --prune |
</ | </ | ||
Ligne 206: | 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 |
</ | </ | ||
+ | Pour supprimer tous les snapshots d'un tag par exemple, il faut d' | ||
+ | |||
+ | <code bash> | ||
+ | rstc forget --tag montag --keep-last 1 | ||
+ | rstc forget bdbd3439 --prune | ||
+ | </ | ||
===== Commandes utiles ===== | ===== 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 ==== | ==== Lister les snapshots ==== | ||
<code bash> | <code bash> | ||
- | $ rstc snapshots | + | rstc snapshots |
</ | </ | ||
Ligne 240: | Ligne 267: | ||
<code bash> | <code bash> | ||
- | $ rstc check | + | rstc check |
</ | </ | ||
Ligne 252: | Ligne 279: | ||
<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.1584402849.txt.gz · Dernière modification : 2020/03/16 23:54 de n1c0