云服务器下,与嵌入式板子传递文件的几种方式 |FTP SFTP SCP TFTP NFS | 以及NFS 挂载失败常见问题


注:本文使用的是阿里云,其他云服务器的安全组配置应该大同小异
想一步到位的可以直接看 三、nfs

一、ftp、sftp、scp

三者均为文件传输协议,传递单一文件,需要帐号与密码

1、ftp

命令:

ftp ip
例如:
ftp 192.168.1.1 

使用put上传文件,get下载文件

具体使用方法

2、sftp

命令:

sftp user@ip 
例如:
sftp root@192.168.1.1

同样使用put上传,get下载。不同的是sftp基于ssh,更安全。

3、scp

命令:

上传:scp 本地文件 目标地址:/文件目录

	scp localfile user@ip:/direction
	例如:
	scp temp root@192.168.1.1:/home

下载:scp 目标地址:/文件 本地目录

	scp user@ip:/direction/remotefile localdir/
	例如:
	scp root@192.168.1.1:/home/temp ./

如果远端的ssh的端口号不为22,例如为222 则命令为:

上传:
	 scp -P 222 temp root@192.168.1.1:/home
下载:
	scp -P 222 root@192.168.1.1:/home/temp ./

scp同样是基于ssh的,十分安全。但相比于sftp,需要知道文件的确切位置。


以上三种方法在板子上操作起来都十分不方便,没办法快速的传递多个文件。

二、tftp

玩过Linux嵌入式开发板的对这个协议应该不陌生,许多课程也使用该协议传递文件。
下面介绍如何在Ubuntu 20.04.3上部署

1、下载tftp

sudo apt install tftpd-hpa tftp-hpa
#tftpd-hpa是服务器端
#tftp-hpa 是客户端

2、创建tftp服务器的文件目录

可以在任意地方创建,例如home目录下

mkdir /home/tftpServer
chmod 777 /home/tftpServer #需要修改权限为0777

3、修改配置文件

/etc/default/tftpd-hpa

# /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/home/tftpServer"  #目录与第2步创建的一致
TFTP_ADDRESS=":69"
TFTP_OPTIONS="-l -c -s"


/etc/xinetd.d/tftp

server tftp {
ocket_type      = dgram
protocol        = udp
wait            = yes
user            = root
server          = /usr/sbin/in.tftpd
server_args     = -s /home/tftpServer  -c  #目录与第2步创建的一致
disable         = no							#一定得是no
er_source       = 11
cps             = 100 2
}


4、重启服务器

	sudo /etc/init.d/tftpd-hpa restart 
	sudo /etc/init.d/xinetd reload
	sudo /etc/init.d/xinetd restart

5、云服务器安全组添加端口

在云服务器的安全组中添加如下端口

在这里插入图片描述

6、测试

服务器 在/home/tftpServer 目录下放文件temp

板子使用:
下载:


tftp -g -r remoteFile ip
例如:
tftp -g -r temp 192.168.1.1

上传:

tftp -p -l localFile ip
例如:
tftp -p -l temp 192.168.1.1

三、nfs

这是最推荐的方法,以上的方法,都无法做到多文件互通共享,而nfs是最方便的

板子可通过nfs挂载服务器的一个文件目录到板子的任意目录下(一般为/mnt)

服务器对nfs服务器文件目录做的修改,在板子上可直接看到。而且对于内存空间小的板子来说,可以使用更大的空间存储文件

下面介绍如何在云服务器上使用nfs服务器

1、下载

sudo apt-get install nfs-kernel-server 

2、创建nfs服务器的文件目录

mkdir /home/nfsShare
sudo chmod 777 /home/nfsShare

3、修改配置文件

/etc/exports

添加:

/home/nfsShare *(insecure,rw,sync,no_root_squash,no_subtree_check)

NFS服务需要开启 mountd,nfs,nlockmgr,portmapper,rquotad这5个服务.
其中nfs、portmapper的端口是固定的.
另外 mountd,nlockmgr 服务的端口是随机分配的.
所以需要给mountd,nlockmgr设置固定的端口。

/etc/default/nfs-kernel-server

修改mountd端口

#将mountd 端口号固定为10000
RPCMOUNTDOPTS="--manage-gids --port 10000"

/etc/sysctl.conf

修改 nlockmgr端口

系统控制文件,用于配置系统信息。其中配置的内容对应了 /proc/sys/ 目录下的子目录及文件。

需要使用 sysctl -p 来生效配置。

# nfs 固定nlockmgr端口号
fs.nfs.nlm_udpport=10013
fs.nfs.nlm_tcpport=10013

4、重启服务器

sysctl -p
systemctl restart rpcbind.service
systemctl restart nfs.service
sudo /etc/init.d/nfs-kernel-server restart

5、云服务器安全组添加端口

查看使用的端口号是否为配置的端口号

rpcinfo -p
结果:
   program vers proto   port  service
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper
    100005    1   udp  10000  mountd
    100005    1   tcp  10000  mountd
    100005    2   udp  10000  mountd
    100005    2   tcp  10000  mountd
    100005    3   udp  10000  mountd
    100005    3   tcp  10000  mountd
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100227    3   tcp   2049
    100003    3   udp   2049  nfs
    100227    3   udp   2049
    100021    1   udp  10013  nlockmgr
    100021    3   udp  10013  nlockmgr
    100021    4   udp  10013  nlockmgr
    100021    1   tcp  10013  nlockmgr
    100021    3   tcp  10013  nlockmgr
    100021    4   tcp  10013  nlockmgr

上面打印的所有端口都得开放,不仅只是2049这个端口
在这里插入图片描述


6、测试

在nfs服务器文件目录下,添加文件temp

在板子上执行

mount -t nfs -o nolock  192.168.1.1:/home/nfsShare /mnt -o proto=tcp

可以在板子的/mnt目录下看到temp文件即为成功

四、常见错误

1、mount.nfs: access denied by server while mounting xxx

可能是因为我们设定的固定端口号过大,修改/etc/exports

/home/nfsShare *(insecure,rw,sync,no_root_squash,no_subtree_check)

2、nfs time out xxx

可能是防火墙,关闭防火墙即可

如果是云服务器,则可能是端口未开放,可以看本文第三章的第3节

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ySh_ppp

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值