如何从我的 Windows Linux 子系统——Ubuntu 发行版访问我的 USB 驱动器?

如何从我的 Windows Linux 子系统——Ubuntu 发行版访问我的 USB 驱动器?

如何在 Windows Subsystem for Linux (WSL) 中访问系统的 USB 驱动器?我正在使用 Ubuntu 发行版。

答案1

这很简单:

  1. 创建挂载点:mkdir /mnt/g (添加您想要的任何单词或字母,我使用了与 Windows 驱动器匹配的字母。您可能需要使用sudo它在目录中创建目录/mnt。)

  2. 使用以下方式将驱动器安装到目录sudo mount -t drvfs G: /mnt/g

答案2

考虑一下目前接受的答案

sudo mkdir /mnt/<usb_drive_letter>
sudo mount -t drvfs <usb_drive_letter>: /mnt/<usb_drive_Letter> -o uid=$(id -u $USER),gid=$(id -g $USER),metadata

对于在 Windows 中分配给 的 USB 驱动器H:,例如:

sudo mkdir /mnt/h
sudo mount -t drvfs h: /mnt/h -o uid=$(id -u $USER),gid=$(id -g $USER),metadata

一般来说,接受的答案是可行的,但请注意,以这种方式手动安装的驱动器不遵循正常的 WSL 自动安装设置。

最多固定的Windows 驱动器将被安装:

  • /mnt/<drive_letter每个驱动器都有。
  • 以默认 WSL 用户及其主要组作为挂载的所有者。
  • 默认 umask/fmask/dmask 为 000
  • 为了提高性能而禁用metadata,这意味着仅使用“简化权限”模型来映射 Windows/NTFS 和 Linux 权限。

但是,手动安装的 USB 驱动器不遵循[automount]设置。

至少,您可能希望您的 WSL 用户成为所有者,这可以通过-o uid=$(id -u $USER),gid=$(id -g $USER)(通常,这与默认 Ubuntu/WSL 安装中的 -o uid=1000,gid=1000` 相同)完成。

metadata如果您想通过rsync或保留权限,添加该选项会很有用cp -a

答案3

NotTheDr01ds 的回答非常有用,尽管我认为这不是完整的答案。

任何人都可以随意编辑以下内容以获得更多清晰度和额外信息,以下是在我可以复制到带有附加存储设备的 WSL Distro 以运行备份之前的顺序任务列表。

Windows 10 主机:确保 SSH 服务处于活动状态

PowerShell(作为管理员)...

Start-Service sshd

# Note the real Windows 10 username (only require after the forward-slash)
[Security.Principal.WindowsIdentity]::GetCurrent().Name

源 Linux/macOS 主机:测试连接/使用 Windows 10 本地帐户密码登录

远程 Shell...

ssh [email protected]

Windows 10 主机:如果需要更新/重置本地帐户密码

PowerShell 或命令提示符...

# Use following in Command Prompt / PowerShell. Be aware this will require reboot and login with this password before Windows 10 PIN etc. will work again
net user Username PASSWORD_HERE

注意:rsync 不兼容

不同的 Ubuntu 发行版上的 rsync 二进制文件可能太低,这可能会导致最近的 rsync 开发不兼容导致意外错误

注意:Windows WSL 不支持 rsync 功能

  • 使用“--crtimes”将导致错误,例如.... rsync:服务器不支持--crtimes(-N)
  • 使用“--fileflags”将导致错误,例如.... rsync:在远程机器上:--fileflags:未知选项
  • 使用“--xattrs”将导致错误,例如.... rsync:[接收器] rsync_xal_set:lsetxattr(“/mnt/h/path/.filename.txt.AB1de”,“user.com.apple.macl”)失败:操作不受支持(95)

此外,Windows WSL rsync 不稳定,可能需要使用 -o 元数据安装的驱动器才能允许......

  • 使用 --perms
  • 使用 --times

Windows 10 主机:如果 rsync 不兼容

可能需要考虑使用 OpenSUSE Tumbleweed 的 rsync 3.2.7+ 包(在撰写本文时,Ubuntu 发行版尚未提供)。

电源外壳...

wsl --install --distribution openSUSE-Tumbleweed

WSL 发行版 Shell...

# Example
zypper install rsync

Windows 10 WSL 发行版:安装所需的驱动器

要将驱动器安装到 WSL OS(例如外部磁盘驱动器),请以管理员用户(例如用户 1000)的身份运行以下命令;请勿以 root(例如用户 0)的身份运行此命令

重新启动 Windows 时,这可能会将挂载选项重置为 noatime。

WSL 发行版 Shell...

sudo mkdir /mnt/h
sudo mount -t drvfs H:\\ /mnt/h -o rw,relatime,dirsync,metadata,uid=$(id -u $USER),gid=$(id -g $USER)
exit

然后,要使 rsync 开始工作,必须重新启动 WSL Distro。关闭 WSL 实例并重新启动该实例

电源外壳...

wsl --shutdown
wsl -d openSUSE-Tumbleweed

从源 Linux/macOS 主机:试运行测试

建立同步工作(使用 Windows 10 本地帐户密码)。

远程 shell...

/usr/local/bin/rsync \
--dry-run \
--rsync-path='wsl rsync' \
--recursive --perms --times --human-readable --itemize-changes --copy-links --progress \
--exclude '.DS_Store' \
/path/test \
[email protected]:/mnt/h/test

从源Linux/macOS主机,真实测试

建立同步工作以传输目录和文件(使用 Windows 10 本地帐户密码)。

远程 shell...

/usr/local/bin/rsync \
--rsync-path='wsl rsync' \
--recursive --perms --times --human-readable --itemize-changes --copy-links --progress \
--exclude '.DS_Store' \
/path/test \
[email protected]:/mnt/h/test

从源 Linux/macOS 主机执行校验和双重检查

同步工作后(使用 Windows 10 本地帐户密码),确定所有文件均已通过校验正确复制。

远程 shell...

/usr/local/bin/rsync \
--checksum \
--checksum-choice=md5 \
--rsync-path='wsl rsync' \
--recursive --perms --times --human-readable --itemize-changes --copy-links --progress \
--exclude '.DS_Store' \
/path/test \
[email protected]:/mnt/h/test

相关内容