如何通过本地网络共享文件?

Gau*_*rav 79 networking file-sharing

我有一台台式机(Ubuntu 13.04 和 Win 7 Home Premium)和一台笔记本电脑(Ubuntu 12.04),两者都有 WiFi 适配器。我还有一个连接到互联网WiFi 路由器,我的两台电脑都可以访问它。

我想使用 WiFi 在我的台式机和笔记本电脑之间共享文件(类似于 Windows 7 上的家庭组,但不使用以太网电缆)。我该如何设置?

我想使用两个操作系统共享文件,如果有人有关于与任何操作系统共享文件的信息,请回答!

use*_*186 87

网络设置

使用标准设置将台式机和笔记本电脑连接到 WiFi 路由器。这意味着任何计算机都可以通过 WiFi 或以太网电缆连接。但是,如果您稍后将一台(或两台)计算机从 WiFi 切换到以太网电缆(反之亦然),则该计算机的本地 IP 地址可能会更改。这将影响文件共享设置。

要检查两台计算机是否已连接,请测试您是否可以从两台计算机访问 Internet。

可选:在路由器设置中,查看分配给台式机和笔记本电脑的本地 IP 地址。这些可能看起来像 192.168.0.100 或 192.168.1.199。如果存在在路由器中永久分配这些特定 IP 地址的选项,您可以这样做。


窗户?Ubuntu

步骤 1在笔记本电脑上创建要共享的文件夹。可能有一个名为“公共”的文件夹,如果您愿意,请选择该文件夹。右键单击文件夹图标并选择“共享选项”。将打开一个新窗口:

在此处输入图片说明

选中“共享此文件夹”框。

您可能还想选中其他两个框“允许其他人在此文件夹中创建和删除文件”。这将允许桌面 Windows 用户在此文件夹中创建和删除文件。

“访客访问”复选框是不言自明的。如果您的 Windows 用户 ID 与您的 Ubuntu 用户 ID 不完全相同,这可能很有用。

它可能会告诉您未安装共享服务:

在此处输入图片说明

单击“安装服务”,并在提示时提供笔记本电脑用户帐户的密码,让它安装软件。系统可能会提示您安装更多软件,例如libpam-smbpass. 安装所有软件。它会要求您重新启动服务并单击是。

步骤 2.打开“公共”文件夹的属性窗口,右键单击它。转到权限选项卡并确保它看起来像这样:

在此处输入图片说明

单击“更改封闭文件的权限”按钮并确保它看起来像这样:

在此处输入图片说明

现在,您应该能够在 Windows 资源管理器的笔记本电脑的“公共”文件夹中编辑在 ubuntu 中创建的文件。

但是,如果您在 Windows 中创建一个文件并将其放在膝上型电脑的公共文件夹中,则当您使用膝上型电脑时可能无法打开该文件。这是因为 Windows 和 Ubuntu 不了解彼此的文件所有权和权限。所以在 Ubuntu 笔记本电脑中,Windows 创建的文件归“Nobody”所有。您必须以管理员身份打开 Nautilus,并在笔记本电脑中更改所有权和读写权限。

步骤 3.转到台式计算机上的 Windows 并打开Windows 资源管理器,单击左侧面板上网络旁边的三角形。从下拉列表中,您应该能够选择运行 Ubuntu 的笔记本电脑的名称

现在您应该能够在 Windows 资源管理器中从笔记本电脑看到您的共享文件夹(比如“公共”)。单击“公共”文件夹并查看文件夹中的文件。您应该能够将文件从 Ubuntu 中的 Public 文件夹复制到您的 Windows 本地文件夹。

这是分步指南,其中包含更多详细信息。


乌班图?视窗

步骤 1使用适用于 Windows 的方法设置 Windows 文件夹共享。按照上面链接中的步骤操作 Windows 部分。

步骤 2在 Ubuntu 笔记本电脑中按Ctrl+ Alt+打开终端T并输入:

sudo -H gedit /etc/samba/smb.conf
Run Code Online (Sandbox Code Playgroud)

并寻找该行:

;   name resolve order = lmhosts host wins bcast
Run Code Online (Sandbox Code Playgroud)

并编辑它看起来像这样

   name resolve order = bcast lmhosts host wins 
Run Code Online (Sandbox Code Playgroud)

请注意,没有 ; 在编辑行的开头。保存文件并退出 gedit。输入以下两行(一次一行)来停止和启动 samba:

sudo stop smbd
sudo start smbd
Run Code Online (Sandbox Code Playgroud)

步骤 3在笔记本电脑上,打开 Nautilus、文件浏览器并单击左侧面板上的网络。单击“浏览网络” 单击 Nautilus 主网络窗口中的图标,找到您的 Windows 桌面和共享文件夹。验证您可以从该文件夹复制文件或将文件复制到该文件夹​​。

使用 Nautilus 浏览共享时,请参阅“无法从服务器检索共享列表”错误,以获取有关编辑 smb.conf 的参考。


乌班图?Ubuntu

将桌面引导至 Ubuntu。

在台式机和笔记本电脑上执行以下操作以确保 ssh-server 已安装:

Ctrl+ Alt+打开终端T并输入

sudo apt-get install openssh-server
Run Code Online (Sandbox Code Playgroud)

出现提示时输入您的密码。输入密码时光标不会移动。这是正常的。

如果尚未安装 ssh-server,这将安装它。如果已经安装,它将什么也不做。

桌面优先:

打开 Nautilus 并找到菜单项“其他位置”。在底部找到连接到服务器:

sftp连接7

在服务器地址下输入:

sftp://laptop_user_id@laptop_name.local/home/laptop_user_id
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

替换path/to/.../drive为实际路径。

或者,如果您知道笔记本电脑laptop_name.local的本地 IP 地址,则可以将其替换为笔记本电脑的本地 IP 地址。

Connect。您将看到一个密码对话框:

SSH 密码

输入与 notebook_user_id 关联的密码,然后选择是否要记住密码。再次单击Connect

现在您应该会看到笔记本电脑的主文件夹。

请注意,在Nautilus 左侧面板的Network下有一个以 开头的新条目laptop_user_id。右键单击它并选择“添加书签”以在桌面的 Nautilus 中为笔记本电脑的主文件夹创建一个永久书签。

有关旧版本的图片请参阅此页面

现在笔记本

按照与上面桌面相同的过程进行操作。

  • :) 完成了,我像你说的那样在我的笔记本电脑上安装了 **SSH** 并完成了我的工作,现在我可以在我的台式机和笔记本电脑中看到我的笔记本电脑,非常感谢,非常感谢你花时间这个问题。 (2认同)
  • @Gaurav Samba 是一项在后台运行的服务。该名称没有图形用户界面。这就是为什么你不会在 Dash 中找到它的原因。你在哪一步卡住了?你能从 Ubuntu 看到 Windows 中的共享文件夹吗?你能从 Windows 看到 Ubuntu 中的共享文件夹吗? (2认同)

Cir*_*郝海东 10

我将提出一些看起来与 SAMBA 不完全相同的替代方案,但它们可能更适合其他用例。

HTTP服务器

HTTP是用于访问常规网站的协议,因此每个操作系统都被迫实施它!

在源计算机上找到您的 IP,例如192.168.0.10. 在 Ubuntu 上:

ifconfig
Run Code Online (Sandbox Code Playgroud)

在包含要传输的文件的目录中创建服务器。使用Python 3(Ubuntu 20.04 及更高版本上的默认 Python):

python3 -m http.server 8080
Run Code Online (Sandbox Code Playgroud)

或在 Python 2 中:

python -m SimpleHTTPServer 8080
Run Code Online (Sandbox Code Playgroud)

在接收计算机上,打开浏览器,然后访问:

192.168.0.10:8080
Run Code Online (Sandbox Code Playgroud)

现在您可以通过目录导航到您想要的文件。

我不确定这种方法是否快速/健壮,但它是设置和便携最简单的方法之一。

更快的替代方案在以下位置讨论:https : //stackoverflow.com/questions/12905426/what-is-a-faster-alternative-to-pythons-simplehttpserver

同步

在两台 Ubuntu 计算机之间,这是一个不错的选择:https : //en.wikipedia.org/wiki/Rsync

首先确保您可以从一台计算机通过 SSH 连接到另一台计算机:

ssh server-username@192.168.0.10
Run Code Online (Sandbox Code Playgroud)

如果您想将密码保密,您可以为用户创建一个新帐户。

您可能需要在服务器和客户端上运行:

sudo apt-get install ssh
Run Code Online (Sandbox Code Playgroud)

然后,一旦您成功登录,要将文件从服务器复制到客户端,只需执行以下操作:

rsync -av server-username@192.168.0.10:/full/path/to/remote/directory .
Run Code Online (Sandbox Code Playgroud)

可以一次性复制多个目录,如https://unix.stackexchange.com/questions/308810/copying-multiple-files-using-rsync-over-ssh 所述

rsync -av 'server-username@192.168.0.10:/full/path/to/remote/directory "/full/path/to/remote/directory with space"' .
Run Code Online (Sandbox Code Playgroud)

这是最低公分母方法:最健壮、高效、广泛的 Linux 可用且安全性依赖于众所周知的文件权限 + 用户方案。

Windows 认为这可能并不容易:

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 
Run Code Online (Sandbox Code Playgroud)

SSHFS

这也适用于 SSH,因此再次需要 SSH 登录。

使用 SSHFS,您可以通过 SSH 创建一个挂载。有点像 NFS,但更容易设置并且可能更慢:

sudo sshfs username@remote-hostname:/path/to/remote/src path/to/local/dir
Run Code Online (Sandbox Code Playgroud)

path/to/local/dir现在包含相同的内容/path/to/remote/src并自动同步。

  • 更快更高效! (2认同)
  • 您还可以使用 npm 包 http-server https://www.npmjs.com/package/http-server 只需在相应目录中启动服务器并使用 LAN 地址进行流式传输 (2认同)