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 orfilesystem 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 directoriespath = /media/mediapublic = yesbrowseable = yeswritable = yesguest ok = yes
[camera]comment = camare directoriespath = /media/camerapublic = yesbrowseable = yeswritable = yesguest ok = no
注:其他配置项可以保持默认值,也可以参考配置文件中的注解做相应修改。
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"的共享设备,选择打开便可以访问到共享的媒体文件。
相关文章:
Linux工具-搭建文件服务器
当我们使用linux系统作为开发环境时,经常需要在Linux系统之间、Linux和Windows之间传输文件。 对少量文件进行传输时,可以使用scp工具在两台主机之间实现文件传输: rootubuntu:~$ ssh --help unknown option -- - usage: ssh [-46AaCfGgKkMN…...
深入理解@DubboReference与@DubboService【三】
欢迎来到我的博客,代码的世界里,每一行都是一个故事 探索Dubbo的核心:深入理解DubboReference与DubboService【三】 前言DubboService注解基本概念使用示例高级特性 DubboReference注解基本概念使用示例服务调用流程 最佳实践注解的最佳使用方…...
linux主机的免密登录
实现linux主机之间的相互免密登录 在进行远程登录的时,服务器和主机间进行认证阶段分为: 基于口令认证(不安全,易被抓包拦截获取) 客户机连接服务器时,服务器将自己的公钥返回给客户机 客户机会将服务器的…...
Git常用命令和QA(网摘)
主要内容 常用命令git checkout --orphan 分支与 git checkout -b 分支区别git如何创建一个新的空白分支branchgit开发分支本地分支合并远程分支git remote prune origingit log如何退出?如何退出git log或git commit模式git log如何退出git commit 的退出 git强制p…...
PHP AES 加密示例
PHP中实现AES加密的一个基本示例涉及到使用openssl_encrypt函数。这个函数允许你使用不同的加密算法,包括AES。下面是一个简单的示例,展示了如何使用AES加密一个字符串。 首先,你需要确定几个关键的参数: 数据(Data&…...
第十九章:特殊工具与技术
第十九章:特殊工具与技术 对于很多程序员来说,他们很少会用到本章的介绍的内容。 一.控制内存分配 我们能够重载new和delete,但其实不是对new和delete的重载,只是对new和delete操作符后面的函数进行重载。 当我们使用一条new表…...
大数据深度学习卷积神经网络CNN:CNN结构、训练与优化一文全解
文章目录 大数据深度学习卷积神经网络CNN:CNN结构、训练与优化一文全解一、引言1.1 背景和重要性1.2 卷积神经网络概述 二、卷积神经网络层介绍2.1 卷积操作卷积核与特征映射卷积核大小多通道卷积 步长与填充步长填充 空洞卷积(Dilated Convolution&…...
RabbitMQ(九)死信队列
目录 一、简介1.1 定义1.2 何时进入死信队列?1.3 死信消息的变化1.4 死信队列的应用场景1.5 死信消息的生命周期 二、代码实现2.1 死信队列的配置步骤2.2 配置类2.3 配置文件2.4 生产者2.5 业务消费者2.6 死信消费者2.7 测试结果 三、总结四、补充4.1 启动报错 ineq…...
KEI5许可证没到期,编译却出现Error: C9555E: Failed to check out a license.问题解决
一、编译出现如下报错 二、检查一下许可证 三、许可证在许可日期内,故应该不是许可证的问题 四、检查一下编译器,我用的是这个,这几个编译器的区别其实我不太明白,但我把问题解决是选的这个 五、找到编译器的路径,去复…...
南京观海微电子----时序图绘制工具
Wavedrom 是一款功能强大且简单易用的文本转图表工具,被广泛应用于生成时序图、波形图等交互式波形。其特点在于使用简单的文本语法,使得开发人员能够以可视化的方式表示数字信号和时间序列数据。Wavedrom 的优势在于其高度灵活性和可扩展性,…...
Gin CORS 跨域请求资源共享与中间件
Gin CORS 跨域请求资源共享与中间件 文章目录 Gin CORS 跨域请求资源共享与中间件一、同源策略1.1 什么是浏览器的同源策略?1.2 同源策略判依据1.3 跨域问题三种解决方案 二、CORS:跨域资源共享简介(后端技术)三 CORS基本流程1.CORS请求分类2.基本流程 四、CORS两种…...
TS:.d.ts 文件 和 declare 的作用
1 declare 做外部声明1.1 声明外部类型1.2 声明外部模块1.2.1 解决引入资源模块报错1.2.2 跳过对第三方库的类型检查 1.3 声明外部变量1.4 声明外部命名空间(作用域) 2 .d.ts 文件做外部声明3 declare global {} 在模块中做外部声明 先说一下我对 .d.ts文…...
JavaScript-jQuery2-笔记
1.获取元素文本、属性、内部结构、表单中的值 获取标签中所夹的文本内容:text() 获取标签的属性值:prop(属性名) 获取表单元素的内容:如 文本框中的内容 val() 获取元素的内部html结构:html() 2.筛选选择器 筛选选择器࿱…...
设计模式之多线程版本的if------Balking模式
系列文章目录 设计模式之避免共享的设计模式Immutability(不变性)模式 设计模式之并发特定场景下的设计模式 Two-phase Termination(两阶段终止)模式 设计模式之避免共享的设计模式Copy-on-Write模式 设计模式之避免共享的设计模…...
mybatis核心配置文件介绍
mybatis核心配置文件 1. properties配置介绍 properties标签:加载外部的资源配置文件 属性:resource 指定要引入的配置文件路径 在核心配置文件中,通过:${key}方式引入外部配置文件的数据 jdbc.peroperties 的文件内容…...
Linux完全卸载Anaconda3和MiniConda3
如何安装Anaconda3和MiniConda3请看这篇文章: 安装Anaconda3和MiniConda3_minianaconda3-CSDN博客文章浏览阅读474次。MiniConda3官方版是一款优秀的Python环境管理软件。MiniConda3最新版只包含conda及其依赖项如果您更愿意拥有conda以及超过720个开源软件包&…...
Apache Answer,最好的开源问答系统
Apache Answer是一款适合任何团队的问答平台软件。无论是社区论坛、帮助中心还是知识管理平台,你可以永远信赖 Answer。 目前该项目在github超过10K星,系统采用go语言开发,安装配置简单,界面清洁易用,且开源免费。项目…...
【C】内存分配
首先,回顾一下内存分配。所有程序都必须预留足够的内存来存储程序使用的数据。这些内存中有些是自动分配的: float x; int place[100]; 这些声明预留了足够的空间,还为内存提供了一个标识符,可以使用x或place识别数据。 1、mal…...
MySQL 从零开始:03 基本入门语句
文章目录 1、连接数据库1.1 命令提示符登陆1.2 MySQL 8.0 Command Line Client 登陆1.3 MySQL Workbench 登陆 2、基本语句2.1 查看所有库2.2 创建库2.3 删除库2.4 选择数据库2.5 查看表2.6 创建表2.7 删除表2.8 改表名2.9 清空表 在上一小节中介绍了 MySQL 数据库的安装&#…...
井盖异动传感器,守护脚下安全
随着城市化进程的加速,城市基础设施的安全问题日益受到关注。其中,井盖作为城市地下管道的重要入口,其安全问题不容忽视。然而,传统的井盖监控方式往往存在盲区,无法及时发现井盖的异常移动。为此,我们推出…...
地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...
04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
第7篇:中间件全链路监控与 SQL 性能分析实践
7.1 章节导读 在构建数据库中间件的过程中,可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中,必须做到: 🔍 追踪每一条 SQL 的生命周期(从入口到数据库执行)&#…...
日常一水C
多态 言简意赅:就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过,当子类和父类的函数名相同时,会隐藏父类的同名函数转而调用子类的同名函数,如果要调用父类的同名函数,那么就需要对父类进行引用&#…...
LangFlow技术架构分析
🔧 LangFlow 的可视化技术栈 前端节点编辑器 底层框架:基于 (一个现代化的 React 节点绘图库) 功能: 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...
AD学习(3)
1 PCB封装元素组成及简单的PCB封装创建 封装的组成部分: (1)PCB焊盘:表层的铜 ,top层的铜 (2)管脚序号:用来关联原理图中的管脚的序号,原理图的序号需要和PCB封装一一…...
【大模型】RankRAG:基于大模型的上下文排序与检索增强生成的统一框架
文章目录 A 论文出处B 背景B.1 背景介绍B.2 问题提出B.3 创新点 C 模型结构C.1 指令微调阶段C.2 排名与生成的总和指令微调阶段C.3 RankRAG推理:检索-重排-生成 D 实验设计E 个人总结 A 论文出处 论文题目:RankRAG:Unifying Context Ranking…...
