Files

268 lines
8.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# **文件互通**
做编程开发经常需要将文件在不同的机器之间来回倒腾比如安装了vmware之后经常需要在宿主机Widndows和Ubuntu之间转移文件。
![](images/WEBRESOURCEc0365553cbf46976d46016c7ee3ca7d4image.png)
## **1. 共享文件夹**
使用共享文件来互通win和ubuntu的文件是最简单的方法如下:
- 点击虚拟机设置按钮找到想要共享给虚拟机的文件夹。下图以Downloads文件夹为例将其设置为Windows与Ubuntu的共享文件夹
![](images/WEBRESOURCE87605d40f8f547059d14da7cde016f1astickPicture.png)
- 打开命令终端,输入 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
将文件移动到/binmv mount_hgfs /bin
重启系统后在终端输入命令mount_hgfs 即可将消失的共享文件重新加载
```
## **2. samba文件共享**
samba是Linux下的一款网络磁盘服务在ubuntu安装samba并做好恰当的配置即可在其他系统中方便地访问ubuntu系统的文件。
![](images/WEBRESOURCEe2fd4c540d704f1c9530a4d4ecb9e21estickPicture.png)
**安装 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
![](images/WEBRESOURCE6a19fe5c92be4a82b3da492a6e02d38astickPicture.png)
**注意**
```
gec@ubuntu:~$ sudo chmod 777 /home/gec/shareDir
```
另外注意到Windows 的共享文件夹本质上也是 samba 服务,因此在 Ubuntu 中也可以通过 samba 访问。
![](images/WEBRESOURCEecb316b50a0142919418cf4383305defstickPicture.png)
**在windows中设置共享文件夹**
要想把某个文件夹共享给 ubuntu只需要右键设置指定文件夹的共享属性即可选择“特定用户”在弹出的窗口中选择“Everyone”即可如下图所示
![](images/WEBRESOURCEe544d03066fb43a595fa2645f30b1ea7image.png)
**在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客户端来达到文件互联互通的目的。
![](images/WEBRESOURCE1cfd0409b18343c5aa0e4a742863553dstickPicture.png)
通过 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服务了。
![](images/WEBRESOURCE7295dea05fc1433a8128ebc8ec091265stickPicture.png)
下载 FlashFXP54_3970_Setup.exe7MB
-
-
# 「课堂练习1」
在ubuntu中安装并配置好vsftpd使用一款windows的FTP客户端工具比如winScp跟ubuntu互联互通。
![](images/WEBRESOURCE26ef4b2a78ff2c28a0dacd2f72cd1fceimage.png)
### 使用WinSCP文件传输推荐
在Ubuntu安装ssh服务
```bash
gec@ubuntu:~$ sudo apt install ssh
```
SCP是文件传输中非常常用的命令他可以在Linux和Windows之间传输文件但该命令需要输入复杂的命令行参数因此我们推荐使用图形界面的WinSCP工具。
下载 WinSCP-5.17.10-Setup.exe10MB
-
-
使用 WinSCP 连接 Ubuntu
打开 WinSCP输入ubuntu的IP地址、用户名、密码点击登录按钮即可连接到ubuntu
![](images/WEBRESOURCE911e5cc27c401553aa3ef8b3f7a8d352image.png)
成功连接到远程 Ubuntu 系统:
![](images/WEBRESOURCEe54e5e49800c59dd7043655d8afddc0aimage.png)
使用 WinSCP 传输文件
连接成功后就可以在ubuntu和windows之间传输文件了如下图所示
![](images/WEBRESOURCEabbcafc8a41effea663a62f333e9a737image.png)
## **4. TFTP文件传输**
在开发板与电脑网络互通的情况下采用tftp的方式来传输文件是最高效的一种方式tftp的全称是 tiny FTP可见此工具专用于文件传输其所为tiny意指匿名传输是一种轻量级的FTP工具。
1. 在windows中安装tftp服务器可根据系统实际情况下载对应版本
- tftpd32.zip
- tftpd64.zip
1. 启动tftpd选择准备传送到开发板的文件的所在目录和与开发板联通的网卡
tftpd配置界面
![](images/WEBRESOURCEeab95646301b4b9093879917fcf38fffstickPicture.png)
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
```