备份和恢复WSL(Windows Subsystem for Linux)实例

一、备份WSL实例

步骤1:查看当前WSL实例

首先,确认你要备份的WSL实例名称:

wsl --list --verbose

输出示例:

NAME                   STATE           VERSION
* Debian               Running         2
Ubuntu                 Stopped         2

步骤2:停止WSL实例(可选但推荐)

为避免备份时数据不一致,建议先停止目标实例:

wsl --terminate Debian  # 替换为你的实例名称

步骤3:导出(备份)WSL实例

使用<code>wsl --export</code>命令将实例导出为<code>.tar</code>文件:

# 语法:wsl --export &lt;实例名称&gt; &lt;备份文件路径&gt;
wsl --export debian c:\wsl_backups\debian_$(Get-Date -Format &quot;yyyyMMdd&quot;).tar
  • 实例名称:从<code>wsl --list</code>中获取(如<code>Debian</code>)。
  • 备份文件路径:选择一个安全的位置存储备份(建议使用绝对路径)。

步骤4:验证备份文件

备份完成后,检查文件是否存在且大小合理:

# 查看备份文件大小
Get-Item D:\WSL-Backups\debian_*.tar | Select-Object Name, Length

二、恢复WSL实例

步骤1:导入(恢复)WSL实例

使用<code>wsl --import</code>命令从备份文件恢复实例:

# 语法:wsl --import &lt;新实例名称&gt; &lt;安装目录&gt; &lt;备份文件路径&gt; [--version &lt;WSL版本&gt;]
wsl --import Debian-Restored c:\WSL\Debian c:\WSL-Backups\debian_*.tar --version 2
  • 新实例名称:恢复后的实例名称(如<code>Debian-Restored</code>)。
  • 安装目录:指定WSL实例的安装位置(需是空目录)。
  • --version:指定WSL版本(1或2),建议与原实例版本一致。

步骤2:启动恢复的实例

wsl -d Debian-Restored

步骤3:验证恢复结果

在恢复的实例中检查数据是否完整:

# 检查文件和目录
ls -la
# 检查已安装的软件
dpkg --list | head -20

三、高级操作

1. 备份特定文件或目录

如果只需备份部分数据(如项目文件),可以直接复制到Windows目录:

# 在WSL中执行,将文件复制到Windows目录
cp -r /home/liang/trae_projects /mnt/d/backup/

2. 自动备份脚本

创建PowerShell脚本自动执行备份:

# backup-wsl.ps1
$distro = &quot;Debian&quot;
$backupDir = &quot;C:\WSL-Backups&quot;
$timestamp = Get-Date -Format &quot;yyyyMMdd-HHmmss&quot;
$backupFile = &quot;$backupDir\$distro-backup-$timestamp.tar&quot;

# 创建备份目录
if (-not (Test-Path $backupDir)) {
    New-Item -ItemType Directory -Path $backupDir -Force
}

# 停止实例
wsl --terminate $distro

# 导出备份
wsl --export $distro $backupFile

# 验证备份
if (Test-Path $backupFile) {
    Write-Host &quot;备份成功:$backupFile&quot;
    Write-Host &quot;文件大小:$(Get-Item $backupFile).Length / 1GB GB&quot;
} else {
    Write-Host &quot;备份失败&quot;
}

运行脚本:

.\backup-wsl.ps1

四、注意事项

  1. 备份前清理:备份前建议清理临时文件和日志,减少备份文件大小。
  2. 存储位置:将备份文件存储在外部硬盘或云存储中,以防本地磁盘故障。
  3. 定期备份:建议每周或每月定期备份,特别是在重要更改前。
  4. 版本兼容:恢复时确保WSL版本(1或2)与原实例一致,避免兼容性问题。
  5. 权限问题:恢复后可能需要重新设置用户权限,特别是如果使用非默认用户。