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

注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.mzph.cn/news/620917.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

EndNote快速上手

前言&#xff1a;用EndNote主要就是为了方便管理文章引用的文献&#xff0c;所以本篇就是针对EndNote在文章中引用文献需要的技巧&#xff0c;然后本文用的是EndNoteX9。 EndNote快速上手 创建文献资料库创建文献分组导入文献手动输入文件导入在线搜索 修改文献信息去重文献删除…

详解Java之Spring框架中事务管理的艺术

第1章&#xff1a;引言 大家好&#xff0c;我是小黑&#xff0c;咱们今天聊聊Spring框架中的事务管理。不管是开发小型应用还是大型企业级应用&#xff0c;事务管理都是个不可避免的话题。那么&#xff0c;为什么事务管理这么重要呢&#xff1f;假设在银行系统中转账时&#x…

06-微服务OpenFeigh和Sentinel持久化

一、OpenFeign基础应用 1.1 概念 OpenFeign是一种声明式、模板化的HTTP客户端。在Spring Cloud中使用OpenFeign&#xff0c;可以做到使用HTTP请求访问远程服务&#xff0c;就像调用本地方法一样的&#xff0c;开发者完全感知不到这是在调用远程方法&#xff0c;更感知不到在访…

VITS(Conditional Variational Autoencoder with Adversarial Learning)论文解读及实现(一)

此篇为VITS论文解读第一部份 论文地址Conditional Variational Autoencoder with Adversarial Learning for End-to-End Text-to-Speech模型使用了VAE,GAN,FLOW以及transorflomer(文本处理有用到)&#xff0c;即除了未diffusion模型&#xff0c;将生成式模型都融入进来了&#…

064:vue中一维数组的全选、全不选、反选(图文示例)

第061个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下&#xff0c;本专栏提供行之有效的源代码示例和信息点介绍&#xff0c;做到灵活运用。 &#xff08;1&#xff09;提供vue2的一些基本操作&#xff1a;安装、引用&#xff0c;模板使…

DHCP中继【新华三】

理论【DHCP服务器可以对其直连的网段中的pc&#xff0c;分配其IP地址等服务&#xff0c;但是&#xff0c;对于跨网段进行分配IP地址&#xff0c;需要中间有DHCP中继进行传达&#xff0c;由DHCP中继指定DHCP服务器的位置&#xff0c;可以很好的对其跨网段分配IP地址起到指引的作…

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

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

Kubernetes 1.24正式发布,2022年首个大版本更新

介绍 早在 2020 年 12 月&#xff0c;Kubernetes 就宣布弃用 Dockershim。在 Kubernetes 中&#xff0c;dockershim 是一个软件 shim&#xff0c;它允许您将 Docker 引擎用作 Kubernetes 中的容器运行时。 这个版本包含 46 个增强功能&#xff1a;14 个增强功能已经升级到稳定…

【软件测试】学习笔记-设计GUI自动化测试策略

这篇文章从“实战”这个角度展开&#xff0c;探讨实际的大型全球化电商网站的GUI自动化测试如何开展。这场实战&#xff0c;从以下两个方面展开&#xff1a; 测试策略如何设计&#xff1f;这一点&#xff0c;我会根据亲身经历的实际项目&#xff0c;和你探讨GUI测试的分层测试…

Leetcode26——引出c++ vector中erase()的内部原理

erase是对数组中某个元素进行删除的操作&#xff0c;实际的时间复杂度为O(n) 预备知识 数组在内存中是连续存储的&#xff0c;删除某个位置的时候不能直接删除&#xff0c;只能用后序的元素覆盖 以nums数组为例&#xff0c;target为需要删除的目标数据 方法&#xff1a; ①…

codeforces (C++ Satisfying Constraints)

题目&#xff1a; 翻译&#xff1a; 思路&#xff1a; 1、找到最大的下限min 2、找到最小的上限max 3、则max-min1满足1、2约束条件的个数 4、max-min1减去约束条件3的个数&#xff0c;即为最终答案 5、如果min大于max&#xff0c;则结果为0&#xff0c;不存在满足约束条件的数…

【天龙怀旧服】攻略day7

关键字&#xff1a; 新星1.49、金针渡劫、10灵 1】新星&#xff08;苍山破煞&#xff09; 周三周六限定副本&#xff0c;19.00-24.00 通常刷1.49w&#xff0c;刷149点元佑碎金 boss选择通常为狂鬼难度&#xff0c;八风不动即放大不选&#xff0c;第二排第一个也不选&#xf…

RSIC-V“一芯”学习笔记(二)——Linux入门教程

文章目录 一、前言二、Busybox套件三、重要的追踪工具——strace四、Shell五、正则表达式六、重定向&#xff08;多次输入测试时&#xff09;七、一些组合命令八、自动化脚本九、学会查阅十、亲&#xff08;yuan&#xff09;近(li) bai du十一、不要逃避困难十二、重视小问题 一…

Grounding DINO:开放集目标检测,将基于Transformer的检测器DINO与真值预训练相结合

文章目录 背景知识补充CLIP (Contrastive Language-Image Pre-training)&#xff1a;打破文字和图像之间的壁垒DINO(Data-INterpolating Neural Network)&#xff1a;视觉 Transformer 的自监督学习Stable Diffusion&#xff1a;从文本描述中生成详细的图像Open-set Detector开…

【教3妹学编程-算法题】最大频率元素计数

2哥 : 3妹&#xff0c;最近有个电视剧《繁花》非常火&#x1f525;&#xff0c;你听说了吗&#xff1f; 3妹&#xff1a;没有&#xff0c;最近一直在忙着找工作&#xff0c;哪有时间看电视啊 2哥 : 啊&#xff1f;大周末还不休息一下啊&#xff0c;这么辛苦。 3妹&#xff1a;当…

Video接口介绍

屏库 https://m.panelook.cn/index_cn.php Open LDI, open lvds display interface OpenLDI and LVDS是兼容的&#xff0c; 是一种电平 https://www.ti2k.com/178597.html MIPI DSI/Camera crosLink FPD-LINK(Flat panel display link)是National(TI) LVDS技术&#xff0c; …

如何在线生成App:将网页封装成APP

在数字化时代&#xff0c;App已成为我们日常生活中不可或缺的一部分。然而&#xff0c;对于众多企业和个人开发者来说&#xff0c;开发一个原生App既耗时又耗资&#xff0c;尤其当他们已经拥有一个功能完备的网站时。幸运的是&#xff0c;现在有一种方法可以将现有的网页封装成…

k8s node节点加入集群,token过期

1、master01节点执行 kubeadm token create --print-join-command 2、执行命令 kubeadm join 192.168.0.236:16443 --token qucd8q.hsfq4a1afluzaky3 --discovery-token-ca-cert-hash sha256:92175a356db070deb2ddd3823e288e3005a4baeec9b68580dcc11ce4d3767195 3、查看node02…

【含完整代码】Java定时任务之xxl-job[超详细]

前言 个人博客&#xff1a;www.wdcdbd.com 在Java中使用定时任务是一件很常见的事情&#xff0c;比如使用定时任务在什么时间&#xff0c;什么时候&#xff0c;去发布一些信息&#xff0c;或者去查询一些日志等相关的代码。这时&#xff0c;我们就要开发定时任务这中功能来实现…

PyGWalker,一款超级强大的数据分析和数据可视化的工具库

PyGWalker可以有效简化Jupyter笔记本的数据分析和数据可视化工作流程&#xff0c;方法是将panda数据帧转换为Tableau风格的用户界面进行可视化探索。 PyGWalker被命名为“Graphic Walker的Python绑定”的缩写。它集成了Jupyter笔记本&#xff08;或其他基于Jupyter的笔记本&am…