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édenteDernière révisionLes deux révisions suivantes | ||
restic_utilitaire_de_sauvegarde [2020/03/16 23:59] – n1c0 | restic_utilitaire_de_sauvegarde [2023/10/10 20:40] – [Suppression de snapshots] 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' | ||
Ligne 184: | Ligne 187: | ||
<code bash> | <code bash> | ||
- | $ rstc restore 3054af84 --target / | + | rstc restore 3054af84 --target / |
</ | </ | ||
- | ====== Suppression de snapshots | + | ===== Suppression de snapshots ===== |
[[https:// | [[https:// | ||
Ligne 197: | Ligne 200: | ||
</ | </ | ||
- | 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 209: | ||
<code bash> | <code bash> | ||
- | $ rstc forget --tag restic1 --keep-daily 7 --prune | + | rstc forget --tag restic1 --keep-daily 7 --prune |
</ | </ | ||
Ligne 212: | Ligne 215: | ||
<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 262: | ||
</ | </ | ||
- | ===== 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 274: | ||
</ | </ | ||
- | ===== 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.txt · Dernière modification : 2023/10/10 20:41 de Labomedia