Skip to main content

Backup WSL2 Folder Projects to Windows Drive & Window Task Scheduler Backup

Simple Method 2025:

Tạo folder ở một ổ đĩa để backup: ví dụ: E:/backup_wsl

tạo 2 file bat và vbs:

auto-backup.bat

@echo off
setlocal enabledelayedexpansion

:: Get the current date
for /f "tokens=2 delims==" %%i in ('"wmic os get localdatetime /value"') do set datetime=%%i

:: Extract year and month
set year=!datetime:~0,4!
set month=!datetime:~4,2!

:: Set the backup file name
set backupFile=E:\backup_wsl\ubuntu-%year%-%month%.vhdx

:: Run the WSL export command
wsl --export Ubuntu-22.04 !backupFile! --vhd

echo Backup completed: !backupFile!

auto-backup.vbs

Dim WinScriptHost
Set WinScriptHost = CreateObject("WScript.Shell")
WinScriptHost.Run Chr(34) & "E:\backup_wsl\auto-backup.bat" & Chr(34), 0
Set WinScriptHost = Nothing

Nhấn Start trên keyboard và search Task Scheduler

Tạo một task để theo thời gian và option mong muốn trỏ tới action mở file auto-backup.vbs như hình

image.png

image.png

image.png

sau khi ok hết thì thử run task xem có chạy backup ko? Done.

image.png

Simple Method 2024:

robocopy /mir \\wsl.localhost\Ubuntu-22.04\home\son\ F:\backups\son\


Window Task Scheduler Method:

backup_kyluat.bat

net use o: \\wsl.localhost\Ubuntu-22.04
robocopy /mir o:\home\son\kyluat F:\backups\son\kyluat /R:1 /W:5 /NP /V /XD node_modules /XD "mongo" /XD "redis" /XD "postgres" /XD dist
net use o: /delete

File này để chạy robocopy và copy vào ổ đĩa physical từ network drive

backup_kyluat.vbs

Dim WinScriptHost
Set WinScriptHost = CreateObject("WScript.Shell")
WinScriptHost.Run Chr(34) & "F:\backups\backup_kyluat.bat" & Chr(34), 0
Set WinScriptHost = Nothing

File này để cho Window Task chạy ngầm,... đỡ phải hiện ra popup window

Tạo trigger action trên window task để mở file backup_kyluat.vbs theo thời gian muốn chạy backup.