Linux工具-搭建文件服务器

当我们使用linux系统作为开发环境时,经常需要在Linux系统之间、Linux和Windows之间传输文件。
对少量文件进行传输时,可以使用scp工具在两台主机之间实现文件传输:

root@ubuntu:~$ ssh --help
unknown option -- -
usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface]
           [-b bind_address] [-c cipher_spec] [-D [bind_address:]port]
           [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11]
           [-i identity_file] [-J [user@]host[:port]] [-L address]
           [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
           [-Q query_option] [-R address] [-S ctl_path] [-W host:port]
           [-w local_tun[:remote_tun]] destination [command]

对于大量文件有传输、共享需求时,可以搭建文件共享服务器支持实现,如sftp、nfs、smbam文件服务器。当然也可以借助DLNA服务器实现多媒体文件共享,搭建私有的影音平台。
注:服务端系统环境Ubuntu20.04;客户端Windows 10 22H2。

一、sftp文件服务器

SFTP(SSH File Transfer Protocol)是一种安全的文件传输协议,用于在计算机之间传输文件。它建立在SSH(Secure Shell)协议之上,利用SSH的安全性和加密功能来保护文件传输过程中的数据安全。
SFTP是在SSH协议之上建立的一种安全文件传输协议,在SSH协议中SFTP作为子协议存在。在ubuntu20.04环境下,sftp服务默认已安装,未安装时也可以使用以下命令安装:

sudo apt install openssh-server
root@ubuntu:~$ dpkg -l | grep ssh
ii  libssh-4:amd64                             0.9.3-2ubuntu2.4                      amd64        tiny C SSH library (OpenSSL flavor)
ii  libssh-gcrypt-4:amd64                      0.9.3-2ubuntu2.4                      amd64        tiny C SSH library (gcrypt flavor)
ii  openssh-client                             1:8.2p1-4ubuntu0.10                   amd64        secure shell (SSH) client, for secure access to remote machines
ii  openssh-server                             1:8.2p1-4ubuntu0.10                   amd64        secure shell (SSH) server, for secure access from remote machines
ii  openssh-sftp-server                        1:8.2p1-4ubuntu0.10                   amd64        secure shell (SSH) sftp server module, for SFTP access from remote machines
ii  ssh-import-id                              5.10-0ubuntu1                         all          securely retrieve an SSH public key and install it locally
  • 连接服务器:
sftp <user>@<hostname/ip>
  • sftp命令行参数:
sftp> help
Available commands:
bye                                Quit sftp
cd path                            Change remote directory to 'path'
chgrp [-h] grp path                Change group of file 'path' to 'grp'
chmod [-h] mode path               Change permissions of file 'path' to 'mode'
chown [-h] own path                Change owner of file 'path' to 'own'
df [-hi] [path]                    Display statistics for current directory or
                                   filesystem containing 'path'
exit                               Quit sftp
get [-afpR] remote [local]         Download file
help                               Display this help text
lcd path                           Change local directory to 'path'
lls [ls-options [path]]            Display local directory listing
lmkdir path                        Create local directory
ln [-s] oldpath newpath            Link remote file (-s for symlink)
lpwd                               Print local working directory
ls [-1afhlnrSt] [path]             Display remote directory listing
lumask umask                       Set local umask to 'umask'
mkdir path                         Create remote directory
progress                           Toggle display of progress meter
put [-afpR] local [remote]         Upload file
pwd                                Display remote working directory
quit                               Quit sftp
reget [-fpR] remote [local]        Resume download file
rename oldpath newpath             Rename remote file
reput [-fpR] local [remote]        Resume upload file
rm path                            Delete remote file
rmdir path                         Remove remote directory
symlink oldpath newpath            Symlink remote file
version                            Show SFTP version
!command                           Execute 'command' in local shell
!                                  Escape to local shell
?                                  Synonym for help

注:Windows10系统默认安装ssh客户端和sftp客户端。

二、nfs文件服务器

1、安装
sudo apt install nfs-kernel-server
2、配置

默认配置文件路径:/etc/exports
当我们需要共享~/Downloads和 ~/Public目录时,我们可以添加以下内容:

/home/root/Downloads/ *(rw,sync,no_root_squash)
/home/root/Public/ *(rw,sync,no_root_squash)

属性解释:

  • /home/root/Downloads/:nfs服务器共享目录
    • :允许所有设备可以访问该共享
  • rw:客户端对该共享目录具有读写权限
  • sync:修改同步到存储
  • no_root_squash:root用户具有对根目录的完全管理访问权限
    注:共享目录需要使用绝对路径描述。
3、管理

安装nfs服务器后默认使用systemctl进行管理,因此可以使用以下命令管理nfs服务器状态:

# 运行管理
sudo systemctl start nfs-kernel-server.service
sudo systemctl restart nfs-kernel-server.service
sudo systemctl stop nfs-kernel-server.service

# 使能/失能开机自启动
sudo systemctl enable nfs-kernel-server.service
sudo systemctl disable nfs-kernel-server.service

# 查看服务状态
sudo systemctl status nfs-kernel-server.service
4、测试

当nfs服务器安装、配置完成了,我们可以做一些必要的检查验证。

  • 在nfs服务器主机
    使用"showmount -e localhost"可以查看本机所有共享目录。
    注:使用"showmount -e remotehost"可以查看远程特定主机的共享目录。
root@ubuntu:~$ showmount -e localhost
Export list for localhost:
/home/root/Public    *
/home/root/Downloads *
  • 在Linux客户端环境
    可以尝试挂载共享目录,若没有nfs客户端,可以使用"sudo apt install nfs-common"安装;
  • 在Windwos客户端环境
    默认未使能nfs功能,可以在”控制面板-》程序-》启动或关闭Windows功能“中使能NFS客户端。
    在这里插入图片描述
    完成后可以使用”添加网络驱动器“的方式将nfs共享目录映射为本地磁盘。
    在这里插入图片描述

三、samba文件服务器

nfs文件服务器可用于Linux系统之间、Linux与Windows系统之间的文件共享,但是nfs文件系统没有用户权限控制,当我们需要对访问者权限控制时可以用samba服务(企业化应用较多)。

1、安装
sudo apt-get install samba
2、配置

默认配置文件路径:/etc/samba/smb.conf
相对于nfs文件服务器,samba文件服务器的配置项较多,但也提供了更加灵活的管理方式。
对共享文件的场景,我们可以增加以下配置项,共享media和camare两个目录:

[media]
    comment = media directories
    path = /media/media
    public = yes
    browseable = yes
    writable = yes
    guest ok = yes
[camera]
    comment = camare directories
    path = /media/camera
    public = yes
    browseable = yes
    writable = yes
    guest ok = no

注1:其他配置项可以保持默认值,也可以参考配置文件中的注解做相应修改。
注2:如果不使用linux用户名访问,需要创建samba用户。

3、管理

samba服务器后同样也是使用systemctl进行管理,因此可以使用以下命令管理samba服务器:

# 运行管理
sudo systemctl start smbd.service
sudo systemctl restart smbd.service
sudo systemctl stop smbd.service

# 使能/失能开机自启动
sudo systemctl enable smbd.service
sudo systemctl disable smbd.service

# 运行状态
sudo systemctl status smbd.service
4、测试

samba客户端一般部署在windows环境,与nfs文件系统不同,win10默认开启samba客户端。

  • 方式一:Windows运行查看
    “Win+R”打开运行,输入服务端IP和共享目录(“\<server_ip/name>“或”\<server_ip\name>\<share_folder>”),可以查看到共享的目录:
    在这里插入图片描述

在这里插入图片描述
注:访问到设置了权限的目录时,需要输入对应的用户名、密码。

  • 方式二:添加网络驱动器映射
    “Win+E”打开资源管理器,“计算机” -> “映射网络驱动器” :
    在这里插入图片描述

四、DLNA媒体服务器

基于nfs和samba文件服务器,我们也可以共享各种多媒体文件到移动端,但我们也可以基于更专业DLNA协议搭建一个简易的家庭影院。
注:基于创维的电视盒子测试,samba服务器可以找到但无法访问,使用minidlna服务可以流畅访问到服务器端的媒体软件。

1、安装
sudo apt install minidlna
2、配置

默认配置文件路径:/etc/minidlna.conf
如果我们想添加共享/media/media目录, 只需要在配置文件添加以下行:

media_dir=/media/media

注1:其他配置项可以保持默认值,也可以根据配置文件中的注解做相应修改。
注2:miniDLNA默认使用8200端口提供web端的状态查看,如果冲突需要在配置文件中修改。

3、管理

minidlna服务器同样使用systemd(server)进行管理。

# 运行管理
sudo systemctl start minidlna.service
sudo systemctl restart minidlna.service
sudo systemctl stop minidlna.service

# 使能/失能开机自启动
sudo systemctl enable minidlna.service
sudo systemctl disable minidlna.service

# 运行状态
sudo systemctl status minidlna.service
4、测试
  • Web端测试
    通过<server_ip/name>:8200访问miniDLNA服务器,可以查看到服务器的实时状态。
    在这里插入图片描述

  • 设备端测试
    服务端保持运行,使用支持DLNA协议的电视/电视盒子,和服务端连接到同一网络下,在电视/电视盒子“媒体中心”(或其他类似的菜单名)中可以搜索到"minidlna"的共享设备,选择打开便可以访问到共享的媒体文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/319211.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【面试突击】Java面试底层逻辑(HashMap、ConcurrentHashMap面试实战)

&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308; 欢迎关注公众号&#xff08;通过文章导读关注&#xff1a;【11来了】&#xff09;&#xff0c;及时收到 AI 前沿项目工具及新技术 的推送 发送 资料 可领取 深入理…

HashMap集合万字源码详解(面试常考)

文章目录 HashMap集合1.散列2.hashMap结构3.继承关系4.成员变量5.构造方法6.成员方法6.1增加方法6.2将链表转换为红黑树的treeifyBin方法6.3扩容方法_resize6.3.1扩容机制6.3.2源码resize方法的解读 6.4 删除方法(remove)6.5查找元素方法(get)6.6遍历HashMap集合几种方式 7.初始…

12.2内核空间基于SPI总线的OLED驱动

在内核空间编写SPI设备驱动的要点 在SPI总线控制器的设备树节点下增加SPI设备的设备树节点&#xff0c;节点中必须包含 reg 属性、 compatible 属性、 spi-max-frequency 属性&#xff0c; reg 属性用于描述片选索引&#xff0c; compatible属性用于设备和驱动的匹配&#xff…

pyinstaller,一个超酷的 Python 库!

更多Python学习内容&#xff1a;ipengtao.com 大家好&#xff0c;今天为大家分享一个超酷的 Python 库 - pyinstaller。 Github地址&#xff1a;https://github.com/pyinstaller/pyinstaller PyInstaller是一个用于将Python应用程序打包成独立可执行文件的工具。这可以将Python…

Leading Dimension是什么

在LAPACK中频繁出现Leading Dimension&#xff08;中文翻译为“主维度”&#xff09;&#xff0c;那么它是什么呢&#xff1f; 首先了解行主序&#xff08;Row-Major&#xff09;和列主序&#xff08;Column-Major&#xff09;的概念&#xff1a; Given a matrix A of shape …

宝塔nginx部署前端页面刷新报404

问题&#xff1a; 当我们使用脚手架打包前端项目的时候&#xff0c;如果前端项目并没有静态化的配置&#xff0c;如以下 当我们刷新页面&#xff0c;或进行路由配置访问的时候就会报404的错误 原因&#xff1a; 这是因为通常我们做的vue项目属于单页面开发。所以只有index.html…

Cocos 使用VsCode调试-跨域问题

解决方案&#xff1a; 在添加完debug配置后 在项目文件夹中打开vscode然后找到launch.json 这个runtimeArgs参数在原本的配置中是没有的,给他添加上去 "runtimeArgs": ["--disable-web-security" ] 原理: 禁用浏览器跨域检查&#xff08;仅用于调试&…

格密码基础:SIS问题的定义与理解

目录 一. 介绍 二. SIS问题定义 2.1 直观理解 2.2 数学定义 2.3 基本性质 三. SIS与q-ary格 四. SIS问题的推广 五. Hermite标准型 六. 小结 一. 介绍 short interger solution problem短整数解问题&#xff0c;简称SIS问题。 1996年&#xff0c;Ajtai首次提出SIS问…

物联网介绍

阅读引言&#xff1a; 本文从多方面叙述物联网的定义以及在物联网当中的各种通信的介绍。 一、物联网的定义 1.1 通用的定义 物联网&#xff08;Internet of Things&#xff0c;IOT&#xff1b;也称为Web of Things&#xff09;是指通过各种信息传感设 备&#xff0c;如传感器、…

基于51单片机的智能热水器设计

需要全部文件请私信关注我&#xff01;&#xff01;&#xff01; 基于51单片机的智能热水器设计 摘要一、绪论1.1 选题背景及意义1.2 完成目标与功能设计 二、硬件系统设计2.1 硬件完成要求2.2 方案选择2.3 电源电路设计2.4 键盘电路2.5 蜂鸣器报警电路2.6 温度检测电路2.7 红…

Web前端-移动web开发——flex布局

移动web开发——flex布局 1.0传统布局和flex布局对比 1.1传统布局 兼容性好布局繁琐局限性&#xff0c;不能再移动端很好的布局 1.2 flex布局 操作方便&#xff0c;布局极其简单&#xff0c;移动端使用比较广泛pc端浏览器支持情况比较差IE11或更低版本不支持flex或仅支持部…

AWS-SAA-C03认证——之基础知识扫盲

文章目录 前言一、Amazon ECS二、 Amazon EKS三、Amazon EC2四、Elastic Beanstalk五、AWS Fargate六、 AWS Lambda &#xff08;serverless&#xff09;七、Amazon EBS7.1 EBS生命周期 八、Amazon Elastic File System (EFS) -共享文件系统九、什么是 Amazon S3&#xff1f;9.…

wechatpay-java 部署linux报错

ruoyimall部署linux环境报错 报错现象 org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name wechatPayService: Unsatisfied dependency expressed through field service; nested exception is org.springframework.beans.fa…

数据结构排序——计数排序和排序总结(附上912. 排序数组讲解)

数据结构排序——计数排序和排序总结 现在常见算法排序都已讲解完成&#xff0c;今天就再讲个计数排序。再总结一下 文章目录 1.计数排序2.排序总结3.排序oj&#xff08;排序数组&#xff09;题目详情代码思路 1.计数排序 计数排序是一种非基于比较的排序算法&#xff0c;它通…

C#中的反射(Reflection)使用经典案例

文章目录 1. 动态加载和调用类的方法2. 记录用户修改行为3. 调用私有构造函数4. 泛型类型的动态创建和使用5. 动态类型转换与检查6. 获取和设置私有、受保护成员7. 枚举程序集、模块、类型等信息8. 处理泛型类型参数9. 动态生成代码或动态编译10. 配置驱动的应用程序扩展注意事…

CBA业务架构师认证考试含金量

CBA业务架构师认证考试的含金量主要体现在以下几个方面&#x1f447; 1️⃣权威性 &#x1f48e;CBA业务架构师是业务架构师协会提供了一项国际认证计划&#xff0c;该计划可以衡量业务架构师的能力&#xff0c; 并向证明公认的熟练程度的个人授予认证业务架构师(Certified Bus…

第四节课 XTuner 大模型单卡低成本微调实战 作业

文章目录 笔记作业 笔记 XTuner 大模型单卡低成本微调原理&#xff1a;https://blog.csdn.net/m0_49289284/article/details/135532140XTuner 大模型单卡低成本微调实战&#xff1a;https://blog.csdn.net/m0_49289284/article/details/135534817 作业 基础作业&#xff1a;…

限时福利,Adobe InCopy2024下载安装指南

Adobe InCopy 下载链接 https://pan.baidu.com/s/16j5MiXqfGw6puQbgyQnJSQ?pwd0531 #2024版本 1.鼠标右击【InCopy2024(64bit)】压缩包&#xff08;win11及以上系统需先点击“显示更多选项”&#xff09;【解压到 InCopy2024(64bit)】。 2.打开解压后的文件夹&#xff0c;鼠…

codeforces(C++ Summation Game)

题目&#xff1a; 翻译&#xff1a; 思路&#xff1a; 1、将数据从大到小排序 2、用前缀和 3、每次用总和减去2倍的乘-1的数&#xff0c;求最大值 代码&#xff1a; #include <iostream> #include<algorithm> using namespace std;void solve() {int n, k, x;ci…