我有一个桌面(Ubuntu 13.04 和 Win 7 Home Premium)和一个笔记本电脑(Ubuntu 12.04),都配有 WiFi 适配器。我还有一个WiFi路由器已连接到互联网我的两台计算机都可以访问。
我想使用 WiFi 在台式电脑和笔记本电脑之间共享文件(类似于 Windows 7 上的家庭组,但不使用以太网电缆)。我该如何设置?
我想使用两个操作系统共享文件,如果有人有关于使用任何操作系统共享文件的信息,请回答!
答案1
网络设置
使用标准设置将台式机和笔记本电脑连接到 WiFi 路由器。这意味着任何计算机都可以通过 WiFi 或以太网电缆连接。但是,如果您稍后将一台(或两台)计算机从 WiFi 切换到以太网电缆(或反之亦然),该计算机的本地 IP 地址可能会发生变化。这将影响文件共享设置。
要检查两台计算机是否已连接,请测试您是否可以从两台计算机访问互联网。
选修的:在路由器设置中,查看分配给台式机和笔记本电脑的本地 IP 地址。这些地址可能看起来像 192.168.0.100 或 192.168.1.199。如果路由器中有永久分配这些特定 IP 地址的选项,您可以这样做。
Windows → Ubuntu
步骤1在笔记本电脑上创建一个要共享的文件夹。可能有一个名为“公共”的文件夹,如果需要,请选择该文件夹。右键单击文件夹图标并选择“共享选项”。将打开一个新窗口:
选中“共享此文件夹”复选框。
您可能还想选中另外两个框“允许其他人在此文件夹中创建和删除文件”。这将允许您(桌面 Windows 用户)在此文件夹中创建和删除文件。
“Guest Access”复选框的含义不言而喻。如果您的 Windows 用户 ID 与 Ubuntu 用户 ID 不完全相同,这可能会很有用。
它可能会告诉您共享服务未安装:
单击“安装服务”,并在提示时提供笔记本电脑用户帐户的密码,让其安装软件。系统可能会提示您安装更多软件,例如libpam-smbpass
。安装所有软件。它会要求您重新启动服务,然后单击“是”。
第2步。右键单击“公共”文件夹,打开其属性窗口。转到权限选项卡,确保它如下所示:
单击“更改附件文件的权限”按钮,确保它看起来像这样:
现在您应该能够在 Windows 资源管理器中在笔记本电脑的“公共”文件夹中编辑在 ubuntu 中创建的文件。
但是,如果您在 Windows 中创建文件并将其放在笔记本电脑的公共文件夹中,则当您使用笔记本电脑时可能无法打开该文件。这是因为 Windows 和 Ubuntu 不了解彼此的文件所有权和权限。因此在 Ubuntu 笔记本电脑中,Windows 创建的文件归“Nobody”所有。您必须以管理员身份打开 Nautilus并在笔记本电脑中更改所有权和读写权限。
步骤3.转到台式电脑上的 Windows 并打开Windows资源管理器,点击旁边的三角形网络在左侧面板上。从下拉列表中,您应该能够选择运行 Ubuntu 的笔记本电脑的名称。
现在,您应该能够在 Windows 资源管理器中从笔记本电脑看到共享文件夹(例如“公共”)。单击“公共”文件夹并查看文件夹中的文件。您应该能够将文件从 Ubuntu 中的公共文件夹复制到 Windows 本地文件夹。
Ubuntu → Windows
步骤1使用适用于 Windows 的方法设置 Windows 文件夹共享。按照上面链接中针对 Windows 部分的步骤进行操作。
第2步按Ctrl++在 Ubuntu 笔记本电脑中打开终端并输入:AltT
sudo -H gedit /etc/samba/smb.conf
并寻找以下行:
; name resolve order = lmhosts host wins bcast
并将其编辑成如下的样子
name resolve order = bcast lmhosts host wins
注意,编辑行的开头没有 ;。保存文件并退出 gedit。输入以下两行(一次一行)以停止和启动 samba:
sudo stop smbd
sudo start smbd
步骤3在笔记本电脑上,打开文件浏览器 Nautilus,然后单击网络在左侧面板上。单击“浏览网络”单击 Nautilus 主网络窗口中的图标,找到您的 Windows 桌面和共享文件夹。验证您是否可以从此文件夹复制文件或将文件复制到此文件夹。
看使用 Nautilus 浏览共享时出现“无法从服务器检索共享列表”错误有关编辑 smb.conf 的参考。
乌班图 → 乌班图
将桌面启动到 Ubuntu。
在台式机和笔记本电脑上执行以下操作以确保安装了 ssh-server:
Ctrl按+ Alt+打开终端T并输入
sudo apt-get install openssh-server
出现提示时输入密码。输入密码时光标不会移动。这是正常现象。
如果尚未安装 ssh-server,此命令将安装它。如果已安装,则此命令不会执行任何操作。
桌面优先:
打开 Nautilus 并找到菜单项“其他位置”。在底部找到连接到服务器:
在服务器地址下输入:
sftp://laptop_user_id@laptop_name.local/home/laptop_user_id
laptop_user_id
您在笔记本电脑上创建的用户 ID 在哪里。您可以whoami
在终端中输入来找到您的用户 ID。 是laptop_name
您在安装 Ubuntu 时为笔记本电脑指定的名称。
如果要在桌面的第二个硬盘上共享一个分区,请在服务器地址下输入:
sftp://desktop_user_id@desktop_name.local/path/to/the/mount/point/of/the/partition/in/second/hard/drive
替换path/to/.../drive
为实际路径。
或者,如果您知道笔记本电脑的本地 IP 地址,则可以将其替换laptop_name.local
为笔记本电脑的本地 IP 地址。
按Connect
。您将看到一个密码对话框:
输入与 laptop_user_id 关联的密码,并选择是否要记住该密码。再次单击Connect
。
现在您应该可以看到笔记本电脑的主文件夹。
请注意,在网络在 Nautilus 的左侧面板上,以 开头laptop_user_id
。右键单击它并选择“添加书签”,以便在桌面的 Nautilus 中为您的笔记本电脑的主文件夹创建永久书签。
请参阅此页面查看图片来自旧版本。
现在笔记本电脑
按照与上面桌面相同的流程进行。
答案2
我将提出一些与 SAMBA 不完全一样但可能更适合其他用例的替代方案。
HTTP 服务器
HTTP是用于访问常规网站的协议,因此每个操作系统都必须实现它!
在源计算机上找到您的 IP,例如192.168.0.10
。在 Ubuntu 上:
ifconfig
在包含要传输的文件的目录中创建服务器。使用Python 3(Ubuntu 20.04 及更高版本上的默认 Python):
python3 -m http.server 8080
或者在 Python 2 中:
python -m SimpleHTTPServer 8080
在接收计算机上,打开浏览器并访问:
192.168.0.10:8080
现在您可以通过目录导航到所需的文件。
我不确定这种方法是否快速/强大,但它是设置最简单且可移植的方法之一。
更快的替代方案在以下网址讨论:https://stackoverflow.com/questions/12905426/what-is-a-faster-alternative-to-pythons-simplehttpserver
同步
在两台 Ubuntu 计算机之间,这是一个很好的选择:https://en.wikipedia.org/wiki/Rsync
首先确保您可以从一台计算机通过 SSH 连接到另一台计算机:
ssh [email protected]
如果您想保密密码,可以为用户创建一个新帐户。
您可能需要在服务器和客户端上运行:
sudo apt-get install ssh
然后,一旦您成功登录,只需执行以下操作即可将文件从服务器复制到客户端:
rsync -av [email protected]:/full/path/to/remote/directory .
可以一次复制多个目录,如下所述https://unix.stackexchange.com/questions/308810/copying-multiple-files-using-rsync-over-ssh:
rsync -av '[email protected]:/full/path/to/remote/directory "/full/path/to/remote/directory with space"' .
这是最低公分母方法:最强大、最高效、最广泛使用的 Linux 并且安全性依赖于众所周知的文件权限 + 用户方案。
在 Windows 上这可能并不容易:
- https://serverfault.com/questions/8411/what-is-a-good-ssh-server-to-use-on-windows),
- https://superuser.com/questions/300263/how-to-use-rsync-from-windows-pc-to-remote-linux-server
NFS
再次主要用于两台 Ubuntu 机器,这是“用于 Linux 的 SAMBA”,其支持内置于 Linux 内核中:https://en.wikipedia.org/wiki/Network_File_System
基本上,它允许您mount
在客户机上访问服务器上的文件夹。
设置和故障排除可能比有点难rsync
,但绝对可行,这是一篇好文章:https://www.digitalocean.com/community/tutorials/how-to-set-up-an-nfs-mount-on-ubuntu-16-04
也许还有一些 Windows 实现:https://docs.microsoft.com/en-us/windows-server/storage/nfs/nfs-overview但我猜微软必须对其自己的 SMB 协议提供更好的支持。
SCP
这通过 SSH 进行,因此您需要在远程机器上登录。
一旦能够使用 SSH,您就可以使用 scp 复制单个文件,如下所示:
scp username@remote-hostname:/path/to/remote/src path/to/local/dest
scp path/to/local/src username@remote-hostname:/path/to/remote/dest
SSH文件系统
这也适用于 SSH,因此再次需要 SSH 登录。
使用 SSHFS,您可以通过 SSH 创建一个挂载。有点像 NFS,但更容易设置,但可能更慢:
sudo sshfs username@remote-hostname:/path/to/remote/src path/to/local/dir
path/to/local/dir
现在包含相同的内容/path/to/remote/src
并自动同步。
蓝牙
这也值得思考!如今,蓝牙似乎几乎在每个非嵌入式设备上都可用,有时我们甚至会忘记它。
我成功地在两台 Ubuntu 23.10 ThinkPad 机器之间发送了文件。这并不奇怪,因为您无法浏览另一台计算机上的文件,只能将特定文件发送到另一台计算机。但它很方便。
配对后,从发送方单击要发送到的已连接设备:
然后出现以下界面并选择要发送的本地文件:
然后接收者会看到这个:
一旦接收方接受,文件就会出现在~/Downloads下。
答案3
更新:这里有很多适合各种用例的替代方案https://stackoverflow.com/questions/12905426/what-is-a-faster-alternative-to-pythons-http-server-or-simplehttpserver?rq=1
sudo apt-get install servefile
服务文件非常适合随意分享,它在端口 8080 上运行一个 http 服务器(除非 -p <港口> 已指定),因此它可以进行通信快速地使用任何带有浏览器的设备。
例子:
- 服务文件文件名# 仅提供文件
我获得 3 个 URL,因为我有来自 3 个不同 LAN 的 3 个 IP,通常您只会获得 1 个,但能向您显示这一点真是太棒了。
- 服务文件-u〜/图片 # 让你上传文件到图片文件夹
- 服务文件-l〜/图片 # 提供文件夹的内容
- 服务文件-tc gzip〜/图片 # 从任意文件或文件夹构建一个 tar 文件并即时压缩
顺便提一句通过这种方法,我达到了 1Gbps 的传输速度(我的 LAN 的最大速度)。