Ubuntu下的各种文件传输设置
一、文件传输介绍
我们来了解一下各个文件传输协议
- FTP协议
FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。
- NFS服务
NFS(Network File System,网络文件系统) 是由SUN公司研制的UNIX表示层协议,能使使用者访问网络上别处的文件就像在使用自己的计算机一样。NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统中来看,那个远程主机的目录就好像是自己的一个磁盘分区一样,在使用上相当便利。
- SSH服务
SSH(Secure Shell ,安全外壳协议) 为建立在应用层基础上的安全协议。SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行SSH。
- TFTP
TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端口号为69。
二、Ubuntu和 Windows使用FTP服务进行文件
1、开启Ubuntu 下的FTP 服务
执行命令来安装FTP 服务:
sudo apt-get install vsftpd
安装完成以后使用VI 打开/etc/vsftpd.conf进行配置,命令如下:
sudo vi /etc/vsftpd.conf
打开以后vsftpd.conf 文件以后找到如下两行:
local_enable=YES
write_enable=YES
确保上面两行前面没有“#”,有的话就取消掉,完成以后如图所示:
修改完vsftpd.conf 以后保存退出,使用如下命令重启FTP 服务:
sudo /etc/init.d/vsftpd restart
2、Windows 下FTP 客户端安装
Windows 下FTP 客户端我们使用FileZilla,这是个免费的 FTP 客户端软件,可以在 FileZilla官网下载,下载地址如下:https://www.filezilla.cn/download,下载界面如图所示:
下载安装完成后打开FileZilla 软件,界面如图所示:
3、FileZilla 软件设置
Ubuntu 作为FTP 服务器,FileZilla 作为FTP 客户端,客户端肯定要连接到服务器上,打开站点管理器,点击:文件->站点管理器,打开以后如图所示:
点击图中的“New site”按钮来创建站点,新建站点以后就会在“我的站点”下出现新建的这个站点,站点的名称可以自行修改,比如我将新的站点命名为“Ubuntu”。
选中新创建的“Ubuntu”站点,然后对站点的“常规”进行设置,设置如图4.1.7 所示:
点击“连接”按钮,第一次连接可能会弹出提示是否保存密码的对话框,点击确定即可。
连接成功以后如图所示,其中左边就是 Windows 文件目录,右边是 Ubuntu 文件目录,默认进入用户根目录下。但是注意观察在图中Ubuntu 文件目录下的中文目录都是乱码的,这是因为编码方式没有选对,先断开连接,点击:服务器(S)->断开连接,然后打开站点管理器,选中要设置的站点“Ubuntu”,选择“字符集”,设置如图所示:
按照图设置好字符集以后重新连接到 FTP 服务器上,重新链接到 FTP 服务器以后Ubuntu 下的文件目录中文显示就正常了。
三、开启Ubuntu 下的NFS 和SSH 服务
1、NFS 服务开启
先安装并开启Ubuntu 中的NFS 服务,使用如下命令安装NFS 服务:
sudo apt-get install nfs-kernel-server rpcbind
创建一个nfs 文件夹供 nfs 服务器使用,我们将其创建在~/IMX6ULL/
目录下
mkdir nfs
以后我们可以通过网络文件系统来访问nfs 文件夹,要先配置 nfs,使用如下命令打开 nfs 配置文件/etc/exports:
sudo vi /etc/exports
打开/etc/exports 以后在后面添加如下所示内容:
/home/william/IMX6ULL/nfs *(rw,sync,no_root_squash)
其中
/home/william/IMX6ULL/nfs:表示NFS共享目录
*:表示允许所有的网络段访问
rw:表示访问者具有可读写权限
sync: 表示将缓存写入设备中,即同步缓存
no_root_squash:表示访问者具有root权限。
添加完成以后的/etc/exports 如图 4.2.2 所示:
重启NFS 服务,使用命令如下:
sudo /etc/init.d/nfs-kernel-server restart
2、SSH 服务开启
开启Ubuntu 的SSH 服务以后我们就可以在Windwos 下使用终端软件登陆到Ubuntu,比如使用SecureCRT,Ubuntu 下使用如下命令开启SSH 服务:
sudo apt-get install openssh-server
上述命令安装ssh 服务,ssh 的配置文件为/etc/ssh/sshd_config,使用默认配置即可。接着可以通过终端软件登陆到Ubuntu:
如上所示linux终端命令行全部为白色,会经常导致命令与输出内容难以分辨。所以我们可以让主机名和用户名显示颜色。打开用户主目录下的 .bashrc
文件,然后找到force_color_prompt
,将其前面的#
注释符驱动,然后保存退出。
使用source ~/.bashrc
让其起作用,即可看到效果
四、在 Ubuntu 上搭建 TFTP 服务器
tftp 命令的作用和 nfs 命令一样,都是用于通过网络下载东西到 DRAM 中,只是 tftp 命令使用的 TFTP 协议,Ubuntu 主机作为 TFTP 服务器。
安装tftp-hpa 和 tftpd-hpa,命令如下:
sudo apt-get install tftp-hpa tftpd-hpa
和 NFS 一样,TFTP 也需要一个文件夹来存放文件,在用户目录下新建一个目录,命令如下:
mkdir /home/william/IMX6ULL/tftpboot
chmod 777 /home/william/IMX6ULL/tftpboot
这样我就在我的电脑上创建了一个名为 tftpboot 的目录( 文件夹 ) 。注意!我们要给 tftpboot 足够的文件夹权限,否则的话 uboot 不能从tftpboot 文件夹里面下载文件。
最后配置tftp,安装完成以后新建文件/etc/xinetd.d/tftp
,然后在里面输入如下内容,注意其中的server_args
要设置为你创建的文件夹路径
server tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /home/william/IMX6ULL/tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
完了以后启动tftp服务,命令如下:
sudo service tftpd-hpa start
打开 vi /etc/default/tftpd-hpa
文件,将其修改为如下所示内容:
TFTP_DIRECTORY 就是我们上面创建的 tftp 文件夹目录,以后我们就将所有需要通过TFTP 传输的文件都放到这个文件夹里面,并且要给予这些文件相应的权限。
最后输入如下命令, 重启tftp 服务器:
sudo service tftpd-hpa restart
tftp 服务器已经搭建好了,接下来就是使用了。
将 zImage 镜像文件拷贝到 tftpboot 文件夹中,并且给予zImage 相应的权限,命令如下:
chmod 777 zImage
万事俱备,只剩验证了,uboot 中的tftp 命令格式如下:
tftpboot [loadAddress] [[hostIPaddr:]bootfilename]
看起来和 nfs 命令格式一样的,loadAddress 是文件在 DRAM 中的存放地址,[[hostIPaddr:]bootfilename]是要从Ubuntu 中下载的文件。但是和nfs 命令的区别在于,tftp 命令不需要输入文件在Ubuntu 中的完整路径,只需要输入文件名即可。比如我们现在将 tftpboot 文件夹里面的zImage 文件下载到开发板 DRAM 的 0X80800000 地址处,命令如下:
tftp 80800000 zImage
下载过程如图所示:
从图可以看出,zImage 下载成功了,网速为 1.8MibB/s,文件大小为 6777096 字节。
有时候使用 tftp命令从Ubuntu中下载文件的时候会出现如图所示的错误提示:
在图中可以看到“TFTP error: ‘Permission denied’ (0)”这样的错误提示,提示没有权限,出现这个错误一般有两个原因:
- 在Ubuntu 中创建 tftpboot 目录的时候没有给予 tftboot 相应的权限。
- tftpboot 目录中要下载的文件没有给予相应的权限。
针对上述两个问题,使用命令“chmod 777 xxx”来给予权限,其中“xxx”就是要给予权限的文件或文件夹。