システムをリセットまたは再インストールする前に、Windows 10用のLinuxサブシステムをバックアップ(WSL)するにはどうすればよいですか?


24

私の問題は、いくつかの問題のためにWindowsをリセットまたは再インストールする必要があることですが、開発のためにWSLを構成するために多くの時間を費やし、それを失いたくありません。

設定とインストールされているモジュール、プラグイン、ユーザーなどでWSL全体をバックアップし、ウィンドウをリセットまたは再インストールした後に復元する方法はありますか?このトピックをよく検索しましたが、有用な情報が見つかりませんでした。

それ以外の場合、バックアップする方法がない場合、Windows 10のリセットはWSLを完全に削除しますか?


単純にバックアップと同じくらい簡単に想像でき%USERPROFILE%/AppData/Local/lxssます。試しましたか?
ラムハウンド

はい、試しましたが、部分的にしか機能していませんが、多くのエラーがあります。
emipac

回答:


15

バックアップ方法

さまざまな方法がありますが、一般的な方法の1つは、tar使用して、バックアップするファイルのアーカイブを作成することです(環境を再作成するときにすべてを再インストールするため)。簡単なbackup.shスクリプトを作成すると、定期的なスケジュールで繰り返しバックアップしやすくなります。

何をバックアップしますか?

ほとんどの構成は、Linux .___構成ファイル(多くの場合、〜/フォルダー)に保存されます。/etc/ssh/ssh_configインスタンス固有のキー/データ/などを含む複雑な構成ファイルには注意が必要ですが、自分や他の同様のシステム構成ファイルをバックアップすることもできます。

を使用してaptパッケージリスト生成できますdpkg-query -f '${binary:Package}\n' -W。また、バックアップできるファイルにエコーできます。

どこにバックアップしますか?

その後、これらのtarアーカイブを別の場所にコピーできます。Windowsでアクセス可能なフォルダー(例/mnt/c/backups:)にコピーすることをお勧めします。このフォルダーからOneDrive、DropBox、外部HDD、FTPなどにコピーできます。

HTH。


21

Windows 10 v1903に は、組み込みのWSLエクスポート/インポートコマンドが含まれています。具体的にはwsl --export、生成するtarwsl --import以前にエクスポートをインポートしています、tar。その後、このファイルをコンピューター間で移動できます。

でstdin / stdoutを指定することもできます-。これにより、別のマシンに直接転送し、などのリモートシェルを使用してインポートできるようになりsshます。


wsl --importtar.gzファイルをインポートすることもできます。これらのコマンドは、内部で%SystemRoot%\System32\lxss\tools\bsdtarELF64バイナリを起動します。
ビスワプリヨ

神経質な人を助けるためのanecdata:wsl --export予想よりも時間がかかる場合があります。私のマシンでは、数メガバイトしか書き込まなかったので約10分間待機し、最終的に3.2 GBのtarファイルを書き出しました。
スクルース

2

完全なWSL Linuxディストリビューションをバックアップおよび復元するには、(1).tar.gzファイルシステムで作成し、(2)インターネットで利用可能ないくつかのインストーラーツールを使用してコピーを復元します。

  • LxRunOfflineには、カスタムLinuxディストリビューションを複製してインストールするオプションがあります。.tar.gzファイルからディストリビューションをインストールできます。
  • WSL-DistroLauncherを使用すると、からディストリビューションをインストールできますrootfs.tar.gz
  • WSLInstallは、WSL用の別のLinuxインストーラーです。

バックアップを作成する

問題レポートに基づいてtar、WSL を使用してバックアップを作成できます。コピー内の一部のフォルダー(/ mntなど)は無視する必要があることに注意してください。

# 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

あなたは、作成、または有効に、後でバックアップファイルを移動する必要があります/mnt/cサブフォルダ。この例では、ファイルはに作成されます/mnt/c/tmp


lxRunOfflineを使用した復元

使用lxRunOfflineを、あなたは、Windowsのコマンドラインを使用してWSLの新しい分布結果として得られたタールをインストールすることができます。

# 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

バックアップを実行するには、同じlxRunOfflineを使用できます

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

DistroLauncherを使用した復元

Microsoftの例に基づいたLinuxディストリビューション用の多くのランチャーがあります。Yuk7バージョンを試してもいいと思います。

配布ファイルとをダウンロードする必要がありますlauncher.exe。上記と同じ配布ファイルを使用するには、バックアップファイルの名前rootfs.tar.gzとランチャーの名前を目的の配布名に変更する必要があります。後でランチャーを管理者として実行する必要があります(通常のユーザーとして実行するとエラーが発生します)

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

ランチャーを初めて実行すると、ディストリビューションがインストールおよび実行されます。次回は、Linuxディストリビューションを実行します。


ありがとうございました!-Yuk7のwsdlランチャーは起動に失敗し続け、lxRunOfflineの問題は見られませんでした。これは、wsldlの問題を修正した正しいtarコマンドを文書化した唯一の場所です。
-AndrewD

0

Jaimeの答えは完璧ですが、tarballの/tmpインストールにlauncher.exeを使用すると、どういうわけかフォルダーが再作成されません(特に、WSLインストールをあるマシンから別のマシンに移動することについて話しています)。

したがって/tmp、必要な権限を作成して割り当てる必要があります。

私のために働いた1つのアプローチは次のとおりです。

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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.