Как сделать резервную копию (WSL) Linux Subsystem для Windows 10, перед перезагрузкой или переустановкой системы?

24

Моя проблема в том, что мне приходится переустанавливать или переустанавливать Windows из-за некоторых проблем, но я потратил много времени на настройку WSL для разработки и не хочу его терять.

Есть ли способ резервного копирования всего WSL с его настройками и установленными модулями, плагинами, пользователями и т. Д. И восстановления его после сброса или переустановки Windows? Я много искал эту тему, но не смог найти никакой полезной информации.

Иначе, если нет способа сделать резервную копию, сброс Windows 10 полностью удалит WSL?

emipac
источник
Я думаю, это так же просто, как резервное копирование %USERPROFILE%/AppData/Local/lxss. Вы пробовали это?
Ramhound
Да, я пытался, но он работает только частично с большим количеством ошибок.
emipac

Ответы:

15

Как сделать резервную копию?

Существует множество способов, но одной из распространенных практик является использование tar для создания архива файлов, которые вы хотите сделать резервную копию (для того, чтобы переустановить все, когда вы воссоздаете свою среду). Написание простого backup.shсценария должно упростить многократное резервное копирование на регулярной основе.

Что делать бекап?

Большая часть вашей конфигурации хранится в конфигурационных файлах Linux .___, часто в вашей папке ~ /. Вы также можете сделать резервную копию ваших /etc/ssh/ssh_configи других аналогичных файлов конфигурации системы, хотя будьте осторожны со сложными файлами конфигурации, которые содержат специфичные для экземпляра ключи / данные / и т. Д.

Вы можете сгенерировать свой список пакетов apt, используя dpkg-query -f '${binary:Package}\n' -Wфайл, который вы также можете сделать резервную копию.

Где сделать резервную копию?

Затем вы можете скопировать эти архивы tar в другое место. Мы рекомендуем копировать в доступную для Windows папку (например /mnt/c/backups), из которой вы можете скопировать ее в OneDrive, DropBox, внешний жесткий диск, FTP в другое место и т. Д.

НТН.

Ричард Тернер
источник
22

Windows 10 v1903 включает в себя встроенную команду экспорта / импорта WSL . В частности, wsl --exportкоторый производит tarи wsl --import, который импортирует ранее экспортированный tar. Затем вы можете переместить этот файл между компьютерами.

Вы также можете указать stdin / stdout с помощью -, что позволит вам напрямую переносить на другой компьютер и импортировать с использованием удаленной оболочки, например ssh.

боб
источник
wsl --importтакже можно импортировать tar.gzфайлы. Эти команды запускают %SystemRoot%\System32\lxss\tools\bsdtarдвоичный файл ELF64.
Biswapriyo
anecdata, чтобы помочь людям с нервным расстройством: wsl --exportможет занять больше времени, чем вы ожидаете. На моей машине он сидел примерно 10 минут, записав всего несколько мегабайт, а затем, наконец, записал 3,2 ГБ tar-файл.
scruss
2

Для резервного копирования и восстановления полного дистрибутива WSL linux вы можете попытаться (1) создать .tar.gzфайл с вашей файловой системой и (2) восстановить копию с помощью некоторых инструментов установщика, доступных в Интернете:

  • LxRunOffline имеет опции для дублирования и установки пользовательских дистрибутивов Linux. Вы можете установить дистрибутив из .tar.gzфайла.
  • WSL-DistroLauncher позволяет установить дистрибутив изrootfs.tar.gz .
  • WSLInstall , еще один установщик Linux для WSL.

Создание резервной копии

На основании отчета о проблеме вы можете создать резервную копию, используя tarв WSL. Обратите внимание, что вы должны игнорировать некоторые папки (например, / mnt) в копии.

# cd /
# tar vzcpf /mnt/c/tmp/ubuntu_`date +%Y%m%d_%H`.tar.gz --exclude=/proc --exclude=/dev --exclude=/mnt --exclude=/media --exclude=/lost+found  --exclude=/tmp --exclude=/sys  --exclude=/run / > /mnt/c/tmp/ubuntu_`date +%Y%m%d_%H`.log 2> /mnt/c/tmp/ubuntu_`date +%Y%m%d_%H`.error

Вы должны создать или переместить позже файл резервной копии в допустимую /mnt/cподпапку. В этом примере файлы создаются в /mnt/c/tmp.


Восстановление с помощью lxRunOffline

Используя lxRunOffline , вы можете установить получившийся tar как новый дистрибутив в WSL, используя командную строку Windows.

# lxrunoffline install -n <distro name> -d <installation folder> -f <file>
C:\wsl> lxrunoffline install -n mybackup -d c:\wsl\mybackup -f c:\tmp\ubuntu_20180729_00.tar.gz

Для запуска резервного копирования вы можете использовать тот же lxRunOffline

# lxrunoffline run -n <distro name> -w
C:\wsl> lxrunoffline run -n mybackup  -w

Восстановление с помощью DistroLauncher

Есть много программ запуска для дистрибутивов Linux, основанных на примере Microsoft . Я думаю, что вы можете попробовать версию Yuk7 .

Вы должны скачать дистрибутив и файл launcher.exe. Чтобы использовать тот же самый файл дистрибутива, который упоминался выше, вы должны переименовать файл резервной копии rootfs.tar.gzи лаунчер в нужное имя дистрибутива. Позже вы должны запустить лаунчер от имени администратора (я получил ошибки при запуске его как обычный пользователь)

c:\wsl> ren launcher.exe mybackup.exe
c:\wsl> ren .\ubuntu_20180729_00.tar.gz rootfs.tar.gz
c:\wsl> .\mybackup.exe

При первом запуске программы запуска она устанавливает и запускает дистрибутив. В следующий раз он запустит дистрибутив Linux.

Jaime
источник
Спасибо! - Запуск wsdl в Yuk7 продолжал давать сбой при запуске, и я не увидел проблему lxRunOffline. Это было единственное место, где я обнаружил правильную команду tar, которая исправила мою проблему с wsldl.
AndrewD
0

Хотя ответ Хайме идеален, /tmpпапка почему-то не воссоздается, когда для установки tar-шара используется launcher.exe (я специально говорю о переносе установки WSL с одной машины на другую).

Поэтому нужно создавать /tmpи назначать необходимые права.

Один подход, который работал для меня:

https://www.cyberciti.biz/faq/mysqld-innodb-error-unable-to-create-temporary-file/

# chown root:root /tmp
# chmod 1777 /tmp
## test it ##
# /etc/init.d/mysqld start
Раджеш Тампи
источник