不再使用 WSL/Bash 访问已挂载容器中的文件和文件夹?

不再使用 WSL/Bash 访问已挂载容器中的文件和文件夹?

Windows 10 内部版本 16299

GNU Bash 版本 4.3.11

VeraCrypt 1.19

以前,我机器的 H: 上安装了一个加密容器,我可以使用资源管理器窗口和 cmd 行(例如 user@host:/mnt/h/[folders and files])访问它,没有问题。

但是,我最近创建了一个新的加密容器并将其安装到 R: 驱动器,现在我无法访问任何一个驱动器目录从命令行。

从命令行终端使用 WSL bash:

  • cd /mnt/c 显示我的所有 C: 文件夹和完整文件目录
  • cd /mnt/h 会带我到 H:,但 [ ls -l ] 显示下面总共有 0 个文件——应该有 6 个文件夹和 1 个文件
  • cd /mnt/r 将我带到 R:,但显示总共有 0 个文件 - 应该有 7 个文件夹和 5 个文件

两个驱动器都是 FAT32 格式,我知道问题是只有 NTFS 驱动器在 WSL 中可以工作;但是以前当我只安装了单个 H: 时,这是可以正常工作的,没有问题,现在我不知道如何从命令行访问文件夹/文件?

mnt 选项的图片

再次,我曾经能够使用以下命令访问,读取,写入文件

‘cat /mnt/h/dir1/technology/folder1/sub-folder2’

没问题。

答案1

对于那些遇到过此问题并且没有发现只读标志是问题的人来说,我偶然发现了另一种解决方法。

就我的情况而言,在 WSL2 上挂载 veracrypt 时,WSL 实际上并没有挂载文件系统。当我在命令中没有看到条目时,我意识到了这一点mount。您可以通过以下方式挂载它:

sudo mkdir -p /mnt/a
sudo mount -t drvfs A: /mnt/a

这假设您已在 Windows 上的 A: 处安装了 veracrypt 容器。

我将其添加到我的 .bashrc 中,从此再没有出现任何问题:

# Mount Encrypted Containers
count=$(sudo mount | grep "/mnt/a" | wc -l)
if [ $count -ne 0 ]
then
     echo "/mnt/a is allready mounted."
else
     echo "Mounting /mnt/a..."
     sudo mkdir -p /mnt/a
     sudo mount -t drvfs A: /mnt/a
fi

该条件可防止 drvfs 多次在其自身之上安装文件系统。

答案2

哇 - 所以我将 SSD 上加密文件的属性更改为“只读”,以防止无意中删除容器......

当 VeraCrypt 挂载容器时,它保留了“只读”属性。令人惊讶的是,这也意味着我无法读取或列出 wsl/bash 终端中的任何文件夹/文件……

我取消选中 Windows 属性对话框中的“只读”值,重新安装了驱动器,并且它可以正常工作。

相关内容