Linux — практическо ръководство
Част 3: Бекъп и възстановяване на WSL2
След като настроих WSL за реална работа, следващото нещо, което направих, беше да имам работещ бекъп. В тази статия описвам как експортирам, възстановявам и местя дистрибуции — с реални команди, които използвам.
ℹ Бележка: Тук говоря за WSL2 и официалните команди wsl —export / wsl —import . Това е подходът, който използвам, когато искам пълен snapshot на дистрибуцията — пакети, home, SSH ключове, конфигове. Файловете под /mnt/c/ (Windows дискове) не влизат в export-а. Тях ги бекъпвам отделно, ако ми трябват.
1. Защо изобщо правя бекъп на WSL?
WSL2 държи цялата Linux файлова система във virtual disk (обикновено ext4.vhdx).
Ако нещо се обърка — грешен rm -rf, проблем след update, смяна на диск или машина —
без бекъп си изгубил часове настройка.
Аз правя бекъп преди големи промени, преди миграция на друг диск и периодично, когато средата вече работи стабилно.
Една команда wsl --export ми дава пълен snapshot, който мога да върна с wsl --import.
2. Какво ми е необходимо?
PowerShell или Command Prompt (за предпочитане като обикновен потребител, не задължително Admin). Достатъчно свободно място на диска — export-ът е приблизително колкото размера на дистрибуцията (или малко повече при TAR).
Първо виждам какво имам инсталирано:
Списък на дистрибуциитеКопирай
wsl --list --verbose
Или по-кратко:
Кратък списъкКопирай
wsl -l -v
Имената, които виждам тук (например Ubuntu, Ubuntu-24.04), са точно тези, които подавам на export/import.
3. Спирам WSL преди бекъп
Не експортирам работеща дистрибуция, ако мога да я избегна. Докато има отворени файлове или процеси, snapshot-ът може да е непоследователен.
Спирам конкретна дистрибуция:
Спиране на конкретна дистрибуцияКопирай
wsl --terminate Ubuntu
Или спирам всичко (всички дистрибуции + леката WSL2 VM):
Пълно спиране на WSLКопирай
wsl --shutdown
✓: Моят навик: преди export почти винаги пускам wsl —shutdown . Така знам, че няма отворени файлове и бекъпът е чист.
4. Правя бекъп с export (TAR)
Това е класическият начин. Export-ът създава tar архив с цялата Linux файлова система на дистрибуцията.
Създавам папка за бекъпи и експортирам с дата в името (PowerShell):
Създаване на папка и export с датаКопирай
New-Item -ItemType Directory -Force -Path "D:\WSL_Backups_2026"
wsl --export Ubuntu "D:\WSL_Backups_2026\Ubuntu_Backup_$(Get-Date -Format dd-MM-yyyy).tar"
Командата работи тихо — няма progress bar. При стандартна Ubuntu с development инструменти отнема обикновено 1–5 минути, в зависимост от размера и диска.
Ако искам компресиран архив (по-малък файл):
Export като tar.gzКопирай
wsl --export Ubuntu "D:\WSL_Backups_2026\Ubuntu_Backup_$(Get-Date -Format dd-MM-yyyy).tar.gz" --format tar.gz
5. По-бърз вариант: export като VHD
При WSL2 мога да експортирам директно virtual disk-а. Това обикновено е по-бързо, защото не минава през tar serialization, а копира диска.
Export като VHDКопирай
wsl --export Ubuntu "D:\WSL_Backups_2026\Ubuntu_Backup_$(Get-Date -Format dd-MM-yyyy).vhdx" --format vhd
VHD форматът запазва и default user настройката по-чисто при restore. За редовни локални бекъпи често предпочитам именно него.
6. Какво влиза и какво не влиза в бекъпа
В export-а влизат:
- инсталираните пакети;
- home директориите и конфиговете;
- SSH ключове, .bashrc, .zshrc, docker данни вътре в Linux и т.н.
Не влизат файловете, достъпни през /mnt/c/, /mnt/d/ и други Windows mount-и.
Ако държа проекти на Windows диска, ги бекъпвам отделно (или ги държа в Linux home, ако искам да са в snapshot-а).
⚠ Предупреждение: Важно: .wslconfig (глобалните настройки в Windows user profile) също не е част от export-а. Ако го ползвам, копирам го отделно:
Бекъп на .wslconfigКопирай
Copy-Item "$env:USERPROFILE\.wslconfig" "D:\WSL_Backups_2026\wslconfig_$(Get-Date -Format dd-MM-yyyy).bak"
7. Възстановяване от бекъп (Restore)
Restore-ът е import. Създавам нова дистрибуция от архива и ѝ задавам място за virtual disk-а.
Пример с TAR:
Import от TARКопирай
New-Item -ItemType Directory -Force -Path "D:\WSL\Ubuntu"
wsl --import Ubuntu "D:\WSL\Ubuntu" "D:\WSL_Backups_2026\Ubuntu_Backup_22-08-2026.tar"
Пример с VHD:
Import от VHDКопирай
New-Item -ItemType Directory -Force -Path "D:\WSL\Ubuntu"
wsl --import Ubuntu "D:\WSL\Ubuntu" "D:\WSL_Backups_2026\Ubuntu_Backup_22-08-2026.vhdx" --vhd
Аргументите са: име, папка за install location, път до бекъп файла.
ℹ Бележка: След import от TAR WSL често влиза като root. Трябва да върна default user. При VHD обикновено default user се запазва по-добре.
8. Връщам default user след import
Ако след restore влизам като root, задавам потребителя отново. Един от начините (ако дистрибуцията има helper команда):
Default user чрез ubuntu configКопирай
ubuntu config --default-user fedya
(Името на командата може да е ubuntu2204.exe, ubuntu2404.exe и т.н. в зависимост от инсталацията.)
По-универсалният начин е през /etc/wsl.conf вътре в дистрибуцията:
Задаване на default user в wsl.confКопирай
wsl -d Ubuntu -u root
# вътре в Linux:
printf '[user]\ndefault=fedya\n' | tee /etc/wsl.conf
exit
wsl --terminate Ubuntu
След това отварям нормално:
Стартиране с правилния userКопирай
wsl -d Ubuntu
9. Ако искам да заменя съществуваща дистрибуция
Import не презаписва съществуващо име. Ако искам да възстановя върху същото име, първо трябва да unregister-на старата.
⚠ Предупреждение: Внимание: wsl —unregister изтрива virtual disk-а на дистрибуцията. Правя го само след като съм сигурен, че бекъп файлът е наличен и валиден.
Unregister + restoreКопирай
wsl --shutdown
wsl --unregister Ubuntu
New-Item -ItemType Directory -Force -Path "D:\WSL\Ubuntu"
wsl --import Ubuntu "D:\WSL\Ubuntu" "D:\WSL_Backups_2026\Ubuntu_Backup_22-08-2026.tar"
10. Миграция на друг диск (практичен сценарий)
Когато C: се напълни, местя WSL на D: чрез export → unregister → import на новото място.
Миграция от C: към D:Копирай
wsl --shutdown
wsl --export Ubuntu "D:\WSL_Backups_2026\Ubuntu_migrate.tar"
wsl --unregister Ubuntu
New-Item -ItemType Directory -Force -Path "D:\WSL\Ubuntu"
wsl --import Ubuntu "D:\WSL\Ubuntu" "D:\WSL_Backups_2026\Ubuntu_migrate.tar"
# после връщам default user, както по-горе
След миграцията проверявам дали всичко е на място:
Проверка след миграцияКопирай
wsl -l -v
wsl -d Ubuntu -- whoami
wsl -d Ubuntu -- df -h
11. Клониране на дистрибуция
Понякога искам втора идентична среда (например за експерименти), без да пипам основната. Export + import с ново име върши работа:
КлониранеКопирай
wsl --shutdown
wsl --export Ubuntu "D:\WSL_Backups_2026\Ubuntu_clone.tar"
New-Item -ItemType Directory -Force -Path "D:\WSL\Ubuntu-Dev"
wsl --import Ubuntu-Dev "D:\WSL\Ubuntu-Dev" "D:\WSL_Backups_2026\Ubuntu_clone.tar"
След това задавам default user и на клона. Мога да изтрия клона по всяко време с:
Изтриване на клонКопирай
wsl --unregister Ubuntu-Dev
12. Import in-place (VHD на място)
Ако вече имам .vhdx файл и искам да го регистрирам без копиране:
Import in-placeКопирай
wsl --import-in-place Ubuntu "D:\WSL\Ubuntu\ext4.vhdx"
Virtual disk-ът трябва да е ext4. Това е удобно, когато местя готовия VHD файл и не искам втори копие.
13. Моят практически workflow
За редовен бекъп преди рискова промяна правя следното:
shutdown
чиста среда
→
export
TAR или VHD
→
проверка
файл + размер
→
работа
промени / migrate
Моят типичен бекъп цикълКопирай
wsl --shutdown
New-Item -ItemType Directory -Force -Path "D:\WSL_Backups_2026"
wsl --export Ubuntu "D:\WSL_Backups_2026\Ubuntu_Backup_$(Get-Date -Format dd-MM-yyyy).tar"
Get-Item "D:\WSL_Backups_2026\Ubuntu_Backup_*.tar" | Select-Object Name, Length, LastWriteTime
Държа поне два поколения бекъпа. Не презаписвам единствения файл.
14. Полезни допълнителни команди
Няколко команди, които често ползвам около бекъп и поддръжка:
Статус и версия на WSLКопирай
wsl --status
wsl --version
Задаване на default дистрибуцияКопирай
wsl --set-default Ubuntu
Обновяване на WSLКопирай
wsl --update
Стартиране като конкретен userКопирай
wsl -d Ubuntu -u fedya
15. TAR или VHD — кога кое?
| Формат | Предимства | Кога го ползвам |
|---|---|---|
tar (default) | Универсален, работи навсякъде | Общ бекъп, прехвърляне между машини |
tar.gz | По-малък файл | Когато мястото или мрежата са ограничени |
vhd | По-бърз export/import, запазва default user по-добре | Редовни локални бекъпи, миграция на диск |
16. Командите накратко
| Команда | За какво я използвам |
|---|---|
wsl -l -v | Списък на дистрибуциите и версията им. |
wsl --shutdown | Спирам всички WSL инстанции преди бекъп. |
wsl --terminate NAME | Спирам само една дистрибуция. |
wsl --export NAME file.tar | Правя TAR бекъп. |
wsl --export NAME file.vhdx --format vhd | Правя VHD бекъп (по-бърз). |
wsl --import NAME path file.tar | Възстановявам от TAR. |
wsl --import NAME path file.vhdx --vhd | Възстановявам от VHD. |
wsl --import-in-place NAME file.vhdx | Регистрирам съществуващ VHD на място. |
wsl --unregister NAME | Изтривам дистрибуция (и данните ѝ). |
wsl --set-default NAME | Задавам default дистрибуция. |
wsl --status / wsl --version | Статус и версия на WSL. |
17. Заключение
Бекъпът на WSL2 не е сложен. Една добре направена wsl --export команда ми дава
пълен snapshot, който мога да върна с wsl --import на същото или на друго място.
Моят подход е прост: shutdown → export с дата в името → проверка на файла → после работа.
При restore внимавам с default user и никога не правя unregister, преди да съм сигурен,
че бекъпът е валиден.
Не усложнявам с външни инструменти, ако официалните команди вършат работа.
За мен комбинацията wsl --export / wsl --import е напълно достатъчна
за реална ежедневна употреба.
✓: Моят принцип: бекъпът трябва да е лесен и повторим. Ако процедурата е прекалено сложна, няма да я правя редовно — а точно редовността е важна.