Mon problème est que je dois réinitialiser ou réinstaller Windows à cause de certains problèmes, mais j'ai passé beaucoup de temps à configurer WSL pour le développement et je ne veux pas le perdre.
Existe-t-il un moyen de sauvegarder l'ensemble du WSL avec ses paramètres et modules installés, plug-ins, utilisateurs, etc. et de le restaurer après avoir réinitialisé ou réinstallé Windows? J'ai beaucoup cherché ce sujet mais je n'ai trouvé aucune information utile.
Sinon, s'il n'y a aucun moyen de sauvegarder, la réinitialisation de Windows 10 supprimera-t-il totalement WSL?
Toutes sortes de façons, mais une pratique courante consiste à utiliser tar pour créer une archive des fichiers que vous voulez sauvegarder (pour tout réinstaller lorsque vous recréez votre environnement). L'écriture d'un simple script backup.sh
devrait faciliter la sauvegarde répétée de manière régulière.
La majeure partie de votre configuration est stockée dans des fichiers de configuration .___ de Linux, souvent dans votre dossier ~ /. Vous voudrez peut-être également sauvegarder votre /etc/ssh/ssh_config
et d’autres fichiers de configuration système similaires, mais soyez prudent avec les fichiers de configuration complexes contenant des clés/données/etc spécifiques à une instance.
Vous pouvez générer votre liste de paquets apt à l’aide de dpkg-query -f '${binary:Package}\n' -W
et créer un fichier d'écho que vous pouvez également sauvegarder.
Vous pouvez ensuite copier ces archives tar vers un autre emplacement. Nous vous recommandons de copier dans un dossier accessible à Windows (par exemple, /mnt/c/backups
) à partir duquel vous pouvez le copier sur OneDrive, DropBox, un disque dur externe, FTP ailleurs, etc.
HTH.
Windows 10 v1903 inclut une commande d'exportation/importation WSL intégrée . Plus précisément, wsl --export
, qui produit une tar
et wsl --import
, qui importe une tar
précédemment exportée. Vous pouvez ensuite déplacer ce fichier entre ordinateurs.
Vous pouvez également spécifier stdin/stdout avec -
, ce qui devrait vous permettre de transférer directement vers une autre machine et d'importer à l'aide d'un shell distant tel que ssh
.
Pour sauvegarder et restaurer une distribution linux WSL complète, vous pouvez essayer (1) de créer un .tar.gz
avec votre système de fichiers et (2) de restaurer la copie à l'aide de certains outils d'installation disponibles sur Internet:
.tar.gz
.rootfs.tar.gz
.Création de la sauvegarde
Sur la base d'un rapport de problème , vous pouvez créer une sauvegarde à l'aide de la variable tar
dans le WSL. Notez que vous devez ignorer certains dossiers (par exemple/mnt) dans la copie.
# cd /
# tar vzcpf /mnt/c/tmp/ubuntu_`date +%Y%m%d_%H`.tar.gz --exclude=/proc --exclude=/dev --exclude=/mnt --exclude=/media --exclude=/lost+found --exclude=/tmp --exclude=/sys --exclude=/run / > /mnt/c/tmp/ubuntu_`date +%Y%m%d_%H`.log 2> /mnt/c/tmp/ubuntu_`date +%Y%m%d_%H`.error
Vous devez créer ou déplacer ultérieurement le fichier de sauvegarde dans un sous-dossier /mnt/c
valide. Dans l'exemple, les fichiers sont créés dans le /mnt/c/tmp
.
Restauration à l'aide de lxRunOffline
En utilisant lxRunOffline , vous pouvez installer le fichier tar résultant en tant que nouvelle distribution dans WSL à l'aide de la ligne de commande Windows.
# lxrunoffline install -n <distro name> -d <installation folder> -f <file>
C:\wsl> lxrunoffline install -n mybackup -d c:\wsl\mybackup -f c:\tmp\ubuntu_20180729_00.tar.gz
Pour exécuter la sauvegarde, vous pouvez utiliser le même fichier lxRunOffline.
# lxrunoffline run -n <distro name> -w
C:\wsl> lxrunoffline run -n mybackup -w
Restauration à l'aide d'un DistroLauncher
Il existe de nombreux lanceurs pour les distributions Linux basés sur l'exemple de Microsoft . Je pense que vous pouvez essayer la version de Yuk7 .
Vous devez télécharger un fichier de distribution et le launcher.exe
. Pour utiliser le même fichier de distribution mentionné ci-dessus, vous devez renommer le fichier de sauvegarde en rootfs.tar.gz
et le programme de lancement du nom de distribution souhaité. Plus tard, vous devez exécuter le lanceur en tant qu'administrateur (des erreurs me l'ont fait exécuter en tant qu'utilisateur normal)
c:\wsl> ren launcher.exe mybackup.exe
c:\wsl> ren .\ubuntu_20180729_00.tar.gz rootfs.tar.gz
c:\wsl> .\mybackup.exe
La première fois que vous exécutez le programme de lancement, il installe et exécute la distribution. La prochaine fois, il lance la distribution Linux.
Bien que la réponse de Jaime soit parfaite, le dossier /tmp
n'est pas recréé lorsque launcher.exe est utilisé pour l'installation de la boule de tar (je parle spécifiquement du déplacement de l'installation WSL d'une machine à une autre).
Il faut donc créer /tmp
et attribuer les droits requis.
La seule approche qui a fonctionné pour moi est la suivante:
https://www.cyberciti.biz/faq/mysqld-innodb-error-unable-to-create-temporary-file/
# chown root:root /tmp
# chmod 1777 /tmp
## test it ##
# /etc/init.d/mysqld start