先日、Windows 10の中でPodmanを動かして、WordPressサイトを構築してみました。
WSL2版のUbuntuを使用しました。
ゲスト側OSのUbuntu 20.04のホームフォルダ内にmysqlとhtmlディレクトリを作成、コンテナからマウントしたため、WordPressのデータはこのディレクトリに蓄積されてゆきます。
では、ホスト側OSであるWindows 10側から、これらのデータをバックアップしておきたい場合、どの様にすればよいのでしょうか?
方法を記録しておこうと思います。
WSL2のエクスポート手順
ずばり。wsl.exeコマンドを使用するようです。
コマンドプロンプトを起動して、WSLにインストール済みのディストリビューションを確認します。
wsl -l
Ubuntu-20.04がインストールされています。
–exportオプションでtarファイルにエクスポートします。
wsl --export Ubuntu-20.04 <出力ファイル名>
エクスポートが完了すると、tarファイルが作成されています。
tarファイルは7-zipで展開することができます。どうやらUbuntuのディレクトリ全体がエクスポートされるようです。
WordPressのマウントディレクトリを確認すると、正しくアーカイブされているようです。
WSL2ストレージの実体
ホストOS側から見た、ゲストOSのストレージの実体はこのあたりのようです。
こちらのvhdxファイルが、Ubuntu 20.04から/dev/sdaと/dev/sdbとしてマウントされているようです。仮想ディスクの最大容量は、既定で256GBですが、今現在は13.8GB程度使用されていて、使用量が増えると自動で拡張されるようです。
前述のwsl –export以外の手段として、こちらのvhdxをバックアップしておく手もありそうですね。
/mntディレクトリにデータを保存する手も?
マウント情報を見ると、WSL2では/mntディレクトの下にホストOSのC:ドライブ等がマウントされています。
では、直接Windows 10側のストレージにデータを置けばよいのでは?ということで、wordpressディレクトリを移動してみましたが。ポッドは起動しますが、コンテナがうまく動きません。
推測ですが、おそらくファイルシステムが異なるため、/mnt以下にデータを置くのは難しい感じがします。
別のvhdxドライブ(例えば/dev/sdc)を別のドライブ(D:ドライブ)に作成してマウントする手もありそうですが。それならば既存の/dev/sdaと/dev/sdbを拡張したほうがシンプルですので、優位性が低い感じがします。
wsl –exportコマンドでバックアップしたUbuntuディストリビューションは、homeフォルダに置いたデータの他に、etcに置いた設定や、varに出力されたログファイル等が含まれるようです。
故障などの障害に備えて定期的にバックアップすれば、これらの消失を防ぐことができそうです。
とはいえ、バックアップ先が同じWindows 10のCドライブでは意味がありませんので、wsl –exportの出力先は別のPCやNAS等に置いたほうが良いと思います。
それと、tarアーカイブは書庫化(ファイルの連結)のみ行っていて、圧縮はされていません。保管する場合は、7z等で圧縮したほうがストレージの節約になりそうですね。