小蒋同学

小蒋同学

· Linux编程技术 · · 892次浏览

树莓派smb、ftp、webdav三种共享协议搭建方法和对比

树莓派挂了块3.5的硬盘做下载机和局域网影音共享,性能和耗电量都好于群晖Nas,特别是多盘位做raid保护的机型,群晖就不用24小时开机了,有需要的时候可以直接用树莓派通过网卡唤醒。

换了电视后对片源的质量有了更高的要求,文件超过20G后,即使使用wifi6路由器,电视网卡支持800m+的传输速率,smb已经满足不了需求了,播放杜比视界版本的文件ftp也很卡,目前三个共享协议都尝试过了,分享一下搭建的过程。

smb

应该是兼容性最好的协议了,通吃各种系统,很多移动端的播放器也都支持

好习惯,先更新软件源

sudo apt-get update

安装samba

sudo apt-get install samba
sudo apt-get install samba-common-bin

配置samba

sudo vim /etc/samba/smb.conf

global节点下添加一下配置,优化传输速度

min receivefile size = 16384
write cache size = 262144

在配置文件的末尾添加自定义配置

[Public]
   comment = Public Storage  # 共享文件夹描述
   path = /你的共享目录 # 共享文件夹目录
   read only = no # 不只读
   create mask = 0777 # 创建文件的权限
   directory mask = 0777 # 创建文件夹的权限
   guest ok = yes # guest访问,无需密码
   browseable = yes # 可见

不需要密码到此搭建就结束了,可以直接跳到”重启服务”那步即可

如果sma共享需要密码,添加如下配置

[pt]
# 共享段备注
comment = pt folder
# 共享文件夹路径,必填
path = /你的共享目录
# 是否只读
read only = no
# 允许匿名访问
guest ok = no
# 是否出现在网络发现中
browseable = yes
# 可以访问的用户,这个用户和本地的用户不同
valid users = 你的用户名

为你的用户名设置密码

sudo smbpasswd -a pi

重启服务

sudo samba restart
#或
sudo systemctl restart smbd

附上日志存放的目录,有问题方便排查

cd /var/log/samba/

ftp

比较古老的协议,但在kodi播放器下,传输明显速度优于smb

安全起见,创建新用户,给ftp使用

sudo useradd -m -s /bin/bash ftper
sudo passwd ftper

映射共享的文件路径到新用户的home目录

sudo ln -s /你的共享目录 /home/ftper/你的共享目录

安装vsftpd

sudo apt-get install vsftpd

编辑配置文件

sudo vim /etc/vsftpd.conf

anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022

启动

sudo service vsftpd start

webdav

速度和ftp没有明显区别,但kodi下播放杜比视界视频时,只有webdav可以流畅播放

下载webdav程序,选择armv7版本

wget https://github.com/hacdias/webdav/releases/linux-armv7-webdav.tar.gz

解压、复制到/usr/bin目录下

tar -zxvf linux-armv7-webdav.tar.gz
sudo cp webdav /usr/bin/

注册service

cd /etc/systemd/system
sudo vim webdav.service

写入如下内容

[Unit]
Description=WebDAV server
After=network.target

[Service]
Type=simple
User=root
ExecStart=/usr/bin/webdav --config /etc/webdav/config.yaml
Restart=on-failure

[Install]
WantedBy=multi-user.target

建立配置文件

和上面/etc/systemd/system/webdav.service里的ExecStart目录要对应上

cd /etc/webdav/
sudo vim config.yaml

写入

# Server related settings
address: 0.0.0.0
port: 21234
auth: true
tls: false
cert: cert.pem
key: key.pem

# Default user settings (will be merged)
scope: .
modify: true
rules: []

users:
  - username: admin
    password: admin
    #这里为共享目录
    scope: /你的共享目录

开机并启动服务

systemctl enable webdav
systemctl start webdav

查看运行状态

systemctl status webdav

不报错的话直接输入

http://你的ip地址:21234

就可以正常访问

根据自身实际使用情况(SONY电视 + 电视版KODI播放器 + 树莓派4 + 千兆有线网络/WIFI6 5G模式传输 + 4K 原生60帧片源/杜比视界片源)和体验来说,个人总结如下表:

协议类型 速度 兼容性 KODI
smb 较快 好 传输性能较差
ftp 快 较好 可播放70G视频文件
webdav 快 差 最理想的模式

总体来说smb协议的兼容性最好,windows/mac/linux均可支持,各个厂商的电视、盒子和各个手机端的播放器均支持smb协议传输,ftp和webdav原生支持的较少。

理论上三者速度相差并不大,这里测试的环境是KODI播放器,没深入了解过KODI读取文件的方式,但大视频文件一定不能用smb协议,杜比视界视频文件一定要用webdav,咨询过KODI其中的一位开发者,他表示webdav可以开启多通道读取文件的模式,有利于文件更快的传输,但并不代表所有播放器的表现都一致。

总结

想要兼容性好首选smb
如果播放器用的KODI,不用折腾,首选webdav

评论功能已被作者关闭