8.3 KiB
文件互通
做编程开发,经常需要将文件在不同的机器之间来回倒腾,比如安装了vmware之后,经常需要在宿主机(Widndows)和Ubuntu之间转移文件。
1. 共享文件夹
使用共享文件来互通win和ubuntu的文件是最简单的,方法如下:
- 点击虚拟机设置按钮,找到想要共享给虚拟机的文件夹。下图以Downloads文件夹为例,将其设置为Windows与Ubuntu的共享文件夹:
- 打开命令终端,输入 cd /mnt/hgfs 进入共享文件夹,通过命令ls,便可看到Downloads
gec@ubuntu:~$ cd /mnt/hgfs/
gec@ubuntu:/mnt/hgfs$ ls
Downloads
gec@ubuntu:/mnt/hgfs$
- 通过在终端输入不同的命令,就可以在Ubuntu内部操作宿主机的共享文件了。
若重启虚拟机共享文件夹消失可参考博客
在Ubuntu创建一个脚本文件:gnome-text-editor mount_hgfs
将 sudo vmhgfs-fuse .host:/ /mnt/hgfs/ -o allow_other 写入mount_hgfs文件中
ctrl+s保存后关闭软件在终端给文件添加权限:chmod +x mount_hgfs
将文件移动到/bin:mv mount_hgfs /bin
重启系统后在终端输入命令:mount_hgfs 即可将消失的共享文件重新加载
2. samba文件共享
samba是Linux下的一款网络磁盘服务,在ubuntu安装samba,并做好恰当的配置,即可在其他系统中方便地访问ubuntu系统的文件。
安装 samba
gec@ubuntu:~$ sudo apt install samba
配置 samba
gec@ubuntu:~$ sudo vi /etc/samba/smb.conf
# 在上述samba的配置文件的末尾追加如下信息:
# [share] 是 Windows 主机看到的samba文件夹的名称,可以任意修改
# path 是 Ubuntu 主机通过 samba 共享出去的路径
[share]
path=/home/gec/shareDir
browseable=yes
writable=yes
public=yes
available=yes
上述配置文件追加的信息中[share]是对共享文件的重命名,可以随意修改,path就是通过 samba 服务共享出去的目录路径。
重启 samba
配置好smb.conf之后,重新加载配置文件并重启samba服务:
gec@ubuntu:~$ sudo service smbd reload
gec@ubuntu:~$ sudo service smbd restart
连接 samba
以上述配置为例,在网络配置通畅的情况下,在windows系统中可以在运行窗口直接输入ubuntu系统的网络IP来直接访问ubuntu系统中的 /home/gec/shareDir 目录:
访问ubuntu中的samba共享目录(假设ubuntu的IP地址是160)
注意
gec@ubuntu:~$ sudo chmod 777 /home/gec/shareDir
另外注意到,Windows 的共享文件夹本质上也是 samba 服务,因此在 Ubuntu 中也可以通过 samba 访问。
在windows中设置共享文件夹
要想把某个文件夹共享给 ubuntu,只需要右键设置指定文件夹的共享属性即可,选择“特定用户”,在弹出的窗口中选择“Everyone”即可,如下图所示:
在ubuntu中访问共享文件夹
安装 smbclient 工具:
gec@ubuntu:~$ sudo apt install smbclient
查看windows中共享的文件夹:
# 命令格式
gec@ubuntu:~$ smbclient -L windows主机IP -U 用户名%密码
# 例如:
gec@ubuntu:~$ smbclient -L 192.168.90.2 -U Administrator%12345678
Sharename Type Comment
--------- ---- -------
ADMIN$ Disk 远程管理
C$ Disk 默认共享
IPC$ IPC 远程 IPC
Users Disk
xyz Disk
gec@ubuntu:~$
gec@ubuntu:~$
可以看到,上述共享出来的文件夹
挂载windows的共享文件夹分区
# 命令格式:
gec@ubuntu:~$ sudo mount -t cifs -o rw -o username=xxx,password=xxx //windows主机IP/共享文件夹名称 挂载点
# 例如:
gec@ubuntu:~$ sudo mount -t cifs -o rw -o username=Administrator,password=12345678 //192.168.90.2/xyz /opt/
这样,就可以在ubuntu中访问windows的共享文件夹了。CQ2402 (file://Gec-li/cq2402)
3. FTP文件传输
FTP是一种网络协议,在文件传输领域被广泛使用,采用该协议的各种FTP服务端和客户端不胜枚举,例如Linux下的vsftpd服务器,Windows下的FlashXP客户端。
Ubuntu中的 vsftpd 的含义是 very security FTP daemon(即非常安全的FTP服务器),我们可以在ubuntu中配置vsftpd服务端,然后在windows中使用FTP客户端来达到文件互联互通的目的。
通过 FTP 上传下载文件
安装 vsftpd
gec@ubuntu:~$ sudo apt install vsftpd
配置 vsftpd
gec@ubuntu:~$ sudo vi /etc/vsftpd.conf
# 在上述配置文件中,找到 write_enable=YES ,将其前面的井号去掉就可以了
重启 vsftpd
gec@ubuntu:~$ sudo service vsftpd reload
gec@ubuntu:~$ sudo service vsftpd restart
查看运行状态
gec@ubuntu:~$ sudo service vsftpd status
vsftpd.service - vsftpd FTP server
Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2021-06-07 15:31:08 CST; 9s ago
Process: 25797 ExecReload=/bin/kill -HUP $MAINPID (code=exited, status=0/SUCCESS)
Process: 25805 ExecStartPre=/bin/mkdir -p /var/run/vsftpd/empty (code=exited, status=0/SUCCESS)
Main PID: 25806 (vsftpd)
Tasks: 1 (limit: 4631)
CGroup: /system.slice/vsftpd.service
└─25806 /usr/sbin/vsftpd /etc/vsftpd.conf
6月 07 15:31:08 aidevelop-vm systemd[1]: Starting vsftpd FTP server...
6月 07 15:31:08 aidevelop-vm systemd[1]: Started vsftpd FTP server.
gec@ubuntu:~$
// 卸载软件
gec@ubuntu:~$ sudo apt remove --purge vsftpd
注意到,上述输出信息中有active(running)字样,表示ubuntu中的vsftpd已经在正常运行,这时就可以启动windows中的ftp客户端去连接FTP服务了。
下载 FlashFXP54_3970_Setup.exe(7MB):
「课堂练习1」
在ubuntu中安装并配置好vsftpd,使用一款windows的FTP客户端工具(比如winScp)跟ubuntu互联互通。
使用WinSCP文件传输(推荐)
在Ubuntu安装ssh服务
gec@ubuntu:~$ sudo apt install ssh
SCP是文件传输中非常常用的命令,他可以在Linux和Windows之间传输文件,但该命令需要输入复杂的命令行参数,因此我们推荐使用图形界面的WinSCP工具。
下载 WinSCP-5.17.10-Setup.exe(10MB):
使用 WinSCP 连接 Ubuntu
打开 WinSCP,输入ubuntu的IP地址、用户名、密码,点击登录按钮,即可连接到ubuntu:
成功连接到远程 Ubuntu 系统:
使用 WinSCP 传输文件
连接成功后,就可以在ubuntu和windows之间传输文件了,如下图所示:
4. TFTP文件传输
在开发板与电脑网络互通的情况下,采用tftp的方式来传输文件是最高效的一种方式,tftp的全称是 tiny FTP,可见此工具专用于文件传输,其所为tiny意指匿名传输,是一种轻量级的FTP工具。
- 在windows中安装tftp服务器,可根据系统实际情况下载对应版本:
-
tftpd32.zip
-
tftpd64.zip
- 启动tftpd,选择准备传送到开发板的文件的所在目录和与开发板联通的网卡:
tftpd配置界面
- 假设在上述 C:\EFI 文件夹下有文件example.txt,在开发板中可执行如下命令下载该文件:
[root@root:~]# tftp 192.168.9.65 -gr example.txt
- 如果想要将开发板的文件发送到tftpd服务端,命令如下:
[root@root:~]# tftp 192.168.9.65 -pr example.txt












