Files
BlogPosts/YueQian/MarkdownNotes/CQ2605/01Linux基础/03_文件互通.md
2026-01-22 20:10:59 +08:00

8.3 KiB
Raw Blame History

文件互通

做编程开发经常需要将文件在不同的机器之间来回倒腾比如安装了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
将文件移动到/binmv   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.exe7MB

「课堂练习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.exe10MB

使用 WinSCP 连接 Ubuntu

打开 WinSCP输入ubuntu的IP地址、用户名、密码点击登录按钮即可连接到ubuntu

成功连接到远程 Ubuntu 系统:

使用 WinSCP 传输文件

连接成功后就可以在ubuntu和windows之间传输文件了如下图所示

4. TFTP文件传输

在开发板与电脑网络互通的情况下采用tftp的方式来传输文件是最高效的一种方式tftp的全称是 tiny FTP可见此工具专用于文件传输其所为tiny意指匿名传输是一种轻量级的FTP工具。

  1. 在windows中安装tftp服务器可根据系统实际情况下载对应版本
  • tftpd32.zip

  • tftpd64.zip

  1. 启动tftpd选择准备传送到开发板的文件的所在目录和与开发板联通的网卡

tftpd配置界面

  1. 假设在上述 C:\EFI 文件夹下有文件example.txt在开发板中可执行如下命令下载该文件
[root@root:~]# tftp 192.168.9.65 -gr example.txt
  1. 如果想要将开发板的文件发送到tftpd服务端命令如下
[root@root:~]# tftp 192.168.9.65 -pr example.txt