Windows 10 v1903 包含了一个内置的WSL导出/导入命令。具体来说,wsl --export
会生成一个tar
文件,而wsl --import
则用于导入之前导出的tar
文件。您可以将此文件在不同计算机之间移动。
您还可以使用-
来指定标准输入/输出,这样您就可以直接传输到另一台计算机,并使用类似ssh
的远程shell进行导入。
有很多方法,但其中一种常见做法是使用 tar 创建要备份的文件的存档(以便在重新创建环境时重新安装所有内容)。编写一个简单的 backup.sh
脚本可以更轻松地按照定期计划进行反复备份。
大部分配置都存储在 Linux 的 .___ 配置文件中,通常位于您的 ~/ 文件夹中。您可能还希望备份您的 /etc/ssh/ssh_config
和其他类似的系统配置文件,不过请小心处理包含特定实例密钥/数据等的复杂配置文件。
您可以使用 dpkg-query -f '${binary:Package}\n' -W
生成您的 apt 包列表,并将其输出到一个文件中,该文件也可以进行备份。
/mnt/c/backups
),然后可以将它复制到OneDrive、DropBox、外部硬盘驱动器、FTP或其他地方。
2020-02-18更新:
在Windows 10 1903中,我们提供了一个更新的wsl.exe
工具,它包括将发行版的内容导出/导入到外部存档的功能,极大地简化了备份和/或在计算机之间移动发行版的过程!
希望对你有所帮助。
创建备份
根据问题报告,您可以使用WSL中的tar
命令来创建备份。请注意,在复制过程中需要忽略一些文件夹(例如/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 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 发行版。
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
wsl --import
还可以导入tar.gz
文件。这些命令在内部启动%SystemRoot%\System32\lxss\tools\bsdtar
ELF64 二进制文件。 - Biswapriyowsl --export
可能比你想象的要花更长时间。在我的机器上,它大约花费了10分钟只写了几兆字节,然后最终生成了一个3.2GB的tar文件。 - scrusswsl --export distro-name file-name.tar
,用于导出发行版名称。要获取发行版名称,请使用命令wsl --list -v
。 - bunciswsl --export <distro> ..\wsl_backup.tar
,而不能依赖默认文件名。真是愚蠢透顶。 - bloody