赞
踩
当我们使用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(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> 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客户端。
sudo apt install nfs-kernel-server
默认配置文件路径:/etc/exports
当我们需要共享~/Downloads和 ~/Public目录时,我们可以添加以下内容:
/home/root/Downloads/ *(rw,sync,no_root_squash)
/home/root/Public/ *(rw,sync,no_root_squash)
属性解释:
安装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
当nfs服务器安装、配置完成了,我们可以做一些必要的检查验证。
root@ubuntu:~$ showmount -e localhost
Export list for localhost:
/home/root/Public *
/home/root/Downloads *
nfs文件服务器可用于Linux系统之间、Linux与Windows系统之间的文件共享,但是nfs文件系统没有用户权限控制,当我们需要对访问者权限控制时可以用samba服务(企业化应用较多)。
sudo apt-get install samba
默认配置文件路径:/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用户。
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
samba客户端一般部署在windows环境,与nfs文件系统不同,win10默认开启samba客户端。
注:访问到设置了权限的目录时,需要输入对应的用户名、密码。
基于nfs和samba文件服务器,我们也可以共享各种多媒体文件到移动端,但我们也可以基于更专业DLNA协议搭建一个简易的家庭影院。
注:基于创维的电视盒子测试,samba服务器可以找到但无法访问,使用minidlna服务可以流畅访问到服务器端的媒体软件。
sudo apt install minidlna
默认配置文件路径:/etc/minidlna.conf
如果我们想添加共享/media/media目录, 只需要在配置文件添加以下行:
media_dir=/media/media
注1:其他配置项可以保持默认值,也可以根据配置文件中的注解做相应修改。
注2:miniDLNA默认使用8200端口提供web端的状态查看,如果冲突需要在配置文件中修改。
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
Web端测试
通过<server_ip/name>:8200访问miniDLNA服务器,可以查看到服务器的实时状态。
设备端测试
服务端保持运行,使用支持DLNA协议的电视/电视盒子,和服务端连接到同一网络下,在电视/电视盒子“媒体中心”(或其他类似的菜单名)中可以搜索到"minidlna"的共享设备,选择打开便可以访问到共享的媒体文件。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。