web-dev-qa-db-ja.com

システムをリセットまたは再インストールする前に、Windows 10のLinuxサブシステム(WSL)をバックアップする方法は?

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

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

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

35
emipac

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

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

35
Bob

バックアップする方法は?

いくつかの方法がありますが、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などにコピーすることをお勧めします。

アップデート2020-02-18アップデート

Windows 10 1903では、更新されたwsl.exeツールが同梱されています。これには、ディストリビューションの内容を外部アーカイブに/からエクスポート/インポートする機能が含まれており、ディストリビューション間のバックアップおよび/または移動プロセスを大幅に簡素化します。マシン!

HTH。

17
Richard Turner

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

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

バックアップの作成

issue report に基づいて、WSLのtarを使用してバックアップを作成できます。コピー内の一部のフォルダー(/ 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コマンドラインを使用して、作成されたtarを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ディストリビューションを実行します。

2
Jaime

Jaimeの答えは完璧ですが、launcher.exeを使用してtarボールをインストールするときに/tmpフォルダが再作成されない(具体的には、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
0
Rajesh Thampi