与虚拟机交互文件的3种方式


前言

大家好,我是公众号逻辑熊猫带你玩Python的小编LogicPanda,今天的主题是“与虚拟交互文件的3种方法”。

在我们的学习过程中很多人都选择了使用虚拟机安装Linux操作系统或者是以其他目的安装虚拟系统。这样做有很多好处 比如:

  • 相当于直连,远程登录比较快
  • 可利用Windows的网络直接上网
  • 不影响电脑的正常使用
  • 胡乱搞事情不怕事大

但是,使用虚拟机也存在一些问题,比如,文件的交互。如何把本地的文件送到虚拟机里面?如何把虚拟机里面的东西送到本地?有时候希望调试自己的跨平台代码,或者是下载好的安装包想要送到虚拟机里面该怎么办?

这里呢,小编指出三种利用虚拟机传输文件的方法:

  1. 使用FTP协议
  2. 使用磁盘工具
  3. 使用SMB协议(重点)

使用FTP协议

FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在FTP的使用当中,用户经常遇到两个概念:"下载"(Download)和"上传"(Upload)。"下载"文件就是从远程主机拷贝文件至自己的计算机上;"上传"文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件。

使用FTP协议,需要安装FTP客户端。比如Xftp,FileZilla

也可使用Xshell、MobaXterm等软件的FTP功能。

一般从镜像安装好Linux操作系统,ftp服务是配置好的。如果没有可以使用如下方法配置:

安装vsftpd服务器

sudo apt-get install vsftpd

配置vsftpd.conf文件

sudo vi /etc/vsftpd.conf

需要修改的内容如下:

  1. anonymous_enable = NO # 不允许用户匿名登录
  2. local_root = /home/username/ftp # 置顶ftp上传和下载目录
  3. local_enable = YES # 允许本机登录
  4. chroot_list_enable = YES chroot_list_file = /etc/vsftpd.chroot_list # 允许vsftpd.chroot_list中的用户登录服务器
  5. write_enable = YES # 允许上传文件到服务器
  6. sudo vim /etc/vsftpd.chroot_list # 建立文件添加用户
  7. 将/home/username/ftp减去w权限,即文件夹的拥有者不能拥有写全向
  8. 在/home/username/ftp中建立一个share文件夹
  9. sudo /etc/init.d/vsfftpd restart # 重启服务,使配置生效

PS:SFTP协议

FTP是一种文件传输协议,一般是为了方便数据共享的。包括一个FTP服务器和多个FTP客户端。FTP客户端通过FTP协议在服务器上下载资源。而SFTP协议是在FTP的基础上对数据进行加密,使得传输的数据相对来说更安全。但是这种安全是以牺牲效率为代价的,也就是说SFTP的传输效率比FTP要低(不过现实使用当中,没有发现多大差别)。

使用磁盘工具

比如:DiskGenius,Ext2IFS等工具。

使用DiskGenius需要在虚拟机关机状态下使用。使用方法是:

  • 打开软件
  • 硬盘-->打开虚拟硬盘文件 如:G:VMwareSysU16Ubuntu16.04.vmdk
  • 打开之后,可以复制文件进去出来了。
  • Win10上打开Linux系统虚拟硬盘有些问题。可能需要配置bios。
  • win10上打开windows系统的虚拟硬盘没问题。

SMB协议

SMB(Server Message Block)通信协议是微软(Microsoft)和英特尔(Intel)在1987年制定的协议,主要是作为Microsoft网络的通讯协议。SMB 是在会话层(session layer)和表示层(presentation layer)以及小部分应用层(application layer)的协议。

SMB使用了NetBIOS的应用程序接口 (Application Program Interface,简称API)。另外,它是一个开放性的协议,允许了协议扩展——使得它变得更大而且复杂;大约有65个最上层的作业,而每个作业都超过120个函数,甚至Windows NT也没有全部支持到,最近微软又把 SMB 改名为 CIFS(Common Internet File System),并且加入了许多新的特色。

首先在需要在虚拟机上安装samba软件。

Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。

PS:演示环境为DeepinLinux!

sudo apt-get install smaba smaba-common

创建一个用来交互的目录,比如我:/home/lzc/share

将目录的权限改为777

sudo chmod 777 /home/lzc/share

然后修改samba的配置文件:

sudo vim /etc/samab/smb.conf

在末尾添加如下几行:

[share]
    path = /home/lzc/share # 请用绝对路径
    available = yes
    browsable = yes
    # public = yes # 不需要密码
    writable = yes

给smaba创建账户:

sudo touch /etc/samba/smbpasswd
sudo smbpasswd -a username

重启samba让配置生效:

sudo /etc/init.d/smbd restart

在win下如何访问?

打开资源管理器,在地址栏输入虚拟机的“\”+IP地址,输入账号密码即可,如果不想费事 ,那就将下面内容中的public打开

[share]
    path = /home/lzc/share # 请用绝对路径
    available = yes
    browsable = yes
    public = yes # 不需要密码
    writable = yes

这个时候,打开资源管理器,然后网络,可以看到多出来了一个虚拟机。

"

优质内容筛选与推荐>>
1、【转载】Linux中关于Cache Memory的介绍
2、Linq to SQL删除或清空表的效率问题
3、[转贴]用Hitachi Feature修改小黑硬盘的安静模式
4、Session的高级应用 (部分代码来自书上摘录)
5、Linux的文件权限和目录配置


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号