Підсистема Windows для Linux (Підсистема Windows для Linux, WSL2Сьогодні він широко використовується розробниками, адміністраторами та звичайними користувачами для запуску різних розподілів (Ubuntu, Debian, OpenSuse, Kali Linux, Alpine), інструментів та додатків Linux серед Windows без використання віртуалізації та подвійного завантаження. У цій статті ми розглянемо, як перенести встановлені файли на інший диск або комп'ютер.
Під час встановлення WSL у Windows всі екологічні файли зберігаються на системному диску (C: \, як правило). Якщо розмір системного диска недостатній (невеликий диск SSD), то з часом розмір файлової системи WSL може серйозно зрости, і ви захочете перенести файли WSL на інший диск. У Windows 10 та 11 ви можете перенести WSL на інший диск або комп'ютер декількома способами.
Перш за все, визначте поточний розмір файлової системи WSL на вашому диску. Принесіть список встановлених розподілів WSL на комп’ютері:
Wsl -list --verbose
У нашому прикладі встановлено лише Ubuntu-20.04. Виконайте наступну команду PowerShell, щоб отримати ім'я UWP за допомогою вашого розподілу Linux:
Get -appxpackage -name "*ubuntu20*" | Виберіть PackageFamilyName
У моєму прикладі назва UWP -пакет - Canonicalgrouplimited.Ubuntu20.04OnWindows_79rhkp1fndgsc. Файлова система WSL цього розподілу Linux зберігається у файлі VHD Ext4.VHDX Userprofile %\ appdata \ local \ packages \ canonicalgrouplimated.Ubuntu20.04OnWindows_79rhkp1fndgsc \ localstate \ ext4.VHDX
Щоб отримати розмір файлу за допомогою PowerShell, виконайте:
$ Path = $ env: userprofile + ”\ appdata \ local \ packages \” + (get -appxpackage -name "*ubuntu20*").Пакетфамілі -ім'я + “\ localstate \ ext4.Vhdx "
Get -childim -path $ path | Fl @label = "sizegb"; Вираз = $ _.Довжина / 1 Гб
Оптимізувати -vhd -path -mode повний
Шлях до файлу VHD цього розподілу WSL зберігається в параметрі Базовий Гілки реєстру HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ lxss \ uuid
.
Ви можете зупинити WSL, перемістити ext4.VHDX на інший диск і змініть шлях до каталогу в реєстрі. Але цей сценарій не рекомендується!
У сучасних будівлях Windows 10 та 11 ви можете виконати правильну передачу середовища WSL за допомогою побудованої процедури експорту та імпорту.
Запустіть WSL та перевірте ім'я користувача:
WSL
Хто я
У нашому прикладі це Синопи.
Закрийте всі програми, запущені в консолі Linux та WSL:
Wsl -shutdown
Щоб створити резервну копію (експортувати) своє середовище WSL та розмістити його на окремому Disc E:, виконайте команди:
Mkdir e: \ резервне копіювання
WSL-Export Ubuntu-20.04 E: \ Backup \ Ubuntu.Дьогте
Зачекайте кінців експорту WSL (може зайняти довго). У цільовому каталозі з’явиться архів TAR з вашим середовищем WSL.
Тепер ви можете видалити екологічні файли WSL на вихідному диску:
WSL-Unregister Ubuntu-20.04
Створіть каталог для вашого зображення Linux на новому диску та імпортуйте архів дьогтю в команді WSL:Mkdir e: \ wsl
WSL -IMPORT Ubuntu-20.04 E: \ wsl \ e: \ backup \ ubuntu.Дьогте
Корінь використовується для введення Ubuntu за замовчуванням. Щоб змінити його на інше ім'я користувача (ми отримали його раніше), виконайте:
CD $ env: userprofile \ appdata \ local \ microsoft \ windowsapps
.\ Ubuntu2004.Sysops exe config-default-user
Запустіть своє середовище WSL:
Wsl -d ubuntu -20.04

Цей же сценарій можна використовувати для перенесення налаштованого зображення WSL на інші комп’ютери.
Ви також можете використовувати третю партію утиліту для перенесення WSL на WSL на WSL Lxrunoffline (Доступно на Github - https: // github.Com/ddosolatient/lxrunoffline). Ви можете встановити утиліту через Chocolatey:
Set -ExecutionPolicy BYPass -cope Process -force; [Система.Сітка.ServicePointManager] :: SecurityProtocol = [Система.Сітка.ServicePointManager] :: SecurityProtocol -бор 3072; Iex ((нова об'єктна система.Сітка.WebClient).DownloadString ('https: // спільнота.Шоколадний.Org/встановити.PS1 '))
Choco встановити lxrunoffline
Принесіть список доступних зображень WSL:
Список LxRunoffline
Ми закінчуємо всі процеси:
Wsl -shutdown
Дізнайтеся поточний каталог, в якому зберігається зображення WSL:
Lxrunoffline get-dir -n ubuntu-20.04
Передача WSL на інший диск:
LxRunoffline Move -n Ubuntu -20.04 -d d: \ wsl2 \ ubuntu -20.04
Після закінчення передачі запустіть розподіл WSL. Команда:
Wsl -d ubuntu -20.04
або
Lxrunoffline run -n ubuntu -20.04 -w