So sichern Sie das Linux-Subsystem (WSL) für Windows 10, bevor Sie das System zurücksetzen oder neu installieren


24

Mein Problem ist, dass ich Windows wegen einiger Probleme zurücksetzen oder neu installieren muss, aber ich habe viel Zeit damit verbracht, WSL für die Entwicklung zu konfigurieren und möchte es nicht verlieren.

Gibt es eine Möglichkeit, die gesamte WSL mit ihren Einstellungen und installierten Modulen, Plugins, Benutzern usw. zu sichern und nach dem Zurücksetzen oder Neuinstallieren von Windows wiederherzustellen? Ich habe viel in diesem Thema gesucht, aber ich konnte keine nützlichen Informationen finden.

Andernfalls wird beim Zurücksetzen von Windows 10 die WSL vollständig gelöscht, wenn keine Möglichkeit zum Sichern besteht.


Ich würde mir vorstellen, es ist so einfach wie ein Backup %USERPROFILE%/AppData/Local/lxss. Hast du das versucht?
Ramhound

Ja, ich habe es versucht, aber es funktioniert nur teilweise mit vielen Fehlern.
Emipac

Antworten:


15

Wie sichern?

Es gibt eine Reihe von Möglichkeiten, es ist jedoch üblich, tar zu verwenden, um ein Archiv der zu sichernden Dateien zu erstellen (um alles neu zu installieren, wenn Sie Ihre Umgebung neu erstellen). Das Schreiben eines einfachen backup.shSkripts sollte das wiederholte Sichern in regelmäßigen Abständen erleichtern.

Was soll gesichert werden?

Der größte Teil Ihrer Konfiguration wird in Linux .___-Konfigurationsdateien gespeichert, häufig in Ihrem ~ / -Ordner. Möglicherweise möchten Sie auch Ihre /etc/ssh/ssh_configund ähnliche Systemkonfigurationsdateien sichern . Seien Sie jedoch vorsichtig mit komplexen Konfigurationsdateien, die instanzspezifische Schlüssel / Daten / usw. enthalten.

Sie können Ihre apt-Paketliste mit generierendpkg-query -f '${binary:Package}\n' -W und in eine Datei übertragen, die Sie auch sichern können.

Wohin soll ein Backup erstellt werden?

Sie können diese tar-Archive dann an einen separaten Ort kopieren. Wir empfehlen das Kopieren in einen Windows-zugänglichen Ordner (z. B. /mnt/c/backups), von dem Sie ihn auf OneDrive, DropBox, externe Festplatte, FTP usw. kopieren können.

HTH.


21

Windows 10 v1903 enthält einen integrierten WSL-Export- / Importbefehl . Genauer gesagt, wsl --exportwelches ein tarund wsl --importwelches ein zuvor exportiertes importiert tar. Sie können diese Datei dann zwischen Computern verschieben.

Sie können auch stdin / stdout mit angeben -, wodurch Sie direkt auf einen anderen Computer übertragen und mit einer Remote-Shell wie z ssh. B. importieren können .


wsl --importkann auch tar.gzDateien importieren . Diese Befehle %SystemRoot%\System32\lxss\tools\bsdtarstarten intern ELF64 Binary.
Biswapriyo

Anekdaten, um nervösen Menschen zu helfen: wsl --exportKann länger dauern, als Sie vielleicht erwarten. Auf meinem Rechner saß es ungefähr 10 Minuten, nachdem es nur ein paar Megabyte geschrieben hatte, und schrieb dann endlich eine 3,2 GB Teer-Datei aus.
Scruss

2

Um eine vollständige WSL-Linux-Distribution zu sichern und wiederherzustellen, können Sie versuchen, (1) eine .tar.gzmit Ihrem Dateisystem zu erstellen und (2) die Kopie mit Hilfe einiger im Internet verfügbarer Installer-Tools wiederherzustellen:

  • LxRunOffline bietet Optionen zum Duplizieren und Installieren benutzerdefinierter Linux-Distributionen. Sie können eine Distribution aus einer .tar.gzDatei installieren .
  • Mit WSL-DistroLauncher können Sie eine Distribution von einem installieren rootfs.tar.gz.
  • WSLInstall , ein weiteres Linux-Installationsprogramm für WSL.

Backup erstellen

Basierend auf einem Fehlerbericht können Sie eine Sicherung mit der tarin der WSL erstellen . Beachten Sie, dass Sie einige Ordner (z. B. / mnt) in der Kopie ignorieren müssen.

# 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

Sie müssen die Sicherungsdatei erstellen oder später in einen gültigen /mnt/cUnterordner verschieben. In dem Beispiel werden die Dateien in das erstellt /mnt/c/tmp.


Wiederherstellung mit lxRunOffline

Mit lxRunOffline können Sie das resultierende tar als neue Distribution in WSL über die Windows-Befehlszeile installieren.

# 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

Um die Sicherung auszuführen, können Sie dasselbe lxRunOffline verwenden

# lxrunoffline run -n <distro name> -w
C:\wsl> lxrunoffline run -n mybackup  -w

Wiederherstellung mit einem DistroLauncher

Es gibt viele Starter für Linux-Distributionen, die auf dem Microsoft-Beispiel basieren . Ich denke, Sie können die Yuk7-Version versuchen .

Sie müssen eine Distributionsdatei herunterladen und die launcher.exe. Um dieselbe oben erwähnte Verteilungsdatei zu verwenden, müssen Sie die Sicherungsdatei in rootfs.tar.gzund den Starter in den gewünschten Verteilungsnamen umbenennen . Später müssen Sie den Launcher als Administrator ausführen (ich habe Fehler beim Ausführen als normaler Benutzer).

c:\wsl> ren launcher.exe mybackup.exe
c:\wsl> ren .\ubuntu_20180729_00.tar.gz rootfs.tar.gz
c:\wsl> .\mybackup.exe

Wenn Sie den Launcher zum ersten Mal ausführen, wird die Distribution installiert und ausgeführt. Beim nächsten Mal wird die Linux-Distribution ausgeführt.


Vielen Dank! - Yuk7s wsdl- Launcher schlug beim Start immer wieder fehl und ich konnte das lxRunOffline-Problem nicht erkennen. Dies war der einzige Ort, an dem ich den korrekten tar-Befehl gefunden habe, mit dem mein wsldl-Problem behoben wurde.
AndrewD

0

Während Jaimes Antwort perfekt ist, wird der /tmpOrdner nicht neu erstellt, wenn launcher.exe für die Installation des Teerballs verwendet wird (ich spreche speziell über das Verschieben der WSL-Installation von einem Computer auf einen anderen).

Man muss also /tmpdie erforderlichen Rechte erstellen und zuweisen.

Der eine Ansatz, der für mich funktioniert hat, ist:

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.