vault backup: 2026-01-22 20:19:30
This commit is contained in:
268
Collection/YoudaoyunNotes/01Linux基础/03_文件互通.md
Normal file
268
Collection/YoudaoyunNotes/01Linux基础/03_文件互通.md
Normal file
@@ -0,0 +1,268 @@
|
||||
# **文件互通**
|
||||
|
||||
做编程开发,经常需要将文件在不同的机器之间来回倒腾,比如安装了vmware之后,经常需要在宿主机(Widndows)和Ubuntu之间转移文件。
|
||||
|
||||

|
||||
|
||||
## **1. 共享文件夹**
|
||||
|
||||
使用共享文件来互通win和ubuntu的文件是最简单的,方法如下:
|
||||
|
||||
- 点击虚拟机设置按钮,找到想要共享给虚拟机的文件夹。下图以Downloads文件夹为例,将其设置为Windows与Ubuntu的共享文件夹:
|
||||
|
||||

|
||||
|
||||
- 打开命令终端,输入 cd /mnt/hgfs 进入共享文件夹,通过命令ls,便可看到Downloads
|
||||
|
||||
```bash
|
||||
gec@ubuntu:~$ cd /mnt/hgfs/
|
||||
gec@ubuntu:/mnt/hgfs$ ls
|
||||
Downloads
|
||||
gec@ubuntu:/mnt/hgfs$
|
||||
```
|
||||
|
||||
- 通过在终端输入不同的命令,就可以在Ubuntu内部操作宿主机的共享文件了。
|
||||
|
||||
若重启虚拟机共享文件夹消失可[参考博客](https://blog.csdn.net/gcc110/article/details/134050511?spm=1001.2014.3001.5501)
|
||||
|
||||
```
|
||||
在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**
|
||||
|
||||
```cpp
|
||||
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服务
|
||||
|
||||
```bash
|
||||
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工具。
|
||||
|
||||
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
|
||||
```
|
||||
Reference in New Issue
Block a user