简单的备份还原脚本,因为需要频繁恢复环境,方便自己备份还原,供参考
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
::------------------------------------------------------------------------------------------------------