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

backup bash reinstall reset windows-subsystem-for-linux

私の問題は、いくつかの問題があってwindowsをリセットしたり再インストールしたりしなければならないのですが、開発のためにWSLの設定に多くの時間を費やしてしまったので、それを失いたくないということです

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

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

  56  None  2017-01-08


ベストアンサー

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

また、-でstdin/stdoutを指定すれば、別のマシンに直接転送してsshのようにリモートシェルを使ってインポートできるはずです

61  Bob  2019-05-12


バックアップの方法は?

方法はいくつでもありますが、一般的な方法としては、tarを使ってバックアップしたいファイルのアーカイブを作成することです (環境を作り直すときにすべてを再インストールするため)。簡単なbackup.shスクリプトを書けば、定期的にバックアップを繰り返すことが容易になるはずです

何をバックアップするか?

設定のほとんどは Linux .___config ファイルに保存されています。/etc/ssh/ssh_config やその他の同様のシステム設定ファイルをバックアップすることもできますが、インスタンス固有のキーやデータなどを含む複雑な設定ファイルには注意してください

あなたはgenerate your apt package listdpkg-query -f '${binary:Package}\n' -Wを使用して生成することができますし、あなたもバックアップすることができますファイルにエコーすることができます

バックアップ先は?

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

2020-02-18更新しました

Windows 10 1903では、ディストロの内容を外部アーカイブへ/外部アーカイブからエクスポート/インポートする機能を含む更新されたwsl.exeツールが出荷され、マシン間でのディストロのバックアップや移動のプロセスが大幅に簡素化されました

HTH.

19  Richard Turner  2017-04-13


完全な 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 のコマンドラインを使用して WSL に新しいディストリビューションとして tar をインストールすることができます

# 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のディストリビューションを実行します

3  Jaime  2018-07-29


Jaimeさんの回答は完璧ですが、tarボールをインストールするためにlauncher.exeを使用した場合、なぜか/tmpフォルダが再作成されません(具体的にはWSLのインストールをあるマシンから別のマシンに移動させることについて話しています)

そのため、/tmpを作成し、必要な権利を割り当てなければなりません

私に効果があったアプローチは

Just a moment...
# chown root:root /tmp
# chmod 1777 /tmp
## test it ##
# /etc/init.d/mysqld start

0  Rajesh Thampi  2019-05-11


タイトルとURLをコピーしました