network file-sharing protocols
常用的文件共享有三种:FTP、Samba、WebDAV
挂载远程文件夹的方法有:
Table of Contents
1、ftp
(可以匿名登录,限定用户登录,限定读写权限,限定可以访问的文件夹。可以通过windows自带的“添加一个网络位置”挂载,并且可以网页直接输入’ftp:网址‘访问下载文件)
Note
FTP属于古老的文件共享方式了,因为安全性,现代浏览器最新已默认不能打开FTP协议。
# 安装curlftpfs(以Debian/Ubuntu为例)
sudo apt install curlftpfs
# 挂载FTP共享
curlftpfs ftp://username:password@server_ip/path /mnt/ftp_share
2、sftp
ssh内置的,平时常用的与服务器传输文件即用的sftp协议(如filezilla和xftp),非常方便,直接使用软件直接挂载(推荐RaiDrive)。但只能用户登录,并且拥有该登录用户的权限,权限管理方面没有ftp好,优点是加密传输的,比ftp安全。并且只需要一个22端口,默认centos7中public作用域默认开启ssh的访问端口,不用要配置防火墙端口即可使用,非常方便。
SFTP在FTP基础上增加了加密,在Linux上安装OpenSSH后可以直接用SFTP协议传输。使用SFTP临时传送文件还可以,但做文件共享,性能不高,速度较慢。
# 安装sshfs(以CentOS为例)
sudo yum install sshfs
# 创建挂载点并挂载
mkdir /mnt/sftp_share
sshfs username@server_ip:/remote/path /mnt/sftp_share
3、nfs
由 Sun Microsystems 开发,主要用于 Unix/Linux 系统之间的文件共享。
win和linux都可以使用nfs挂载文件夹,ftp修改文件需要完全下载下来,修改完后再上传,而nfs可以直接修改服务端的文件。
实测阿里云新加坡服务器,nfs文件传输效率没有ftp和sftp高。
Windows 有 NFS 客户端
windows需要在“程序与功能”里启用NFS服务,然后在“映射网络驱动器”中输入nfs服务器的ip地址和要挂载的文件夹(和smb挂载方法一样)。
# 创建挂载点
sudo mkdir /mnt/nfs_share
# 挂载NFS共享
sudo mount -t nfs server_ip:/path/to/export /mnt/nfs_share
4、smb
由 IBM 开发,后被 Microsoft 广泛采用和扩展,成为 Windows 网络文件和打印共享的“母语”协议,SMB是微软开发的,用在Windows环境中。
windows局域网使用的协议,windows网上邻居发现的共享文件夹即使用的smb协议,可以通过windows自带的映射网络文件夹挂载。兼容性最好,但传输效率比其它略低。
非局域网内,可以用zerotier组内网直接挂载。(zerotier是个p2p内网穿透的组网方案,可以穿透位于nat或者位于防火墙后的主机,官网可以免费注册使用)
Samba是Linux下CIFS协议的实现,优势在于对于小白使用简章,和Windows系统文件共享访问一样,不需要安装第三方软件,而且移动端也有大量APP支持。苹果手机文件APP中添加网络存储用的就是这种方式。Windows下文件共享使用445端口,且不能更改。445端口常常受黑客关照,在广域网上大多运营封掉了访端口,所以这种文件共享只适合在内网使用。
在 Linux 上访问 Windows 共享目录(使用 cifs内核模块)
on windows side
step 1.在Windows 10主机上设置文件共享夾
on debian side
step 2.在Debian中
#安装SMB客户端:
sudo apt install cifs-utils
# 创建挂载点
sudo mkdir /mnt/smb_share
# 使用mount命令手动临时挂载共享文件夹
挂载走SMB协议的文件夹共享,指定用户名密码
sudo mount -t cifs -o username=your_username,password=your_password //server_ip/share_name /mnt/smb_share
临时挂载: 使用 mount命令手动挂载共享。
访问: 挂载后,所有应用程序(文件管理器、命令行工具、编辑器等)都可以像访问本地文件一样访问共享中的文件和目录
在 Linux 上访问 Windows 共享目录(不使用 cifs内核模块)
不使用 cifs内核模块意味着不使用 mount -t cifs命令将共享直接挂载到 Linux 文件系统树中。
smbclient是一个命令行 FTP 风格的客户端。
缺点: 交互式或脚本使用,不能像本地目录一样直接挂载。文件操作需要通过 smbclient命令进行
smbclient -L //windows_host/share_name -U username
smbclient //windows_host/share_name -U username
进入类似 FTP 的交互提示符 (smb: \>),可以使用 get, put, ls, cd, mkdir, rm等命令
5、webdav
WebDAV 基于 HTTP 协议的通信协议,在广域网上共享文件有天然的优势,移动端文件管理APP也大多支持WebDAV协议。使用HTTPS还能保安全性。Apache和Nginx支持WebDAV,可作为WebDAV文件共享服务器软件。也可以使用专门的WebDAV软件部署。
Windows:可通过“映射网络驱动器”直接添加WebDAV服务器地址
Linux:可使用davfs2内核模块挂载
我用群晖开启的webdav,支持https,使用软raidrive挂载webdav,访问稳定,很方便,其它功能需要进一步了解。
基于HTTP/HTTPS,与Web服务集成度高
https://cloud.tencent.com/developer/article/2410890
step 1.在 Windows 10 上配置 WebDAV 服务器
首先是Windows端搭建 WebDAV服务,使用IIS搭建
step 2.在 Home Assistant 中,添加WebDAV集成
step 3.填写WebDAV 服务器信息
URL:格式为 http://<你的Windows主机IP地址>:<端口号>/<共享路径>
step 4.
6.CIFS(过期)
CIFS is no longer developed。
CIFS是SMB的一个特定版本,现在被新的SMB协议取代。
Linux 中的 cifs: Linux 内核中的文件系统驱动名为 cifs,但它并不仅仅支持 CIFS/SMB1。这个驱动实际上支持多种 SMB 协议版本(包括 SMB2 和 SMB3)。
当使用 mount -t cifs时,客户端和服务器会协商使用它们共同支持的最高 SMB 版本(除非特别限制)。
总结:
挂载远程文件夹比较常用的有上述5种方法,只要网速快,和本地磁盘使用没什么区别!推荐使用sftp,ssh自带的,服务器装完系统后不需要安装软件或者修改配置直接就可以使用,不过最好用非root账户登录使用,免得不小心删除了什么文件。
source:https://www.cnblogs.com/focus-g/p/11367181.html