Exemple de commande permettant de rapatrier un backup à distance via SSH :
ssh serveur sudo -S vzdump 306 --stdout 1 --mode snapshot --compress lzo > vzdump-qemu-306-2020_02_08-12_34_56.vma.lzo
Attention le mot de passe sudo sera visible en clair au moment de la frappe.
La configuration de la rétention des backup se fait au niveau du volume de backup lui-même.
Pour obtenir “1 par semaine pendant 1 mois, puis 1 par mois pendant 1 an, puis 1 par an pendant 3 ans”, on peut comprendre les paramètres de différentes manières. Pour obtenir ce qu'on demande, et sur la base d'un backup créé par semaine (puisqu'on compte le nombre de backup qu'on garde, si on fait du journalier ce sera autrement, il faudra jouer avec “Keep daily” aussi) :
Attention, à voir si 2 “yearly” font bien garder le dernier + 2, et donc on remonte jusqu'à entre 2 et 3 ans max (pas encore assez de recul pour s'en assurer).
vma est un format spécifique, lisible avec un outil spécifique… outil qui dépend (sous Proxmox 6.1) des libs : libceph-common.so.0 libgfapi.so.0 libgfrpc.so.0 libgfxdr.so.0 libglusterfs.so.0 libiscsi.so.7 librados.so.2 librbd.so.1
Il faut donc les avoir sous la main (ainsi que l'outil vma lui-même) pour pouvoir les utiliser hors Proxmox.
Il existe un script python tiers qui permet d'extraire sans dépendance particulière : https://github.com/jancc/vma-extractor
Attention ce script n'est pas lié à Proxmox.
Imaginons vouloir accéder à des fichiers d'un backup de VM complet, sans restaurer la VM. Il faut “dépiler” toutes les couches. Exemple avec la VM 301 :
# décompresser l'image ; crée un autre fichier, peu ou prou de la taille du disque virtuel (si en raw) unzstd vzdump-qemu-301-2023_10_28-00_00_04.vma.zst # dépacker l'image ; crée un dossier (test ici) avec la conf et les disques virtuels vma extract vzdump-qemu-301-2023_10_28-00_00_04.vma test
Si on n'a qu'une seule partition, pas de LVM ni rien (cas basique) on peut tricher et monter directement le système de fichier en appliquant un offset au début de la partition.
$ fdisk -l test/disk-drive-scsi0.raw Disk test/disk-drive-scsi0.raw: 20 GiB, 21474836480 bytes, 41943040 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x63a5f8af Device Boot Start End Sectors Size Id Type test/disk-drive-scsi0.raw1 * 2048 41943039 41940992 20G 83 Linux
sudo mount -o loop,offset=$((2048*512)) test/disk-drive-scsi0.raw /mnt/tmp
https://forum.proxmox.com/threads/how-to-backup-proxmox-configuration-files.67789/
https://github.com/DerDanilo/proxmox-stuff
Script copié et configuré dans /mnt/backup/proxmox/conf/
. Il suffit de le lancer pour créer un backup des fichiers importants du nœud (utiliser explicitement bash car l'exécution directe est désactivée sur le montage sshfs) :
sudo bash /mnt/backup/proxmox/conf/prox_config_backup.sh
Le backup créé contient le nom du nœud et la date ; le script en gardera les 5 plus récents pour chaque nœud.
On a un disque externe USB chiffré pour les backup. Si le montage n'est pas fait (déverrouillage du chiffrement du disques) par exemple après un reboot, il faut y penser.
Dans /etc/cron.d/mountbackup
mettre une ligne comme par exemple :
00 18 * * * root bash -c 'grep -q /media/backup /proc/mounts || mail -s "Mount HDD USB backup" root@localhost <<< "Bouge tes fesses, admin !"'
À 18h, vérification que /media/backup
est bien contenu dans un point de montage, sinon mail aux admin.