Windows subsystem for linux 在不同的WSL2实例之间移动文件?

Windows subsystem for linux 在不同的WSL2实例之间移动文件?,windows-subsystem-for-linux,wsl-2,Windows Subsystem For Linux,Wsl 2,如果可能,如何将文件从一个WSL实例直接移动到另一个WSL实例?这在尝试新发行版时非常有用,例如从Ubuntu18.04复制到20.04 我厌倦了通过资源管理器访问,因为它似乎无法可靠地传输所有文件,总体上感觉是错误的。如何在不同的WSL实例之间共享数据 1.创建不包含在任何WSL实例中的共享目录 这将创建跨所有WLS实例共享但不包括在任何wsl实例中的/mnt/wsl/share目录 您可以通过此共享目录共享数据 但是,仍然无法在WSL实例之间直接复制/粘贴数据 (请注意,重新启动时会自动删除

如果可能,如何将文件从一个WSL实例直接移动到另一个WSL实例?这在尝试新发行版时非常有用,例如从Ubuntu18.04复制到20.04

我厌倦了通过资源管理器访问,因为它似乎无法可靠地传输所有文件,总体上感觉是错误的。

如何在不同的WSL实例之间共享数据 1.创建不包含在任何WSL实例中的共享目录 这将创建跨所有WLS实例共享但不包括在任何wsl实例中的
/mnt/wsl/share
目录

您可以通过此共享目录共享数据

但是,仍然无法在WSL实例之间直接复制/粘贴数据

(请注意,重新启动时会自动删除共享目录。)

2.创建WSL实例中包含的共享目录 通过使用绑定装载,可以使WSL实例中的现有目录在其他WSL实例之间共享

例如,您有两个WSL实例,Ubuntu-A和Ubuntu-B

1。在Ubuntu-A中打开
~/.profile
,并添加以下代码。

# bind mount shared directory
if [ ! -d /mnt/wsl/share-a ]; then
  mkdir /mnt/wsl/share-a
  wsl.exe -d Ubuntu-A -u root mount --bind / /mnt/wsl/share-a/
fi
# bind mount shared directory
if [ ! -d /mnt/wsl/share-b ]; then
  mkdir /mnt/wsl/share-b
  wsl.exe -d Ubuntu-B -u root mount --bind / /mnt/wsl/share-b/
fi
2。在Ubuntu-B中打开
~/.profile
,并添加以下代码。

# bind mount shared directory
if [ ! -d /mnt/wsl/share-a ]; then
  mkdir /mnt/wsl/share-a
  wsl.exe -d Ubuntu-A -u root mount --bind / /mnt/wsl/share-a/
fi
# bind mount shared directory
if [ ! -d /mnt/wsl/share-b ]; then
  mkdir /mnt/wsl/share-b
  wsl.exe -d Ubuntu-B -u root mount --bind / /mnt/wsl/share-b/
fi
这将自动将Ubuntu-A的根目录(
/
)装载到
/mnt/wsl/shared-A/
,并在启动wsl时对Ubuntu-B执行相同的操作


似乎有一种方法:好的,正确的方法似乎是:最后一种方法(当前)仅在运行Windows Insider Preview(beta版)时可用。同时,您发布的第一条评论中的
mount--bind
思想也不是一个很好的解决方法。我认为海报每次都试图自动设置,这太复杂了。如果您只想在实例之间复制/移动,那么对其中一个实例执行
绑定--mount
/mnt/wsl
可能就足够了。但谁是“过于复杂”的评判者呢?我使用Ansible来设置我的新WSL实例;-)。