微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何访问从 Windows 传输到 WSL-2 Ubuntu 的文件?

如何解决如何访问从 Windows 传输到 WSL-2 Ubuntu 的文件?

我的 Windows 机器上安装了 Linux 子系统。我已经通过找到子系统的位置并将文件拖过来传输了一个我想访问的 tar.gz 文件。但是当我运行命令时:

tar -zxvf file_name.tar.gz

我收到错误

tar (child): vmd-1.9.4a51.bin.LINUXAMD64-CUDA102-Optix650-OSPRay185.opengl.tar.gz: Cannot open: Permission denied
tar (child): Error is not recoverable: exiting Now
tar: Child returned status 2
tar: Error is not recoverable: exiting Now

我认为权限被拒绝与从 Windows 传输有关,因为我也无法访问通过 Windows 创建的目录。那么,是否需要更改某些内容才能访问这些文件

(PS。我知道除了从 Windows 传输之外,还有其他获取 tar.gz 文件方法,但我也需要对其他文件夹执行此操作,我只包含文件类型以防万一。)

编辑:您不应该尝试将文件拖过。请参阅下面的答案。

解决方法

对于初学者来说,这属于 Super User,因为它不直接处理编程问题。但由于您已经在此处提供了一个可能有点危险的答案(甚至在您的问题中),我不想让其他人无意中找到这个答案。

如果您使用了该链接中的第一种方法,则您使用的是 WSL1 实例,而不是 WSL2。只有 WSL1 以这种方式使文件系统可用。这是一个really,really bad idea

Windows 上的 WSL 有一个硬性规定:

在任何情况下,请勿使用 Windows 应用、工具、脚本、控制台等访问、创建和/或修改 %LOCALAPPDATA% 文件夹内的 Linux 文件。

使用某些 Windows 工具打开文件可能会对打开的文件和/或文件夹进行读锁定,从而阻止更新文件内容和/或元数据,从而导致文件/文件夹损坏。

我猜您可能已经完成了 WSL2 的安装过程,但是您在设置 wsl --set-default-version 2 或类似的东西之前安装了您的发行版。

正如您在上面的 Microsoft 链接中所见,现在有一种在 Windows 和 WSL 之间传输和编辑文件的安全方法 - \\wsl$\ tmpfs 挂载。请注意,作为存储在内存中的 tmpfs 挂载,它实际上更多地用于传输文件。当您重新启动或关闭 WSL 时,它们将消失。

但即使您使用了该文章中的第二种方法 (/mnt/c),您也可能会遇到权限问题。如果这样做,解决方案应该是按照我描述的 here 使用 uid/gid 重新挂载 C: 驱动器。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。