スタートアップCTOによるITエンジニアのためのブログ

WSL2のexport/importコマンドによるバックアップ作成と復元

Windows Subsystem for Linux 2(WSL2)を使っていると、「PCが壊れた時に備えて環境のバックアップを取りたい」、「1つのディストリビューションを複数登録したい」といった要望がでてくることがあります。

本記事では、そのような要望に対応できる、wsl2のexportとimportコマンドを使ったバックアップの作成と復元方法を解説します。

export/importの概要とバックアップの目的

WSL2のexportコマンドを使うと、個別Linuxディストリビューションの仮想ハードディスク(vhdxファイル)上に存在する全データのバックアップを作成することができます。バックアップを作成する主な目的としては次のようなものがあります。

  • PCの故障への備え
  • 大きな変更を加える前の保存: システム設定の変更や、環境を壊す可能性がある作業の前に。
  • 環境の移行: 他のPCや、容量の大きい別ドライブへWSL環境を移す。
  • 環境の複製: 同じ構成のディストリビューションを複数作り、開発用と実験用に分ける。

作成したバックアップ(tarファイル等)に対してWSL2のimportコマンドを使うと、いつでもその状態を復元させることができます。

export (バックアップ)手順 

事前準備

  1. Docker Desktopを使っている場合: 終了させておきます。そうしないと、WSLを停止してもDockerが自動で再起動させてしまうことがあります。
  2. ディストリビューションの停止: 整合性を保つため、wsl --terminate <ディストリビューション名> で対象を停止します。

exportコマンド実行

exportコマンドは以下の形式で使用します。

wsl --export <ディストリビューション名> <出力ファイル名> [オプション]

最新のWSLでは --format オプションで圧縮形式を直接指定できます。

フォーマット圧縮率特徴
tar (デフォルト)なし処理が最速。互換性が高い。
tar.gz速度とファイルサイズのバランスが良い。
tar.xz処理は遅いが、ファイルサイズを大幅に節約できる。長期保存用。
vhdなしVHDX形式で出力。import-in-place での再登録に便利。

実行例(デフォルトのtar形式):

wsl --export Ubuntu-24.04 ubuntu2404_20260430.tar

エクスポートの進行状況がMB単位で表示されるため、おおよその所要時間がわかります。

wsl --export

import(復元)手順

インポートを行うと、バックアップファイルから新しいWSL環境を構築できます。

インストール先ディレクトリの作成

まず、WSLのデータを格納するフォルダを作成します(例: D:\WSL\Ubuntu-24.04-imported)。import 実行後、このフォルダの中に仮想ディスクの実体(ext4.vhdx)が展開されます。

importコマンドの実行

wsl --import <新しい登録名> <インストール先フォルダパス> <バックアップファイル名>

実行例:

wsl --import Ubuntu-24.04-imported D:\WSL\Ubuntu-24.04-imported .\ubuntu2404_20260430.tar

これで、WSLにディストリビューションが新規登録され、専用の仮想ハードディスク(ext4.vhdx)が作成されます。この仮想ハードディスクはtarファイルからも、エクスポート元ディストリビューションの仮想ハードディスクからも独立しています。

登録確認

wsl -l -vで、新しいディストリビューション名で登録されているか確認します。

画像:export元のディストリビューションとは別に新規ディストリビューションが作成されている。

wsl importされたディストリビューション

ログインユーザーの継承

最新のWSLでは、エクスポート元の環境で /etc/wsl.conf にデフォルトユーザー設定が記述されていれば、インポート後の環境でもその設定が自動的に引き継がれます。そのため、インポート直後から使い慣れたユーザーでログインが可能です。

※もしrootでログインされてしまう場合は、エクスポート前に元環境の /etc/wsl.conf に以下が記述されているか確認してください。

[user]
default=ユーザー名

import と import-in-place の違い

WSLには、標準の import に加えて import-in-place という便利なコマンドがあります。

wsl –import (コピー&展開)

バックアップ(tarファイル等)から、新しいWSL環境を「構築(展開)」するコマンドです。

  • 動作: 指定したファイル(tar等)を読み込み、指定した場所に新しい仮想ディスク(ext4.vhdx)を作成・展開します。
  • 元のファイル: エクスポートしたtarファイルなどは、インポート後もそのまま残ります(=二重に容量を消費します)。
  • 用途: バックアップからの復元、配布された環境の構築、保存場所の引っ越し。

wsl –import-in-place (そのまま登録)

既に存在する仮想ディスクファイル(.vhdx)を、新しいコピーを作らずに「そのままWSLに登録」するコマンドです。

  • 動作: 指定した場所にある .vhdx ファイルを、そのままその場所でディストリビューションとして認識させます。
  • 元のファイル: そのファイル自体がWSLのシステムとして使われます。コピーが発生しないため、一瞬で完了し、余計な容量も使いません。
  • 用途: 「VHDXファイルを別のドライブに手動で移動させた後、再認識させたい」場合や、VHD形式でエクスポートしたファイルを即座に起動したい場合に最適です。

使用例:

1. vhd形式でエクスポート

wsl --export Ubuntu-24.04 .\ubuntu2404.vhdx --format vhd

2. import-in-placeでインポート

wsl --import-in-place Ubuntu-24.04-imported-vhdx .\ubuntu2404.vhdx

まとめ:WSL2のimport/exportコマンドを使ってバックアップを活用しよう 

WSL2のexport/importコマンドは、開発環境の安全性を高める強力なツールです。

  • 定期的なバックアップで、PCの故障や設定ミスに備える
  • 環境の複製で、クリーンな実験用環境を即座に作る
  • import-in-placeで、ストレージ容量を節約しながら環境を管理する

これらを使いこなして、より快適なWSL2ライフを送りましょう。