用户故事如下,只是为了更好地说明这是一个 Ubuntu 问题;-)
我,作为 Ubuntu 用户(在 20.04.2 上),
想
通过 LAN 电缆连接到我的 Windows 10 机器(最好通过 SMB 协议)这样
我就可以复制/移动我在那里创作的下载文件和文档因为
归根结底,我希望我的 Ubuntu 机器成为我的文档的规范(哈!)家。
我知道这不是一个 Windows Q/A 网站,所以请不要详细介绍(如果您不想)我需要在 Windows 机器上执行的步骤,但是请您至少将有关 Samba 设置的步骤列表作为关键字,我可以一一跟进和谷歌?
我需要的:
不幸的是,我似乎不能只是拉过整个目录并完成它。相反,我想使用图形文件管理器(Nautilus)将一些选择的远程目录的内容“合并”到它们相应的本地目录中,并在出现任何冲突时手动解决它们。
我试过的:
我曾尝试在 Windows 上启用 NFS(因为我已经有一些 NFS 经验),但发现 Windows 10 仍然仅支持 NFS 3,因此可传输的文件名仅限于 ASCII 字符;所以这不好。
这就是为什么我的目标是 Samba。
我最终遵循了本教程:
http://www.bitpi.co/2015/02/16/accessing-a-windows-share-with-a-raspberry-pi/
在 Windows 上:
该文章适用于 Windows 8,因此 Windows 10 中的网络设置 UI 有点不同,但设法找到了所有内容。
找出 Windows 机器的 LAN IP 地址也是必要的:
ipconfig
Powershell 中发出的命令会显示它。额外任务:
我的 Windows 10 不会自动将我的 LAN 网络设置为专用(但是,共享仅针对专用网络设置)。
启动具有管理员权限的 Powershell 以解决该问题:
在 Ubuntu 上:
准备一个挂载点:
Install
cifs-utils
,这是 samba 的部分插件;和包将作为其依赖项自动安装smbclient
。winbind
安装
cifs
:对一些选择参数的备注:
//WINDOWS.IP.ADDRESS.HERE/path/on/windows
请注意,从 Windows 建议的“网络路径”(其中包含 Windows 机器的名称作为服务器标识符)中,我们仅使用文件系统路径。机器的名称将替换为 Windows 机器的 LAN IP 地址。它仍然需要在前面加上
//
.user=WindowsUserNameHere
上面链接的教程建议为
user
密码提供一个选项(除此之外),但这可能最终以纯文本形式出现~/.bash_history
,最好避免使用。但是,如果省略此密码选项,则会以交互方式提示输入,并且可以以与 Linux 的 sudo 密码类似的方式输入。
另一种可能性是使用该
credentials
选项指向包含用户和密码值的文件。当 mount 指令需要进入时,此选项将是最合适的/etc/fstab
。在下面的链接文档中查看更多相关信息。uid=$(id -u),gid=$(id -g)
如果没有这些选项,即使在 Windows 端授予了写入权限,已安装文件夹的内容也将不可写。这是因为即使在我们准备期间将挂载文件夹提供给我们的普通用户,cifs 仍会将内容以 root 身份放入其中:里面的所有内容仍将归 root 所有。
我们需要告诉 cifs 代表我们的普通用户处理这些内容。
的选项
uid
并将gid
实现这一目标。要预先找出它们的值,可以相应地运行id -u
和id -g
命令。这些将返回我们常规用户的用户和组 ID。然而,这可以通过在命令本身中使用动态替换来自动完成,如上面的代码片段所示。
请注意,如果 Windows 将所有权信息与内容一起发送,则可能还需要进一步的
forceuid
选项forcegid
(不需要值)。(我从@Huygens在 Unix SE 网站上的回答中了解到了后面这些选项。)
此时,所需的 Windows 内容应该在
/mnt/my_windows_stuffs/
目录中可用。请注意,
rsync
在此安装上使用 plain 会非常慢。不幸的是,这是意料之中的。然而,正常的复制以合理的速度工作。处理完这些文件后,Windows 机器可以解除绑定:
mount.cifs
在文档中查看更多信息。