【问题标题】:How can I get access to files transferred from Windows to WSL-2 Ubuntu?如何访问从 Windows 传输到 WSL-2 Ubuntu 的文件?
【发布时间】:2021-02-20 23:49:54
【问题描述】:

我的 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 文件的方法,但我也需要对其他文件夹执行此操作,我只包括文件类型以防万一。)

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

【问题讨论】:

    标签: file windows-subsystem-for-linux tar file-transfer wsl-2


    【解决方案1】:

    对于初学者来说,这属于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),您也可能会遇到权限问题。如果这样做,解决方案应该是使用您的 uid/gid 重新安装 C: 驱动器,正如我所描述的 here

    【讨论】:

    • 感谢您向我展示了正确的论坛并做出了回应,因此其他人不会尝试我所做的事情。我已经删除了以这种方式访问​​子系统的答案和具体参考。我现在将尝试您的解决方案!
    猜你喜欢
    • 2017-05-21
    • 1970-01-01
    • 1970-01-01
    • 2016-12-19
    • 1970-01-01
    • 2021-03-24
    • 2019-02-13
    • 2020-09-08
    • 1970-01-01
    相关资源
    最近更新 更多