如何在 VirtualBox 中将文件移动到虚拟机:完整指南
无论你是测试应用程序的开发人员、管理隔离环境的系统管理员,还是运行多个操作系统的高级用户,了解如何高效地在主机和VirtualBox虚拟机(VM)之间传输文件都是一项必不可少的技能。在这份综合指南中,我们涵盖了所有可靠的方法——从共享文件夹和拖放到USB设备和基于网络的传输——这样你就可以选择最适合你工作流程的方法。
为什么文件传输到 VirtualBox 虚拟机很重要
VirtualBox 创建了一个隔离的计算环境,这正是它的价值所在。但是,这种隔离也意味着您的客户操作系统无法在没有刻意配置的情况下本地访问您的主机文件系统。高效的文件传输方法弥补了这一差距,允许您:
- 在环境之间共享配置文件、脚本和项目资产
- 在沙箱操作系统中测试软件部署,然后再推送到生产环境
- 在 Windows 和 Linux 系统之间移动数据,无需双启动
- 在迁移到 VPS 托管环境之前原型化服务器配置
让我们详细探讨每种方法。
方法 1:使用共享文件夹(推荐)
共享文件夹是在主机和 VirtualBox 虚拟机之间进行持续文件交换的最强大和最持久的解决方案。此方法需要在虚拟机内安装 VirtualBox Guest Additions。
步骤 1:安装 VirtualBox Guest Additions
在配置共享文件夹之前,请确保在虚拟机中安装了 Guest Additions:
- 启动虚拟机
- 在 VirtualBox 菜单栏中,单击设备 → 插入 Guest Additions CD 镜像
- 按照虚拟机内的屏幕安装程序进行操作
- 安装后重启虚拟机
步骤 2:在 VirtualBox 设置中配置共享文件夹
- 打开 VirtualBox 并从左侧面板选择目标虚拟机
- 单击工具栏中的设置按钮(齿轮图标)
- 在左侧边栏中导航到共享文件夹
- 单击带加号 (+) 的文件夹图标以添加新的共享文件夹
- 在对话框中:
- 文件夹路径:单击下拉菜单并选择其他以浏览要共享的主机文件夹
- 文件夹名称:分配一个易于识别的名称(这是虚拟机将引用的名称)
- 自动挂载:勾选此框以便在虚拟机启动时自动挂载文件夹
- 永久保存:勾选此项以在虚拟机会话之间保持共享文件夹
- 单击确定保存
步骤 3:在虚拟机内访问共享文件夹
对于 Windows 虚拟机:
- 打开文件资源管理器
- 在此电脑或网络位置下查找共享文件夹(通常显示为带有前缀
vboxsvr的映射网络驱动器)
对于 Linux 虚拟机:
共享文件夹自动挂载在:
/media/sf_<folder_name>如果收到”权限被拒绝”错误,需要将用户账户添加到 vboxsf 组:
sudo usermod -aG vboxsf your_username注销并重新登录以使组更改生效。您可以通过以下方式验证:
groups your_username手动挂载 (Linux):
如果未启用自动挂载,您可以手动挂载文件夹:
sudo mount -t vboxsf shared_folder_name /mnt/shared> 专业提示:共享文件夹非常适合需要在不同环境之间持续实时访问文件的开发工作流。如果您计划超越本地虚拟机进行扩展,请考虑在带有 cPanel 的 VPS 上部署,以获得完全托管的生产就绪环境。
方法 2:使用拖放
VirtualBox 支持主机和客户 OS 之间的原生拖放功能,这是无需任何额外配置的一次性文件传输的最快选项。
步骤 1:启用拖放
- 打开 VirtualBox 并选择您的 VM
- 点击 Settings → General
- 导航到 Advanced 选项卡
- 找到 Drag'n'Drop 选项并将其设置为以下之一:
- Host to Guest — 仅从主机向 VM 传输文件
- Guest to Host — 仅从 VM 向主机传输文件
- Bidirectional — 双向传输文件
- 点击 OK 应用
步骤 2:通过拖放传输文件
- 启动您的虚拟机
- 在主机系统上,找到您要传输的文件
- 点击并将文件直接拖入 VirtualBox VM 窗口
- 释放鼠标按钮 — 文件将被复制到客户 OS 桌面或当前目录
需要注意的限制
- 拖放在处理大文件或某些客户 OS 配置时可能不可靠
- 某些 Linux 发行版可能需要运行额外的剪贴板/拖放守护程序
- 此方法最适合小型、不频繁的传输,而不是大量数据迁移
方法 3:使用 USB 设备
USB 闪存驱动器和外部硬盘提供了一种基于硬件的传输方法,独立于网络或文件夹配置。
步骤 1:在 VirtualBox 中启用 USB 控制器
- 打开 VirtualBox,选择您的 VM,然后点击设置
- 点击左侧边栏中的USB选项卡
- 勾选启用 USB 控制器
- 选择与您的设备匹配的 USB 标准:
- USB 2.0 (EHCI) — 用于标准闪存驱动器
- USB 3.0 (xHCI) — 用于更快的 USB 3.0 设备(需要 VirtualBox Extension Pack)
- 点击添加 USB 筛选器按钮(带有 USB 符号的加号图标),然后从列表中选择您连接的 USB 设备
- 点击确定保存
> 注意:USB 3.0 支持需要免费的 VirtualBox Extension Pack,它必须与您的 VirtualBox 版本匹配。从官方 VirtualBox 网站下载。
步骤 2:在客户操作系统中访问 USB 设备
- 将 USB 设备连接到主机
- 启动 VM(或者,如果已在运行,请转到设备 → USB 并选择您的设备以附加它)
- 在客户操作系统内:
- Windows 客户机:USB 驱动器将在文件资源管理器的此电脑下显示
- Linux 客户机:设备可能会自动挂载,或者您可以手动挂载:
sudo mkdir /mnt/usb
sudo mount /dev/sdb1 /mnt/usb将 /dev/sdb1 替换为实际的设备标识符(使用 lsblk 来识别它)。
方法 4:基于网络的文件传输
如果您的主机和 VM 在同一网络上——或可以通过 IP 相互访问——网络传输方法为移动文件提供了强大的、可扩展的选项,特别是对于大型数据集。
步骤 1:配置网络适配器
- 打开 VirtualBox,选择您的 VM,然后转到设置 → 网络
- 选择适当的适配器模式:
- 桥接适配器:VM 在您的本地网络上获得自己的 IP——最适合直接主机到 VM 的通信
- NAT 与端口转发:VM 共享主机的 IP;需要端口转发规则来处理入站连接
- 仅主机适配器:仅在主机和 VM 之间创建私有网络
步骤 2:使用网络协议传输文件
选项 A:SCP / SFTP(安全文件传输)
SCP 和 SFTP 是通过网络传输文件最安全和最广泛使用的方法,特别是在使用 Linux VM 时。
在 VM 上安装 SSH 服务器 (Linux):
sudo apt update && sudo apt install openssh-server -y
sudo systemctl enable ssh
sudo systemctl start ssh使用 SCP 从主机向 VM 传输文件:
scp /path/to/local/file.txt username@vm_ip_address:/path/to/destination/使用 GUI 客户端(如 FileZilla)通过 SFTP 连接:
- 主机:VM 的 IP 地址
- 协议:SFTP
- 端口:22
- 用户名/密码:VM 凭证
选项 B:Samba 文件共享(Windows 兼容共享)
当您需要从 Windows 和 Linux VM 都可以访问的 Windows 风格网络共享时,Samba 是理想的选择。
在 Linux 主机上安装 Samba:
sudo apt install samba -y在 /etc/samba/smb.conf 中配置共享:
[SharedFiles]
path = /home/username/shared
browseable = yes
read only = no
guest ok = yes重启 Samba:
sudo systemctl restart smbd通过在 Windows 文件浏览器中导航到 host_ipSharedFiles 从 VM 访问共享,或在 Linux 中挂载它:
sudo mount -t cifs //host_ip/SharedFiles /mnt/samba -o guest选项 C:FTP 服务器
对于无需 SSH 的快速传输,您可以在主机上设置轻量级 FTP 服务器,并在 VM 内使用 FTP 客户端。
sudo apt install vsftpd -y
sudo systemctl start vsftpd> 安全说明:始终优先使用 SFTP 或 SCP 而不是普通 FTP,因为 FTP 以明文形式传输凭证。对于生产环境,请考虑升级到具有适当网络隔离和防火墙规则的专用服务器。
方法 5:使用 VirtualBox 剪贴板传输小文本/数据
对于小段文本、配置值或命令,共享剪贴板功能是最快的选择。
启用共享剪贴板
- 转到 设置 → 常规 → 高级
- 将 共享剪贴板 设置为 双向
- 启动虚拟机并在主机和客户机之间使用标准复制粘贴(Ctrl+C / Ctrl+V)
这对于复制 SSH 密钥、环境变量或短脚本特别有用,无需创建文件传输工作流。
比较所有文件传输方法
| 方法 | 最适合 | 需要 Guest Additions | 速度 | 复杂性 |
|---|---|---|---|---|
| 共享文件夹 | 持续、持久访问 | 是 | 快速 | 低 |
| 拖放 | 快速、一次性传输 | 是 | 中等 | 非常低 |
| USB 设备 | 大文件、离线传输 | 否 | 快速 | 低 |
| SCP / SFTP | 安全、脚本化传输 | 否 | 快速 | 中等 |
| Samba | Windows 兼容共享 | 否 | 中等 | 中等 |
| 共享剪贴板 | 仅限文本/小数据 | 是 | 即时 | 非常低 |
故障排除常见问题
Linux 虚拟机中看不到共享文件夹
- 确认已安装 Guest Additions 并且是最新版本
- 将用户添加到
vboxsf组:sudo usermod -aG vboxsf $USER - 更改组后重启虚拟机
拖放功能不工作
- 在虚拟机内重新安装 Guest Additions
- 确保 VirtualBox 进程在主机上有足够的权限
- 尝试在 Linux 虚拟机内重启
VBoxClient服务:
VBoxClient --draganddropUSB 设备未被检测到
- 安装 VirtualBox Extension Pack(USB 2.0/3.0 必需)
- 在 Linux 主机上,将用户添加到
vboxusers组:
sudo usermod -aG vboxusers $USER网络传输失败
- 使用
ip addr(Linux)或ipconfig(Windows)验证虚拟机的 IP 地址 - 检查主机和虚拟机上的防火墙规则
- 确保选择了正确的网络适配器模式(桥接模式对直接通信最可靠)
超越 VirtualBox:何时迁移到真实服务器
VirtualBox 是一个用于本地开发和测试的优秀工具,但它存在固有的局限性——它依赖于您的物理硬件、缺乏冗余性,并且在没有额外配置的情况下无法远程访问。当您的项目超出本地虚拟化的范围时,是时候考虑云或专用基础设施了。
AlexHost 提供一系列托管解决方案,以满足您项目的每个阶段:
- VPS 托管 — 具有完全 root 访问权限的可扩展虚拟专用服务器,非常适合从本地 VM 迁移到生产环境的开发人员
- 专用服务器 — 用于资源密集型工作负载的裸机性能
- 共享网络托管 — 为网站和小型应用程序提供经济高效的托管
- 域名注册 — 与您的托管基础设施一起保护您的域名
- SSL 证书 — 使用受信任的 SSL/TLS 加密保护您的网络应用程序
结论
一旦您了解了可用的方法及其各自的权衡,将文件传输到VirtualBox虚拟机就很简单了。以下是快速总结:
- 使用共享文件夹用于主机和客户机之间的持久、高频文件访问
- 使用拖放
- 使用USB设备当网络访问不可用或用于大文件传输时
- 使用SCP/SFTP或Samba用于安全的基于网络的传输——特别是在多VM或团队环境中
- 使用共享剪贴板用于即时复制文本和小数据片段
掌握这些技术将显著改进您的虚拟化工作流程。当您准备好从本地VM迁移到真实服务器环境时,AlexHost的VPS托管和VPS控制面板提供了完美的下一步——为您提供专用环境的强大功能和云的灵活性。
