Zai*_*ida 6 linux shared-folders ubuntu windows-10 windows-subsystem-for-linux
今天我发现我的计算机 (Windows 10) 上安装了两个 WSL:一个用于 Ubuntu 18.01(将称为 WSL 18.01),另一个用于 Ubuntu 20.04 (WSL 20.04)。WSL 18.04 是我迄今为止唯一使用过的版本,但我想将来尝试 Ubuntu 20。两者都是 wsl-1\n在命令提示符中:
\nC:\\Users\\Zaida>wsl -l -v\n NAME STATE VERSION\n* Ubuntu-18.04 Running 1\n Ubuntu Running 1\n
Run Code Online (Sandbox Code Playgroud)\n我想将主文件夹从 WSL 18.04 复制到 WSL 20.04,但我不知道该怎么做。我尝试按照这篇文章进行操作:/sf/ask/4607050801/ Between- Different-wsl2-instances/65838203#65838203 \n并在 WSL 18.04 中创建了文件夹 /mnt/wsl/share ,进行了更改授予每个拥有并复制我的家庭文件的人的权限sudo chmod ugo+rwx share
。
但是,当我打开另一个终端(WSL 20.04)时,/mnt/wsl 不存在。我在那里创建了它,但关闭并打开它后,它仍然是空的,而在 WSL 18.04 中,它包含我复制的主文件夹文件。
\n我还需要做什么才能在两个 WSL 之间共享该文件夹?
\n请注意,该文件夹还托管我 PC 上 4 个硬盘驱动器的安装点。我不知道这是否会影响它在其他 WSL 中不显示的原因:
\n内容\\mnt
:
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 a\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 $RECYCLE.BIN\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 System Volume Information\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 b\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 $RECYCLE.BIN\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Program Files\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 System Volume Information\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 WindowsApps\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 c\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 $Recycle.Bin\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Documents and Settings -> /mnt/c/Users\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Program Files (x86)\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 System Volume Information\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Users\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Windows\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 temp\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 d\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 $RECYCLE.BIN\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 System Volume Information\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 wsl <------------------- POTENTIAL SHARED FOLDER ACROSS WSLs\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 share\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 .bash_aliases\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 .bash_history\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 .bash_logout\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 .bashrc\n
Run Code Online (Sandbox Code Playgroud)\n非常感谢您提供任何信息,如果您需要任何其他详细信息,请告诉我。
\n不幸的是,/mnt/wsl
共享文件夹仅适用于 WSL2 发行版。由于您使用的是 WSL1,因此这对您来说不是一个可用的选项。这绝对是使用 WSL2 时的最佳选择。
对于您的情况,有两个 WSL1 发行版,我可以提供多种选项,但有一个“建议”:
第一,推荐。使用wsl
类似命令ssh
将文件从一个发行版传送到另一个发行版。如果您从未见过这种技术,它可能会非常令人困惑(但最终会很有启发)。它非常快速和简单,因为它是单行的,但很难掌握并做到恰到好处。
从 Ubuntu 18.04 开始:
cd ~
sudo tar -cvf - . | wsl.exe -u root -d Ubuntu -e tar -C /home/$USER -xvf -
Run Code Online (Sandbox Code Playgroud)
请注意,我已经在我的系统上使用两个发行版测试了该命令。我在命令行中更改的唯一单词是我的testtest
发行版到您的Ubuntu
发行版。
细分一下,它:
创建 ( tar -c
) 当前目录中所有文件的“存档”,但不将它们放入驱动器上的“文件”中。相反,tar -f -
(末尾带有特殊连字符)意味着它在标准输出上输出存档。
将标准输出通过管道传输到wsl.exe
命令,然后我们使用该命令来指定(使用wsl.exe -d Ubuntu
)我们希望它处理其他发行版。
tar
在其他发行版中运行命令以在其标准输入上“接收”管道 tarball。
用于tar -C /home/$USER
在解压文件之前更改到“Ubuntu”中的主目录。
使用-xvf -
(extract, verbose, "file", "from standard input") 将文件提取到该目录中。
我们在两端以 root 身份执行此操作,以保留所有权和权限,即使您的用户没有特定文件的完整权限。
sudo
在 Ubuntu 18.04 端用于 root 访问,但wsl -u root
在接收端,这样我们就不需要在那里输入密码。
tar
您可以通过仅将主目录的内容复制到 Windows 驱动器之一来简化这一过程(以使用磁盘空间为代价) 。所有这些 Windows 驱动器都将在两个发行版中提供。然后您可以切换到其他发行版并tar x
(提取)它。
您还可以简单地使用 Windows 文件资源管理器导航到\\wsl$\
目录并在发行版之间复制文件,但这可能会失去一些 Linux 所有权/权限。
在 Windows 10 下,每个发行版都需要运行。看来(也许从今天的更新开始)Windows 11 现在将显示所有发行版并根据需要自动启动它们。
导航到要复制的主文件夹,选择所有文件,然后将它们粘贴到其他发行版上的主目录中。
还可以将其中一个发行版设置为 SSH 服务器,并使用scp
、sftp
、rsync
、 管道(就像我们上面所做的那样)等传输文件。实际上,为 WSL1 会话设置 SSH 比为 WSL2 更容易。
我还没有这样做,但我认为也可以rsync
通过wsl
命令来归档。
还:
请注意,该文件夹还托管我 PC 上 4 个硬盘驱动器的安装点。我不知道这是否会影响它为什么没有在其他 WSL 中显示:
并不真地。/mnt/<drive_letter>
为了方便起见,WSL 在启动时会自动挂载所有 Windows 驱动器。它不会影响通过/mnt
. 这只是 WSL1 的更多限制。
归档时间: |
|
查看次数: |
10756 次 |
最近记录: |