虚拟机如何共享主机文件?
- 物理机
- 2025-06-11
- 4006
在虚拟机和物理机之间高效共享文件:详细指南
使用虚拟机(VM)时,一个非常常见且重要的需求就是在虚拟机(Guest OS)和宿主机(物理机,Host OS)之间方便地传输和共享文件,无论是安装软件、备份数据,还是协作开发,顺畅的文件交换都至关重要,本文将详细介绍几种主流且安全的文件共享方法,帮助您选择最适合自己场景的方案。
核心原则:安全与便捷
在开始操作之前,请牢记两个关键点:
- 安全性: 不要共享整个系统盘或包含敏感数据的文件夹,仅共享必要的特定文件夹。
- 增强工具: 绝大多数共享方法都需要在虚拟机内安装对应的“增强功能”或“集成工具”(如 VMware Tools, VirtualBox Guest Additions, Hyper-V Integration Services),这些工具不仅提供文件共享功能,还能显著提升虚拟机的整体性能(如显卡、鼠标集成等),请务必先安装它们。
使用“共享文件夹”(推荐 – 最便捷)
这是 VMware Workstation/Player 和 VirtualBox 提供的原生、最直接的文件共享方式,它本质上是在宿主机上指定一个文件夹,然后将其“映射”到虚拟机内部,像一个本地驱动器或网络位置一样访问。
适用场景: VMware Workstation/Player, VirtualBox;需要频繁、快速地在固定位置交换文件。
操作步骤(以 VMware Workstation 为例):
-
安装 VMware Tools:
- 启动您的虚拟机,登录到客户机操作系统(如 Windows 或 Linux)。
- 在 VMware Workstation 菜单栏,点击
虚拟机 (VM)
->安装 VMware Tools
,如果使用 Player,通常是Player
->管理
->安装 VMware Tools
。 - 虚拟机会自动加载一个虚拟光驱(CD/DVD 驱动器),里面包含安装程序。
- 进入虚拟机系统,打开此光驱,运行安装程序(通常是
setup.exe
或.msi
文件),按照提示完成安装,通常需要重启虚拟机。 - (对于 VirtualBox: 类似,菜单为
设备
->安装增强功能
,然后在虚拟机内运行加载的安装程序)。
-
在宿主机设置共享文件夹:
- 确保虚拟机处于运行状态或已关闭状态(在挂起状态可能无法设置)。
- 在 VMware Workstation 中,右键点击左侧列表中的虚拟机 ->
设置
。 - 转到
选项
选项卡 ->共享文件夹
。 - 选择
总是启用
(推荐,这样虚拟机开机即能用)或在下次关机或挂起前启用
。 - 点击右侧的
添加...
按钮。 - 浏览宿主机的文件夹: 选择您想在宿主机上共享给虚拟机的具体文件夹(
D:VM_Shared
)。强烈建议不要共享整个盘符或系统关键目录。 - 命名共享: 给这个共享起一个简短的名字(如
HostShare
),这个名字将在虚拟机内部显示。 - 设置访问权限:
启用此共享
:勾选。只读
:如果虚拟机只需要读取宿主机文件,不需要写入,勾选此项更安全。映射为网络驱动器
(Windows 虚拟机):通常勾选,方便访问。
- 点击
完成
->确定
保存设置。 - (对于 VirtualBox: 在虚拟机运行时,点击菜单
设备
->共享文件夹
->共享文件夹设置
-> 点击右侧的添加按钮(带加号的文件夹图标),后续步骤类似)。
-
在虚拟机内访问共享文件夹:
- Windows 虚拟机:
- 如果设置了“映射为网络驱动器”,打开
此电脑
或文件资源管理器
,通常能在网络位置
下看到一个名为VMware Shared Folders
或VirtualBox Shared Folders
的驱动器,里面就是您命名的共享(如HostShare
)。 - 如果没有自动映射,也可以打开
文件资源管理器
-> 地址栏输入\vmware-hostShared Folders
或\vboxsvr
(VirtualBox) 然后回车,里面会列出所有共享的文件夹。
- 如果设置了“映射为网络驱动器”,打开
- Linux 虚拟机:
- 共享文件夹通常挂载在
/mnt/hgfs
目录下(VMware)或/media/sf_
开头的目录下(VirtualBox,名字与共享名相关),您可能需要手动查看或挂载。 - 打开终端,输入
ls /mnt/hgfs
(VMware) 或ls /media/sf_*
(VirtualBox) 查看共享文件夹,如果看不到,可能需要手动挂载或检查权限(有时需要将您的用户添加到vboxsf
组:sudo usermod -aG vboxsf $USER
,然后重启虚拟机)。
- 共享文件夹通常挂载在
- Windows 虚拟机:
优点: 设置相对简单,性能好(接近本地磁盘速度),使用方便,重启后自动生效。
缺点: 依赖于特定的虚拟机软件和其增强工具;在 Linux 虚拟机中可能需要额外配置权限。
使用网络共享(SMB/CIFS 或 NFS)
这是最通用、跨平台的方法,不依赖于特定的虚拟机软件,它利用宿主机和虚拟机都支持的网络文件共享协议(Windows 常用 SMB/CIFS,Linux 常用 NFS)来实现文件共享,这就像是在局域网中访问另一台电脑的共享文件夹。
适用场景: 任何虚拟机软件(VMware, VirtualBox, Hyper-V 等);任何客户机操作系统(只要支持网络共享协议);需要更灵活、更接近真实网络环境的共享;宿主机和虚拟机能通过网络互相访问。
操作步骤(以宿主机是 Windows,虚拟机是 Windows/Linux 为例):
-
在宿主机上设置共享文件夹:
- 在宿主机(物理机)上,右键点击您想共享的文件夹 ->
属性
。 - 转到
共享
选项卡 -> 点击高级共享
。 - 勾选
共享此文件夹
。 - 可以设置共享名(默认是文件夹名)。
- 点击
权限
-> 添加或设置用户(如Everyone
)的访问权限(读取、更改/完全控制)。注意:为安全起见,建议给特定用户设置权限,避免使用 Everyone 或给予最小必要权限(如只读)。 完成后确定。 - (可选但重要)获取宿主机 IP 地址: 在宿主机上打开命令提示符 (
cmd
),输入ipconfig
,记下连接网络的适配器的IPv4 地址
(如168.1.100
)。
- 在宿主机(物理机)上,右键点击您想共享的文件夹 ->
-
配置虚拟机网络:
- 确保虚拟机的网络连接模式设置为
桥接模式 (Bridged)
或NAT 模式 (NAT)
。- 桥接模式: 虚拟机会获得一个与宿主机同网段的独立 IP 地址,就像局域网中的另一台真实电脑,宿主机和虚拟机可以像两台独立机器一样互相访问。
- NAT 模式: 虚拟机通过宿主机的 IP 地址上网。默认情况下,宿主机可以访问虚拟机,但虚拟机访问宿主机需要额外配置端口转发或宿主机防火墙规则(较复杂)。 对于文件共享,桥接模式通常更简单直接。
- 在虚拟机内,确保网络连接正常(可以上网)。
- 确保虚拟机的网络连接模式设置为
-
在虚拟机内访问宿主机的共享:
- Windows 虚拟机:
- 打开
文件资源管理器
。 - 在地址栏输入
\
+ 宿主机的 IP 地址(\192.168.1.100
)然后回车。 - 可能会提示输入用户名和密码,输入您宿主机 Windows 系统的用户名和密码(即您登录物理机时用的账户)。
- 成功后会看到宿主机上所有共享的文件夹列表,双击进入您需要的共享文件夹即可访问。
- 打开
- Linux 虚拟机:
- 打开文件管理器(如 Nautilus, Dolphin)或使用终端。
- 图形界面: 通常在“网络”或“连接到服务器”的地方,输入
smb://
+ 宿主机的 IP 地址(smb://192.168.1.100
),然后按提示输入宿主机用户名密码。 - 终端挂载:
- 创建挂载点:
sudo mkdir /mnt/host_share
- 挂载共享:
sudo mount -t cifs //192.168.1.100/共享名 /mnt/host_share -o username=宿主机用户名,password=宿主机密码
(将共享名
、宿主机用户名
、宿主机密码
替换为实际值),注意密码明文不安全,可考虑使用凭证文件。
- 创建挂载点:
- (如果宿主机是 Linux 共享 NFS): 宿主机需配置 NFS 服务端并导出目录,虚拟机使用
mount -t nfs 宿主机IP:/共享路径 /本地挂载点
挂载。
- Windows 虚拟机:
优点: 通用性强,不依赖特定虚拟机软件;模拟真实网络环境;方便多台虚拟机或物理机共享。
缺点: 设置相对复杂(尤其是网络配置和权限);速度可能略低于共享文件夹(但通常足够快);需要配置网络和防火墙(确保文件共享端口如 SMB 的 445 开放)。
使用拖放和复制粘贴(简单小文件)
VMware 和 VirtualBox 在安装了增强工具后,通常提供基本的拖放 (Drag-and-Drop) 和复制粘贴 (Copy-Paste) 功能。
适用场景: 传输少量、小体积的文件或文本片段;临时性操作。
操作步骤:
- 确保增强工具已安装并启用相关功能:
- 在 VMware/VirtualBox 的虚拟机设置中(通常在
选项
或常规
->高级
),检查拖放
和复制粘贴
功能是否已启用(通常默认是双向双向
或主机到客户机
/客户机到主机
)。
- 在 VMware/VirtualBox 的虚拟机设置中(通常在
- 使用:
- 拖放: 直接在宿主机桌面/文件夹选中文件,拖拽到虚拟机窗口内(或反之)。
- 复制粘贴: 在宿主机复制文件或文本,在虚拟机内点击鼠标右键选择粘贴(或使用快捷键 Ctrl+V / Cmd+V);反之亦然。
优点: 极其简单直观,适合偶尔传输小文件。
缺点: 对大文件或大量文件传输效率低、不稳定;功能可能受限(如某些 Linux 桌面环境支持不佳);不是严格意义上的“共享”,是单向传输操作。
使用外部存储设备(U盘/移动硬盘)
这是最物理、最独立的方法。
适用场景: 虚拟机软件不支持其他方法;需要离线转移大文件;临时在物理机和其他机器间转移文件。
操作步骤:
- 将 U 盘或移动硬盘插入物理机。
- 在虚拟机软件(如 VMware, VirtualBox)的虚拟机运行时,点击菜单:
- VMware:
虚拟机
->可移动设备
-> 找到您的 USB 设备 ->连接
(断开主机)。 - VirtualBox:
设备
->USB
-> 选择您的 USB 设备。
- VMware:
- 虚拟机操作系统会识别到插入的 USB 设备(可能需要安装驱动),您就可以像在物理机上一样读写 U 盘了。
- 使用完毕后,先在虚拟机内安全弹出设备,再在虚拟机软件菜单中断开连接,最后在物理机上拔下 U 盘。
优点: 完全独立于网络和软件配置;适合大文件传输或物理转移。
缺点: 需要手动插拔设备;在虚拟机软件中切换设备连接状态;不如前几种方法方便快捷。
选择哪种方法?快速参考
方法 | 最佳适用场景 | 优点 | 缺点 |
---|---|---|---|
共享文件夹 | VMware/VirtualBox;需高性能、便捷的固定共享 | 简单、快速、稳定、集成好 | 依赖特定软件和增强工具;Linux权限 |
网络共享 | 任何虚拟机软件/系统;需要通用性或模拟真实网络环境 | 通用、灵活、跨平台 | 配置较复杂;需网络和权限设置 |
拖放/粘贴 | 临时传输小文件或文本 | 极其简单 | 不适合大文件/大量文件;可能不稳定 |
外部设备 | 大文件离线传输;其他方法不可用时 | 独立、物理隔离 | 需要手动操作;不够便捷 |
重要安全提示与最佳实践
- 最小权限原则: 无论是共享文件夹还是网络共享,永远只共享必要的特定文件夹,并设置严格的访问权限(如只读),避免共享整个驱动器或包含系统文件、个人敏感数据的目录。
- 使用强密码: 如果使用网络共享,确保宿主机的用户账户使用强密码。
- 防火墙: 使用网络共享时,确保宿主机和虚拟机的防火墙允许文件共享协议(如 SMB)的通信,在公共网络环境下尤其要谨慎。
- 及时更新: 保持虚拟机软件、增强工具、宿主机操作系统和虚拟机操作系统的更新,以修复安全破绽。
- 备份: 重要文件在共享操作前进行备份,避免误操作导致数据丢失。
- 防干扰: 确保宿主机和虚拟机都安装了有效的防干扰软件,并保持更新,共享的文件可能成为干扰传播的途径。
在虚拟机和物理机之间共享文件有多种可靠的方法,对于 VMware 或 VirtualBox 用户,“共享文件夹”通常是首选,因为它提供了最佳的便捷性和性能集成。网络共享(SMB) 则是最通用、最灵活的选择,适用于各种环境和虚拟机软件,拖放/粘贴适合小文件临时传输,而外部存储设备则提供了物理隔离的解决方案。
选择哪种方法取决于您的具体需求(虚拟机软件、操作系统、文件大小、使用频率、安全要求),遵循本文的步骤和安全建议,您就能安全、高效地在虚拟世界和物理世界之间架起文件传输的桥梁。
引用说明:
- 本文所述方法基于 VMware Workstation/Player、Oracle VM VirtualBox 和 Microsoft Hyper-V 的官方文档及广泛认可的 IT 实践。
- 安全建议参考了网络安全最佳实践(最小权限原则、强密码策略、防火墙配置)。
- 具体的命令行操作参考了 Linux
mount
命令手册页 (man mount
) 和 Samba (smb.conf
) 文档。