Voici une petite bidouille pour transférer un serveur OpenBSD physique vers une machine virtuelle (VMware dans mon cas, mais cela devrait fonctionner avec tous).
A moins de faire une mauvaise commande, il n'y a aucun risque pour le serveur car on ne modifie rien dessus.
Ici, rien de particulier. Récupérez une ISO d'OpenBSD et effectuez l'installation dans une machine virtuelle. Configurez le réseau afin d'avoir un accès SSH.
Si je liste ce que contient mon serveur, voilà ce que j'obtiens :
$ ls / altroot boot bsd.mp dev home obsd sbin sys usr bin bsd bsd.rd etc mnt root stand tmp var
Mon serveur fait tourner OpenSMTPD dont la config se trouve dans /etc et les messages dans /home. Vient ensuite dovecot installé à partir des ports, ses fichiers se situent dans /usr (et la config dans /etc). Et pour finir, prosody qui vient lui aussi des ports et exploite une base de données située dans /var. La liste des répertoires à transférer est donc :
On utilise un bon vieux tar (vous pouvez utiliser la compression en rajoutant l'argument z) :
# tar -pcvf etc.tar /etc/ # tar -pcvf home.tar /home/ # tar -pcvf usr.tar /usr/ # tar -pcvf var.tar /var/
Attention à ne pas travailler dans le répertoire /home lorsque vous faites la deuxième commande ! Sinon cela ne terminera jamais (il va archiver le fichier d'archive nouvellement créé, etc).
Le plus simple est d'utiliser le protocole sftp (actif du moment que sshd est actif sur vos systèmes). Cela peut-être fait depuis Filezilla sur une tierce machine (avec les comptes root).
Pour des raisons de sécurité, le fichier contenant les utilisateurs du système et leurs mots de passe est en lecture seule, même pour root (voir cette page). Vous devez utiliser l'outil vipw pour les importer.
Ouvrez vipw sur l'ordinateur hôte, copiez toutes les lignes situées après la ligne "nobody", et collez-là à la suite dans le vipw de la VM (vous pouvez faire cette opération depuis un ordinateur tiers et des connexions SSH).
La procédure est classique, sauf qu'il faut penser à sauvegarder le fichier fstab car le partitionnement peut différer :
# tar -pxvf var.tar -C / # tar -pxvf usr.tar -C / # tar -pxvf home.tar -C / # cp /etc/fstab /root/ # tar -pxvf etc.tar -C / # cp /root/fstab /etc/ # reboot
Pensez à revoir la configuration du rc.conf, notamment le nom d'hôte et le réseau qui peuvent différer.
3 commentaires
Salut,
ce n'est ABSOLUMENT pas contre toi, et excuse moi l'expression, mais je trouve cette méthode dégueulasse ...
Est-ce qu'il n'y a pas mieux ? ou plus "propre" ?
Perdre du temps à tarer l'ensemble, alors qu'un rsync (ou un scp) pourrait le faire ?
Je me trompe peut-être (je ne suis pas familier avec bsd), donc je cherche à comprendre, plus qu'à faire un critique (qui ne me semble pas gratuite).
Impropre, oui et non, car les procédures de mise à jour d'OpenBSD se déroulent comme ça, tu télécharge des tgz et tu les décompresse là où il faut. Comme autre méthode, si tu peux arrêter le serveur, il y a possibilité d'utiliser la commande dd pour créer une image du disque dur et l'importer dans la machine virtuelle. J'ai aussi vu des méthodes avec netcat (ce qui revient à faire un dd par le réseau).
OK !
Merci de ta réponse.