wsl 备份/还原.bat

本文提供了两个脚本:wsl-backup.bat用于备份Ubuntu20.04WSL环境到tar.gz文件,wsl-recover.bat用于从备份文件恢复。脚本利用7z工具进行压缩和解压操作,并支持选择性恢复。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简单的备份还原脚本,因为需要频繁恢复环境,方便自己备份还原,供参考
在这里插入图片描述

wsl-backup.bat

::  ## author: ssw  date: 2023.11
::------------------------------------------------------------------------------------------------------
%1 start "" mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c ""%~s0"" ::","","runas",1)(window.close)&&exit
::------------------------------------------------------------------------------------------------------

::------------------------------------------------------------------------------------------------------
@echo off

:: config: 
:: 1.压缩包后缀
set GZ=.gz
:: 2.备份的发行版本,可以[wsl -l -v]查看
set exportVersion=Ubuntu-20.04
:: 3.备份压缩包名的后缀
set backupFileName=-Ubuntu-20.04.tar

:: 找到7z安装目录,没有需要安装,或者复制一个7z.exe指定下,例如[set zipPath=D:\linux\7z.exe]
for /f "tokens=2*" %%A in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\7-Zip" /v Path') do set "zip=%%B"
set zipPath=%zip%7z.exe

:: 当前脚本目录
for %%I in ("%~dp0") do set currentPath=%%~fI

for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /value') do set datetime=%%I
  set year=%datetime:~0,4%
  set month=%datetime:~4,2%
  set day=%datetime:~6,2%
  set hour=%datetime:~8,2%
  set minute=%datetime:~10,2%
  set second=%datetime:~12,2%

:: 备份名称是年月日
set backupDate=%year%.%month%.%day%%backupFileName%
set backupDateGZ=%backupDate%%GZ%

:: 备份名称是年月日带时间
set backupDateTime=%year%.%month%.%day%-%hour%.%minute%.%second%%backupFileName%
set backupDateTimeGZ=%backupDateTime%%GZ%

IF EXIST "%backupDateGZ%" (
  echo "[%currentPath%%backupDateGZ%] exists, start backup [%currentPath%%backupDateTime%]"
  wsl --export %exportVersion% %currentPath%%backupDateTime%
  :: echo tar -zcvf %backupDateTimeGZ% %backupDateTime%
  "%zipPath%" a -tgzip %backupDateTimeGZ% %backupDateTime%
  del %backupDateTime%
) ELSE (
  echo "[%currentPath%%backupDateGZ%] does not exist, start backup [%currentPath%%backupDate%]"
  wsl --export %exportVersion% %currentPath%%backupDate%
  :: echo tar -zcvf %backupDateGZ% %backupDate%
  "%zipPath%" a -tgzip %backupDateGZ% %backupDate%
  del %backupDate%
)

pause
exit
::------------------------------------------------------------------------------------------------------

wsl-recover.bat

::  ## author: ssw  date: 2023.11
::------------------------------------------------------------------------------------------------------
%1 start "" mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c ""%~s0"" ::","","runas",1)(window.close)&&exit
::------------------------------------------------------------------------------------------------------

::------------------------------------------------------------------------------------------------------
@echo off

setlocal enabledelayedexpansion

:: config: 
:: 1.恢复备份压缩包,为当前脚本目录下的全部tar.gz
:: 2.恢复的发行版本,可以[wsl -l -v]查看
set importVersion=Ubuntu-20.04
:: 3.恢复的linux位置,例如为当前目录下的ubuntu2004文件夹中
set importFolder=ubuntu2004

:: 当前脚本目录
for %%I in ("%~dp0.") do set "currentPath=%%~fI"

:: 遍历当前目录,将.tar.gz / .tar文件存储到数组中
set index=0
for %%A in ("%currentPath%\*.tar.gz" "%currentPath%\*.tar") do (
    set /a index+=1
    set fileArray[!index!]=%%~nxA
    echo !index! %%~nxA
)

echo.
echo Select a backup for recovery: 
set /p choice=chose: 

:: 输出用户选择的文件
echo you chose: !fileArray[%choice%]!
set recoverFile=!fileArray[%choice%]!
echo start recover %recoverFile%

echo stop wsl
wsl --shutdown

echo delete %importVersion%
wsl --unregister %importVersion%

echo import %importVersion%
wsl --import %importVersion% %currentPath%\%importFolder% %currentPath%\%recoverFile%

endlocal

pause
exit
::------------------------------------------------------------------------------------------------------

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值