如何在 Windows Subsystem for Linux (WSL) 中访问系统的 USB 驱动器?我正在使用 Ubuntu 发行版。
答案1
这很简单:
创建挂载点:
mkdir /mnt/g
(添加您想要的任何单词或字母,我使用了与 Windows 驱动器匹配的字母。您可能需要使用sudo
它在目录中创建目录/mnt
。)使用以下方式将驱动器安装到目录
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