Answers:
有多种方法,但一种常见的做法是使用tar创建要备份的文件的存档(以便在重新创建环境时重新安装所有内容)。编写简单的backup.sh
脚本应该可以更轻松地按计划定期重复备份。
您的大多数配置都存储在Linux .___配置文件中,通常位于〜/文件夹中。您可能还想备份您的/etc/ssh/ssh_config
和其他类似的系统配置文件,尽管使用包含特定于实例的键/数据/等的复杂配置文件时要格外小心。
你可以生成你的apt软件包列表使用dpkg-query -f '${binary:Package}\n' -W
并能呼应成一个文件,你也可以备份。
然后,您可以将这些tar归档文件复制到另一个位置。我们建议复制到Windows可访问的文件夹(例如/mnt/c/backups
),您可以从中将其复制到OneDrive,DropBox,外部HDD,FTP在其他位置等。
HTH。
Windows 10 v1903 包含内置的WSL导出/导入命令。具体来说,wsl --export
会产生tar
和wsl --import
,并会导入先前导出的tar
。然后,您可以在计算机之间移动此文件。
您还可以使用指定stdin / stdout -
,这应允许您直接转移到另一台计算机并使用远程shell(如)导入ssh
。
wsl --import
也可以导入tar.gz
文件。这些命令在内部启动%SystemRoot%\System32\lxss\tools\bsdtar
ELF64二进制文件。
wsl --export
可能花费比您预期更长的时间。在我的机器上,它只写了几兆字节就呆了大约10分钟,然后最终写出了3.2 GB的tar文件。
要备份和还原完整的WSL linux发行版,您可以尝试(1).tar.gz
使用文件系统创建一个,并且(2)使用Internet上提供的一些安装程序工具还原副本:
.tar.gz
文件安装发行版。rootfs.tar.gz
。创建备份
根据问题报告,您可以使用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,您可以使用Windows命令行在WSL中将生成的tar安装为新发行版。
# 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还原
有很多基于Microsoft示例的 linux发行版启动器。我认为您可以尝试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的回答很完美,但是/tmp
当使用launcher.exe安装tar球时,无论如何都不会重新创建该文件夹(我特别是在谈论将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
%USERPROFILE%/AppData/Local/lxss
。你有尝试过吗?