Linux工具-搭建文件服务器_用linux建文件服务器-程序员宅基地

技术标签: 运维  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"的共享设备,选择打开便可以访问到共享的媒体文件。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ftswsfb/article/details/134894187

智能推荐

使用Python将TXT转为Excel_python txt转excel-程序员宅基地

文章浏览阅读7.7k次,点赞5次,收藏37次。使用Python将txt转为excel_python txt转excel

Android最佳架构:MVI + LiveData + ViewModel | ProAndroidDev_android 视图 viewmodel 还原 viewstate-程序员宅基地

文章浏览阅读1.7k次。MVVM和MVI架构模式合并为一个最好的架构,为任何Android项目提供了完美的架构。有太多可用的体系结构模式,每种模式都有其优缺点。所有这些模式都试图实现相同的架构基本原理:1、关注点分离(SoC) :这是一种设计原则,用于将计算机程序分为不同的部分,以便每个部分都可以解决一个单独的关注点。关注点是提供问题解决方案时重要的事情。该原则与面向对象编程的“ 单一责任原则”密切相关,后者 指出..._android 视图 viewmodel 还原 viewstate

OS中关于父子进程的执行顺序和多个子进程之间的执行顺序(整理)_fork父子进程谁先运行-程序员宅基地

文章浏览阅读8.2k次,点赞7次,收藏28次。一、问:1.fork出一个子进程,父子进程执行的先后顺序是不确定的,如果先执行父进程,再执行子进程,父进程中没有wait和sleep。问,是否先把父进程执行完,再执行子进程?还是两个进程是一块执行的?2.如果父进程中有sleep,父进程中的程序执行到sleep进行休眠,转而执行子进程。问:子进程中的程序执行完了再返回父进程中执行,还是休眠时间到了返回父进程中执行,还是其他?答:进程的..._fork父子进程谁先运行

关于服务器部署流程-程序员宅基地

文章浏览阅读8.2k次,点赞3次,收藏27次。服务器部署_服务器部署

opencv 图像上画出目标运动的轨迹_OpenCV视频分析-Meanshift、Camshift&运动轨迹绘制...-程序员宅基地

文章浏览阅读1.9k次。基于均值迁移的对象移动分析(Meanshift)️ ️概述本质:️ Mean Shift均值漂移算法是无参密度估计理论的一种,无参密度估计不需要事先知道对象的任何先验知识,完全依靠训练数据进行估计,并且可以用于任意形状的密度估计,在某一连续点处的密度函数值可由该点邻域中的若干样本点估计得出。直观的理解:️ 一堆点集,一个圆形的窗口在不断的移动,移动的方向是沿着点的密度最大的区域移动,图示如..._通过图像计算目标运动

随便推点

GJB 438C-2021军用软件开发文档通用要求_gjb438c电子版下载-程序员宅基地

文章浏览阅读7.2k次,点赞30次,收藏4次。【lfsc】_gjb438c电子版下载

MySQL | JDBC连接数据库详细教程【全程干货】_mysql jdbc-程序员宅基地

文章浏览阅读1w次,点赞93次,收藏187次。如何使用JDBC连接MySQL数据库详细教程_mysql jdbc

sql优化常用的几种方法:19种最有效的sql优化技巧-程序员宅基地

文章浏览阅读2.4w次,点赞9次,收藏124次。我们来谈谈项目中常用的MySQL优化方法,共19条,具体如下:1、EXPLAIN做MySQL优化,我们要善用EXPLAIN查看SQL执行计划。下面来个简单的示例,标注(1、2、3、4、5)我们要重点关注的数据:MySQL对于IN做了相应的优化,即将IN中的常量全部存储在一个数组里面,而且这个数组是排好序的。但是如果数值较多,产生的消耗也是比较大的。再例如:select id from t where num in(1,2,3) 对于连续的数值,能用between就不要用in了;再或者使用连接来替换。3、SE_sql优化

ubuntu18.04如何安装PCL1.9.1以及遇到的bug_/pcl-1.9.1/common/include/pcl/pclheader.h:38:24: n-程序员宅基地

文章浏览阅读1.4k次,点赞5次,收藏10次。ubuntu18.04如何安装PCL1.9.1以及遇到的bug文章目录ubuntu18.04如何安装PCL1.9.1以及遇到的bug前言一、准备二、安装PCL1.安装依赖库2.从github 下载pcl1.93.编译4.有关centroid_points包的debug5.后记前言提示:系统:ubuntu18.04ROS版本:melodic一、准备系统:ubuntu18.04ROS版本:melodic良好的网络环境:能够访问github二、安装PCL参考链接1:Ubuntu1_/pcl-1.9.1/common/include/pcl/pclheader.h:38:24: note: previous definition o

微信小程序:wx.navigateTo从子页面跳回父页面,页面不刷新的问题_navigateto 跳转再跳回时触发那个生命周期函数-程序员宅基地

文章浏览阅读1.8w次,点赞9次,收藏17次。先简要说说小程序的生命周期: 应用的生命周期:App({…}) 用来注册小程序,指定小程序的生命周期 页面的生命周期:Page({…}) 注册页面,指定页面的生命周期 具体注册函数的内容见小程序官网API其中有三个生命周期函数的触发顺序:onLoad-&gt;onShow-&gt;onReady (页面加载-&gt;页面显示-&gt;页面初次渲染) onLoad和onReady每个页面..._navigateto 跳转再跳回时触发那个生命周期函数

properties出现中文乱码解决方法(万能)_properties中文乱码-程序员宅基地

文章浏览阅读2.5k次。比如在vscode或者txt输入中文格式,在idea使用UTF-8表示,格式可不是真正的UTF-8!默认使用vscode或者txt编辑方式进行编辑,之后在idea进行打开,都会出现格式错误。可到了这一步,中文还是乱码(这一步改成功的网友可自动立场,没改成功的网友继续!至于改动不成功,原因在于文件编写的时候默认格式错误,于是怎么转换都出现问题(,在idea转换为UTF-8,格式可能乱码!正常思维来讲,估计是中文编码有问题,于是我将其改为UTF-8的编码方式。使用txt文件或者vscode文件,打开文件编写。_properties中文乱码