在不同的 WSL2 实例之间移动文件?
Moving files between different WSL2 instances?
如果可能,如何将文件从一个 WSL 实例直接移动到另一个实例?这在尝试新的发行版时很有用,例如用于将 /home 从 Ubuntu 18.04 复制到 20.04.
我厌倦了通过资源管理器访问 ,它似乎不能可靠地传输所有文件,总体感觉不对。
如何在不同的 WSL 实例之间共享数据
1。创建不包含在任何 WSL 实例中的共享目录
mkdir /mnt/wsl/share
这将创建 /mnt/wsl/share
在所有 WLS 实例之间共享但不包含在任何 WSL 实例中的目录。
您可以通过此共享目录共享数据。
但是WSL实例之间仍然无法直接copy/paste数据
(注意重启时共享目录会自动删除。)
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
2。在Ubuntu-B中打开~/.profile
并添加以下代码。
# 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/
,对Ubuntu-B 启动 WSL 时。
https://jinsuxpark.blogspot.com/2021/01/how-to-share-data-between-different-wsl-instances-eng.html
关于第 2 项,我将以下内容放入我的 ~/.profile(严格来说是我的 .bash_profile)。
if [[ -n "${WSL_DISTRO_NAME}" ]]; then
if [[ -d "/mnt/wsl/${WSL_DISTRO_NAME}" ]]; then
ls "/mnt/wsl/${WSL_DISTRO_NAME}"
else
mkdir "/mnt/wsl/${WSL_DISTRO_NAME}"
# note the terminating / on the directory name below!
wsl.exe -d ${WSL_DISTRO_NAME} -u root mount --bind / "/mnt/wsl/${WSL_DISTRO_NAME}/"
fi
fi
结果是我启动的每个发行版的根目录都安装了“明显”的名称。
如果可能,如何将文件从一个 WSL 实例直接移动到另一个实例?这在尝试新的发行版时很有用,例如用于将 /home 从 Ubuntu 18.04 复制到 20.04.
我厌倦了通过资源管理器访问
如何在不同的 WSL 实例之间共享数据
1。创建不包含在任何 WSL 实例中的共享目录
mkdir /mnt/wsl/share
这将创建 /mnt/wsl/share
在所有 WLS 实例之间共享但不包含在任何 WSL 实例中的目录。
您可以通过此共享目录共享数据。
但是WSL实例之间仍然无法直接copy/paste数据
(注意重启时共享目录会自动删除。)
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
2。在Ubuntu-B中打开~/.profile
并添加以下代码。
# 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/
,对Ubuntu-B 启动 WSL 时。
https://jinsuxpark.blogspot.com/2021/01/how-to-share-data-between-different-wsl-instances-eng.html
关于第 2 项,我将以下内容放入我的 ~/.profile(严格来说是我的 .bash_profile)。
if [[ -n "${WSL_DISTRO_NAME}" ]]; then
if [[ -d "/mnt/wsl/${WSL_DISTRO_NAME}" ]]; then
ls "/mnt/wsl/${WSL_DISTRO_NAME}"
else
mkdir "/mnt/wsl/${WSL_DISTRO_NAME}"
# note the terminating / on the directory name below!
wsl.exe -d ${WSL_DISTRO_NAME} -u root mount --bind / "/mnt/wsl/${WSL_DISTRO_NAME}/"
fi
fi
结果是我启动的每个发行版的根目录都安装了“明显”的名称。