Je dispose d'une sauvegarde au format tar de toute l'arborescence. Attention aux UID/GID, aux file capabilities et aux chemins relatifs lors de la création de cette sauvegarde.
Pour la restaurer sur une machine virtuelle de même architecture (exemple : amd64) fraîchement déployée et fonctionnant avec le même système d'exploitation (exemple : Debian GNU/Linux Stretch) :
cd / && tar xf sauvegarde.tar.lzma --xattrs --xattrs-include='*'
;/etc/fstab
si la désignation de la partition a changé (utiliser blkid
pour obtenir le nouvel UUID de la partition) puis mettre à jour l'initramfs avec update-initramfs -u -k all
;/etc/network/interfaces
;grep -R '<anciennes_IPv4_et_v6>' /etc
pour vérifier que les anciennes adresses IP ne traînent pas dans des configurations.Je pourrais utiliser la même méthode que pour un système non chiffré, mais cela nécessite au préalable de reformater la machine virtuelle (afin d'avoir deux partitions) et d'écraser le système par un conteneur chiffré dans lequel je décompresserai ma sauvegarde. Ceux que cette piste intéresse peuvent s'inspirer de la documentation suivante : Stockage chiffré intégral sur serveur distant.
Autre méthode :
dd if=/dev/zero, of=/dev/sdX
, par ex.) et informer le noyau de ce changement : apt-get install parted && partprobe
;dd if=/dev/vda | ssh root@<ma_nouvelle_VM> "dd of=/dev/sdb"
. Évidemment, attention à ne pas se tromper de disques ;partprobe
;parted
et fdisk
) et des systèmes de fichiers (avec fsck
) ;apt-get install udisks2: && udisksctl unlock --block-device /dev/mapper/sdb2 ; udisksctl unlock --block-device /dev/sdb2
(en root). Dans mon cas, la première commande udisksctl s'est terminée en silence et la deuxième a craché l'erreur suivante : « Error unlocking /dev/sdb2: GDBus.Error:org.freedesktop.UDisks2.Error.Failed: Error unlocking /dev/sdb2: Command-line 'cryptsetup luksOpen "/dev/sdb2" "luks-2e9a6ffa-5138-4e5d-b93c-be86d6d64a49"' exited with non-zero exit status 5: Device luks-2e9a6ffa-5138-4e5d-b93c-be86d6d64a49 already exists ». Cela m'a tout de même permis de monter mon conteneur chiffré de manière habituelle : mount /dev/mapper/luks-2e9a6ffa-5138-4e5d-b93c-be86d6d64a49 /mnt/chroot
;/mnt/chroot/etc/network/interfaces
;grep -R '<anciennes_IPv4_et_v6>' /etc
pour vérifier que les anciennes adresses IP ne traînent pas dans des configurations ;ls
) avec ls (hd0,msdos1)
. En rebootant sur le mode rescue, je me suis aperçu que je n'arrivais pas à monter la première partition de mon disque, celle non chiffrée, qui contient mon /boot. D'après dumpe2fs
, l'UUID de son système de fichiers ext3 ne correspond pas à l'UUID de celui de mon ancienne machine virtuelle, son dernier point de montage a été « / » et sa taille dépasse la partition. Conclusion : pour une raison que j'ignore, dd
n'a pas écrasé la première partition. J'ai donc lancé la commande suivante depuis mon ancienne machine virtuelle : dd if=/dev/vda1 | ssh root@<ma_nouvelle_VM> "dd of=/dev/sdb1"
. Cette fois, ça chemar \o/ ;/etc/crypttab
et /etc/fstab
, mon conteneur chiffré est désigné sous le nom « vda2_crypt ». Or, mon disque dur est désormais désigné sous l'appellation « sda ». J'ai peur que cela entraîne de la confusion chez moi à l'avenir, donc je décide de modifier ces deux fichiers, puis de mettre à jour mon initramfs avec update-initramfs -u -k all
. Cela produit un avertissement : « cryptsetup: failed to determine cipher modules to load for /dev/mapper/sda2_crypt » ;cryptsetup luksOpen /dev/sdb2 sda2_crypt
. Je monte cette partition ainsi que la première partition de mon disque sur /mnt/chroot/boot, je mount -o bind
/dev, /sys et /proc, je chroot
, et je mets à jour mon initramfs avec update-initramfs -u -k all
;