Cette documentation est destinée à la gestion des backups par les clients, principalement des machines virtuelles et HAG.

Les admins système de Koumbit voudront plutôt consulter les pages suivantes:

Machines virtuelles

Si vous avez un serveur virtuel chez Koumbit et que vous avez un forfait de sauvegardes hebdomadaires, vous avez donc des backups RdiffBackup configurés avec BackupNinja.

Ne pas toucher aux fichiers de configuration de backupninja dans /etc/backup.d. Ils seraient ré-écrits par Puppet dans l'heure suivante et les changements seraient perdus!

Avant d'effectuer ce type d'opérations, assurez-vous d'avoir l'espace nécessaire!

borg

Information sur les points de backup

Lister les backups:

 $ sudo borg list ssh://backup-example.koumbit.net@backup.koumbit.net/srv/example.koumbit.net/borg
...
2020-06-01T05:00:04                  Mon, 2020-06-01 05:00:06 [03db2303c044b0d1fc50be19190c3ce566b9f912c994e37dce3c445ef63cabdc]
2020-06-02T05:00:04                  Tue, 2020-06-02 05:00:06 [e3833850d9969e2b40135e2fac4f9d88d80e0b664b92f0251417fe91cb4f854f]

Lister les informations de l'archive complète:

 $ sudo borg info ssh://backup-example.koumbit.net@backup.koumbit.net/backup/example.koumbit.net//borg
...
Repository ID: 9bf455a159d5d3fb15e6b2e385ed4d4ffc7f46ff4ddde191afecd14046ce086c
Location: ssh://backup-example.koumbit.net@backup.koumbit.net/backup/example.komubit.net/borg
Encrypted: No
Cache: /root/.cache/borg/9bf455a159d5d3fb15e6b2e385ed4d4ffc7f46ff4ddde191afecd14046ce086c
Security dir: /root/.config/borg/security/9bf455a159d5d3fb15e6b2e385ed4d4ffc7f46ff4ddde191afecd14046ce086c
------------------------------------------------------------------------------
                       Original size      Compressed size    Deduplicated size
All archives:                5.63 TB              5.24 TB            573.24 GB

                       Unique chunks         Total chunks
Chunk index:                  587053              5766243

Lister les informations d'un backup en particulier:

 $ sudo borg info ssh://backup-example.koumbit.net@backup.koumbit.net/backup/example.koumbit.net//borg::2022-05-04T01:27:06
...
Archive name: 2022-05-04T01:27:06
Archive fingerprint: bc0efe69a527059d9a65ab55524d1ce239291a163a7d9a0b94cca19bea2b7d82
Comment: 
Hostname: example
Username: root
Time (start): Wed, 2022-05-04 01:27:08
Time (end): Wed, 2022-05-04 01:32:00
Duration: 4 minutes 51.88 seconds
Number of files: 545293
Command line: /usr/bin/borg create --stats --compression lz4 --exclude /dev --exclude '/home/*/.aMule' --exclude '/home/*/.beagle' --exclude '/home/*/.gnupg' --exclude '/home/*/.local/share/Trash' --exclude '/home/*/.thumbnails' --exclude '/home/*/.Trash' --exclude '/home/*/gtk-gnutella-downloads' --exclude /proc --exclude /run --exclude /sys --exclude /tmp --exclude /var/cache --exclude '/var/lib/ganeti/locks-*.tmp' --exclude '/var/lib/ganeti/queue/*' --exclude /var/lib/mysql --exclude /var/lib/postgresql --exclude /var/log --exclude /var/run --exclude /var/tmp 'ssh://backup-example.koumbit.net@backup.koumbit.net/backup/example.koumbit.net//borg::{now:%Y-%m-%dT%H:%M:%S}' /
Utilization of maximum supported archive size: 0%
------------------------------------------------------------------------------
                       Original size      Compressed size    Deduplicated size
This archive:              797.45 GB            742.22 GB            596.15 MB
All archives:                5.63 TB              5.24 TB            573.24 GB

                       Unique chunks         Total chunks
Chunk index:                  587053              5766243

Accéder aux fichier dans un backup

Mounter un backup spécifique en FUSE:

$ sudo su
$ tmux
$ mktemp -d
/tmp/tmp.R7fMCamDDq
$ borg mount ssh://backup-example.koumbit.net@backup.koumbit.net/srv/example.koumbit.net/borg::2020-06-02T05:00:04 /tmp/tmp.R7fMCamDDq

Note Faire ça dans un tmux. Si le backup est large, le processus peut consommer du temps et mémoire important. (~16G RAM et 25min pour 2To)

Par la suite les fichiers peuvent être copier normalement. Eg. rsync en local, cp -r, etc.

Démonter un dossier borg:

sudo borg umount /tmp/tmp.R7fMCamDDq

Extraire un fichier précis d'un backup

En admettant que le backup nommé borg est fait sur /srv/mon_dossier_backups/ et qu'on souhaite récupérer /srv/mon_dossier_backups/mon_site/mon_fichier.php dans le dossier courant:

sudo borg extract ssh://backup-example.koumbit.net@backup.koumbit.net/backup/example.koumbit.net//borg::2022-05-04T01:27:06 ./srv/mon_dossier_backups/mon_site/mon_fichier.php

rdiff-backup

Les backups sont stockés sur une machine accessible sous backup.koumbit.net. On assume ici que votre machine se nomme foo.koumbit.net, ce qui vous donne un nom d'utilisateur backup-foo.koumbit.net@backup.koumbit.net. Vous pouvez ensuite construire l'URL vers vos backups rdiff en ajoutant :: et le chemin vers les backups, donc par exemple: backup-foo.koumbit.net@backup.koumbit.net::/backup/foo.koumbit.net/rdiff-backup/.

Quelques exemples:

Obtenir les variables de configuration pertinentes pour un serveur

    cat /etc/backup.d/90_default-rdiff-backup.rdiff | grep -E "directory = |host =| user ="
TODO
faire une ligne qui permet d'extraire ces valeurs et de rouler la commande de backup sur CWD
Lister l'historique des backups
  • $ sudo rdiff-backup -l backup-foo.koumbit.net@backup.koumbit.net::/backup/foo.koumbit.net/rdiff-backup/
    Found 7 increments:
        increments.2014-12-30T03:01:50-05:00.dir   Tue Dec 30 03:01:50 2014
        increments.2014-12-31T03:02:04-05:00.dir   Wed Dec 31 03:02:04 2014
        increments.2015-01-01T03:02:00-05:00.dir   Thu Jan  1 03:02:00 2015
        increments.2015-01-02T03:01:45-05:00.dir   Fri Jan  2 03:01:45 2015
        increments.2015-01-03T03:02:04-05:00.dir   Sat Jan  3 03:02:04 2015
        increments.2015-01-04T03:01:47-05:00.dir   Sun Jan  4 03:01:47 2015
        increments.2015-01-05T03:01:32-05:00.dir   Mon Jan  5 03:01:32 2015
    Current mirror: Tue Jan  6 03:01:36 2015
Inclure l'espace utilisé dans le listing (plus long)
  • $ sudo rdiff-backup -l --list-increment-sizes backup-foo.koumbit.net@backup.koumbit.net::/backup/foo.koumbit.net/rdiff-backup/
Restaurer un répertoire
  • $ sudo rdiff-backup -r 2015-01-05T03:01:32-05:00 backup-foo.koumbit.net@backup.koumbit.net::/backup/foo.koumbit.net/rdiff-backup/home/antoine antoine
  • Ceci va extraire le répertoire personnel du user antoine tel qu'il était le 5 janvier 2015 à 3h du matin dans le répertoire courant.

Lister le contenu d'un backup
  • rdiff-backup --list-at-time 48h backup-foo.koumbit.net@backup.koumbit.net::/backup/foo.koumbit.net/rdiff-backup/

Noter qu'il est important d'utiliser sudo car seule la clé SSH du user root a accès au serveur de backups. Notez également les différents formats d'heures qui peuvent être utilisés, par exemple now (backup le plus récent), 48h (il y a deux jours) ou 2015-01-05T03:01:32-05:00 (date précise du backup).

Then sometimes you have to merge the directories you recovered with the ones that are still there. Especially with Mail, or example. Here is one I did:

$ ls -la | grep Maildir
drwxr-xr-x 11 foo admins     4096 nov  5 23:28 Maildir
$ sudo rsync -Pavvu --dry-run Maildir/ /var/alternc/mail/m/machin.foo_dude.ca/Maildir/

Pay attention to the / at the end of the directory paths, rsync cares about those. And then run it without the dry-run for realzies. Then don't forget to go properly chown all the recovered files!

$ sudo ls -la /var/alternc/mail/m/machin.foo_dude.ca/Maildir/
drwxr-xr-x 11 foo admins  4096 nov  5 23:28 .
drwxr-xr-x  3  2407 vmail   4096 jun 28  2010 ..
$ sudo chown -R 2407:vmail /var/alternc/mail/m/machin.foo_dude.ca/Maildir/

HAG

Documentation manquante: expliquer les backups mysql et qu'on charge pour les restore...

Procédure pour restaurer les backups des comptes

Tel qu'indiqué sur notre site Web:

Si vous le désirez, nous pouvons donc rétablir vos données à l'intérieur de ce délai. La restauration des données est sélective, et peut varier selon la complexité du site et de la restauration. Un frais de 75$ sera facturé pour une tâche de trente minutes et moins; au-delà de trente minutes, notre taux horaire de 120$/h s'appliquera, et ce pour un minimum de 1h.

Fichiers et NFS

Les fichier sont sur le NFS donc sur orion.koumbit.net dans /var/alternc/html/m/moncompte et les backup se trouve sur backup.koumbit.net dans /srv/backup/orion.koumbit.net/ I faut donc un accès root au serveur NFS

Le repertoire /var/alternc/html est séparé en 7

D'abord vérifier s'il y a des backups présent en envoyant la commande à partir du client (orion.koumbit.net)

root@orion:/# rdiff-backup -l backup-orion.koumbit.net@backup.koumbit.net::/backup/orion.koumbit.net/html-t-z0-9/srv/alternc/html/t/test
Found 2 increments:
    test.2017-03-25T14:37:46-04:00.dir   Sat Mar 25 14:37:46 2017
    test.2017-03-27T13:27:52-04:00.dir   Mon Mar 27 13:27:52 2017
Current mirror: Wed Mar 29 13:14:46 2017

On peut ensuite restaurer le bon incrément

nous somme le 30 donc, on va prendre le backup d'il y a 3 jours, ou 72h

# La commande ressemble à ça! 
# root@orion:/# rdiff-backup -r <TIME> backup-orion.koumbit.net@backup.koumbit.net::/backup/orion.koumbit.net/<DIRECTORY TO RESTORE> <TARGET DIRECTORY> 

root@orion:/# rdiff-backup -r 72 backup-orion.koumbit.net@backup.koumbit.net::/backup/orion.koumbit.net/html-t-z0-9/srv/alternc/html/t/test /var/alternc/t/test

Attention de ne pas restaurer ça dans son home ou de vérifier la taille du backup au préalable étant donné que /dev/md0 ne fait que 4.5G. Il vaut mieux restaurer dans le répertoire alternc concerné sous /srv/

Bases de données

voir ici BackupMaintenance#Databases

Notre serveur MySQL roule sur geras, avec une réplication sur ganymede. Depuis 2018 il semblerait que les backups se font seulement depuis ganymede pour éviter de surcharger la DB master. Donc depuis alexandrie (aka backup.koumbit.net):

$ ssh alexandrie.koumbit.net

# check backups
$ sudo rdiff-backup -l \
    /backup/ganymede.koumbit.net/rdiff-backup/srv/backup-mysql/sqldump/clientABC.sql.gz
Found 6 increments:
    clientABC.sql.gz.2021-08-19T01:26:53-04:00.diff   Thu Aug 19 01:26:53 2021
    clientABC.sql.gz.2021-08-20T01:24:03-04:00.diff   Fri Aug 20 01:24:03 2021
    clientABC.sql.gz.2021-08-21T01:26:05-04:00.diff   Sat Aug 21 01:26:05 2021
    clientABC.sql.gz.2021-08-22T01:51:00-04:00.diff   Sun Aug 22 01:51:00 2021
    clientABC.sql.gz.2021-08-23T01:25:29-04:00.diff   Mon Aug 23 01:25:29 2021
    clientABC.sql.gz.2021-08-24T01:25:57-04:00.diff   Tue Aug 24 01:25:57 2021
Current mirror: Wed Aug 25 01:36:45 2021

# restore oldest
$ sudo rdiff-backup \
    -v 5 \
    -r 6D /backup/ganymede.koumbit.net/rdiff-backup/srv/backup-mysql/sqldump/clientABC.sql.gz \
    /home/john/clientABC.sql.gz

# send backup to mysql
$ scp /home/john/clientABC.sql.gz mysql.koumbit.net:/home/john

# connect to mysql master server and restore DB from there
# replication is one way, if you don't restore on the master it won't work!
$ ssh mysql.koumbit.net
$ gunzip -c clientABC.sql.gz | sudo mysql -h localhost -p clientABC

Courriels

Voir ici BackupMaintenance#Emails

BackupGuide (last edited 2023-03-09 23:24:14 by nina)