Как перенести файловую систему WSL на другой диск или в другую папку
Подсистема Windows для Linux (WSL) представляет собой виртуальную машину с собственной файловой системой. Чем больше вы устанавливаете Linux приложений и программ, тем больше места они занимают места на системном диске на который установлена операционная система Windows. Иногда требуется файлы виртуальной машины WSL на другой диск чтоб освободить место на системном диске или иметь возможность получить к ним доступ после того как информация на системном диске будет удалена.
Универсальный способ переноса файловой системы WSL
Самым универсальным способом перенос WSL файловой системой для нужного дистрибьютива Linux, это удаление его на системном диске и восстановлении, в папке нужного диска. Главный его плюс это работоспособность во всех версиях WSL. Для этого :
1. Запускаем командную строку. Для этого нажимаем сочетание быстрых клавиш «Win + R». В строку открывшегося окна вводим «cmd» и нажимаем кнопку «OK».
2. В командную строку вводим команду
wsl −−shutdown
Таким образом мы останавливаем работу всех запущенных виртуальных машин WSL, чтоб не возникло ошибки при создании резервной копии файловой системы.
3. В командную строку вводим команду
wsl −−export «distribution» «file»
где «distribution» это название дистрибьютива Linux, а «file» путь и название к файлу с архива файловой системы.
Например:
wsl −−export Ubuntu c:\backup\ubuntu.tar
Создаем копию файловой системы «Ubuntu» которая будет сохранена в файл «c:\backup\ubuntu.tar». Обратите внимание папка «backup» должна существовать, чтоб не было ошибки выполнения команды.
4. В командную строку вводим команду
wsl −−unregister «distribution»
где «distribution» название дистрибьютива Linux, который удаляется.
Например:
wsl −−unregister Ubuntu
Удаляем «Ubuntu».
5. В командную строку вводим команду
wsl −−import «distribution» «location» «file»
где «distribution» название дистрибьютива Linux, «location» папка в которой будет находиться файловая система, а «file» файл с архивом файловой системы.
Например:
wsl −−import Ubuntu d:\WSL c:\backup\ubuntu.tar
Восстанавливаем файловую систему «Ubuntu» в папку «d:\WSL» и из архивной копии сохраненной в файле «c:\backup\ubuntu.tar».
Перенос файловой системы WSL2
Начиная с подсистемы среды WSL 2.3.11 добавлен более удобный способ перенос файловой системы дистрибьютива Linux на другой диск. Для этого:
1. Запускаем командную строку. Для этого жмем сочетания «Win + R». В открывшемся окне вводим «cmd» и нажимаем клавишу ввод.
2. Вводим в командную строку
wsl −−version
Проверяем чтоб WSL был WSL 2.3.11 или более новой версии.
3. Вводим в командную строку
wsl −−manage «distribution» −−move «location»
где «distribution» название дистрибьютива Linux, а «location» папка в которую нужно перенести файловую систему WSL.
Например:
wsl −−manage Ubuntu −−move d:\wsl
Переносим файловую систему «Ubuntu» в папку «d:\wsl».
Альтернативные способы файловой системы WSL
При острой необходимости файловую систему Linux можно перенести на другой диск или в другую папку не используя возможности средствами WSL. Но делать это не рекомендуется.
Как узнать в какой папке находиться WSL
Основная проблема Linux установленного в WSL, в том что нет стандартной папки используемой по умолчанию, где хранятся файлы виртуальной машины. Они различаются от одного дистрибьютива Linux к другому. Поэтому прежде всего нам необходимо узнать папку где находится Linux установленного через WSL. Для этого:
1. Запускаем редактор реестра. Для этого нажимаем сочетание клавиш «Win + R». В строку открывшегося окна «cmd» и нажимаем кнопку «ОК».
2. Переходим в раздел реестра
HKCU\Software\Microsoft\Windows\CurrentVersion\Lxss\
Быстрей всего это сделать скопировав путь целиком и вставить в адресную строку под главным меню.
3. Каждый раздел реестра с уникальным индикатором «UUID» (это случайный долинный набор букв и цифр) дистрибьютивов Linux установленных на компьютер. В каждом разделе есть параметр «DistributionName» в котором указано название дистрибьютива Linux, а в «BasePath» указан путь к файловой системе.
Перенос файловой системы WSL редактированием реестра
Файловую систему WSL можно перенести на новое место, в реестре указать её местонахождение, отредактировав параметр «BasePath».
1. Копируем файловую систему WSL на нужный диск в нужную папку. Например все файлы из папки «C:\Users\ubara\AppData\Local\wsl\{3b72be29-2cee-4eed-b39a-874fd22df3a5}» в папку «D:\WSL». После чего папку «C:\Users\ubara\AppData\Local\wsl\{3b72be29-2cee-4eed-b39a-874fd22df3a5}» можно удалить.
2. Запускаем редактор реестра. Для этого нажимаем сочетание клавиш «Win + R». В строку открывшегося окна «cmd» и нажимаем кнопку «ОК».
3. Переходим в раздел реестра
HKCU\Software\Microsoft\Windows\CurrentVersion\Lxss\
4. Открываем раздел с нужным для нас дистрибьютивов Linux. Например это может быть «{3b72be29-2cee-4eed-b39a-874fd22df3a5}»
5. Редактируем парламент реестра «BasePath» куда вводим полный к папке в которую скопировали файловую систему WSL. Например вместо «C:\Users\ubara\AppData\Local\wsl\{3b72be29-2cee-4eed-b39a-874fd22df3a5}» и вводим «D:\WSL».
6. Закрываем реестр.
7. Перезагружаем компьютер чтоб изменения вступили в силу.
Перенос файловой системы WSL создаем символической ссылки
Создаем папку которая ссылается на файлы находящиеся на другом диске.
1. Переносим файловую систему WSL на нужный диск в нужную папку. Например из папки «C:\Users\ubara\AppData\Local\wsl\{3b72be29-2cee-4eed-b39a-874fd22df3a5}» копируем все файлы в папку «D:\WSL».
2. Удаляем папку «C:\Users\ubara\AppData\Local\wsl\{3b72be29-2cee-4eed-b39a-874fd22df3a5}».
3. Открываем командную строку от имени администратора. Для этого зажимаем сочетание клавиш «Win +R», в строку открывшегося окна вводим «cmd». Зажав клавиши «Ctrl + Shift», жмем на кнопку «ОК».
4. В командную строку вводи вводим
mklink /d «LinkToFolder» «OriginalFolder»
где «LinkToFolder» полный путь к ссылке на папку, а «OriginalFolder» это путь к папку на которую будет сделана символическая ссылка.
Например:
mklink / d “C:\Users\ubara\AppData\Local\wsl\{3b72be29-2cee-4eed-b39a-874fd22df3a5}” “D:\WSL”
Создаем символическую ссылку «C:\Users\ubara\AppData\Local\wsl\{3b72be29-2cee-4eed-b39a-874fd22df3a5}» на папку «D:\WSL», в которую была скопирована файловая система WSL.