如何在 VirtualBox 中将文件移动到虚拟机:完整指南
无论您是测试应用程序的开发人员、管理隔离环境的系统管理员,还是运行多个操作系统的高级用户,了解如何有效地在主机和 VirtualBox 虚拟机 (VM) 之间传输文件是一项基本技能。在这份综合指南中,我们涵盖了所有可靠的方法 — 从共享文件夹和拖放到 USB 设备和基于网络的传输 — 因此您可以选择最适合您工作流程的方法。
为什么文件传输到 VirtualBox VM 很重要
VirtualBox 创建了一个隔离的计算环境,这正是它的价值所在。但是,这种隔离也意味着您的客户端操作系统无法在没有刻意配置的情况下本地访问您的主机文件系统。有效的文件传输方法弥补了这一差距,允许您:
- 在环境之间共享配置文件、脚本和项目资产
- 在推送到生产环境之前在沙箱操作系统中测试软件部署
- 在不双启动的情况下在 Windows 和 Linux 系统之间移动数据
- 在迁移到 VPS 托管 环境之前原型化服务器配置
让我们详细探索每种方法。
方法 1:使用共享文件夹(推荐)
共享文件夹是在主机和 VirtualBox 客户端操作系统之间进行持续文件交换的最强大和最持久的解决方案。此方法需要在 VM 中安装 VirtualBox Guest Additions。
步骤 1:安装 VirtualBox Guest Additions
在配置共享文件夹之前,请确保在您的 VM 中安装了 Guest Additions:
- 启动您的虚拟机
- 在 VirtualBox 菜单栏中,单击 设备 → 插入 Guest Additions CD 镜像
- 按照客户端操作系统内的屏幕安装程序进行操作
- 安装后重启 VM
步骤 2:在 VirtualBox 设置中配置共享文件夹
- 打开 VirtualBox 并从左侧面板选择目标 VM
- 单击工具栏中的 设置 按钮(齿轮图标)
- 在左侧边栏中导航到 共享文件夹
- 单击 带加号 (+) 的文件夹图标 以添加新的共享文件夹
- 在对话框中:
- 文件夹路径:单击下拉菜单并选择 其他 以浏览到您要共享的主机文件夹
- 文件夹名称:分配一个易于识别的名称(这是客户端操作系统将引用的内容)
- 自动挂载:勾选此框以便在 VM 启动时自动挂载文件夹
- 永久保存:勾选此项以在 VM 会话之间保持共享文件夹
- 单击 确定 以保存
步骤 3:在客户端操作系统内访问共享文件夹
对于 Windows 客户端:
- 打开 文件浏览器
- 在 此电脑 或 网络位置 下查找共享文件夹(它通常显示为带有前缀的映射网络驱动器)
对于 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> 专业提示: 共享文件夹非常适合需要在环境之间持续、实时访问文件的开发工作流程。如果您计划超越本地 VM 进行扩展,请考虑在 带有 cPanel 的 VPS 上部署,以获得完全托管的生产就绪环境。
方法 2:使用拖放
VirtualBox 支持主机和客户端操作系统之间的本机拖放功能,使其成为一次性文件传输的最快选项,无需任何额外配置。
步骤 1:启用拖放
- 打开 VirtualBox 并选择您的 VM
- 单击 设置 → 常规
- 导航到 高级 选项卡
- 找到 拖放 选项并将其设置为以下之一:
- 主机到客户端 — 仅从主机传输文件到 VM
- 客户端到主机 — 仅从 VM 传输文件到主机
- 双向 — 双向传输文件
- 单击 确定 以应用
步骤 2:通过拖放传输文件
- 启动您的虚拟机
- 在您的主机系统上,找到您要传输的文件
- 单击文件并将其直接拖入 VirtualBox VM 窗口
- 释放鼠标按钮 — 文件将被复制到客户端操作系统桌面或当前目录
需要注意的限制
- 拖放对于大文件或某些客户端操作系统配置可能不可靠
- 某些 Linux 发行版可能需要运行其他剪贴板/拖放守护程序进程
- 此方法最适合小型、不频繁的传输,而不是批量数据迁移
方法 3:使用 USB 设备
USB 闪存驱动器和外部硬盘驱动器提供了一种基于硬件的传输方法,独立于网络或文件夹配置。
步骤 1:在 VirtualBox 中启用 USB 控制器
- 打开 VirtualBox,选择您的 VM,然后单击 设置
- 单击左侧边栏中的 USB 选项卡
- 勾选 启用 USB 控制器
- 选择与您的设备匹配的 USB 标准:
- USB 2.0 (EHCI) — 用于标准闪存驱动器
- USB 3.0 (xHCI) — 用于更快的 USB 3.0 设备(需要 VirtualBox 扩展包)
- 单击 添加 USB 筛选器 按钮(带有 USB 符号的加号图标)并从列表中选择您连接的 USB 设备
- 单击 确定 以保存
> 注意: USB 3.0 支持需要免费的 VirtualBox 扩展包,该扩展包必须与您的 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 (Linux) 上安装 SSH 服务器:
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/使用 FileZilla 等 GUI 客户端通过 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 剪贴板传输小文本/数据
对于小文本片段、配置值或命令,共享剪贴板功能是最快的选项。
启用共享剪贴板
- 转到 设置 → 常规 → 高级
- 将 共享剪贴板 设置为 双向
- 启动 VM 并在主机和客户端之间使用标准复制粘贴 (Ctrl+C / Ctrl+V)
这对于复制 SSH 密钥、环境变量或短脚本特别有用,无需创建文件传输工作流程。
比较所有文件传输方法
| 方法 | 最适合 | 需要 Guest Additions | 速度 | 复杂性 |
|---|---|---|---|---|
| 共享文件夹 | 持续、持久访问 | 是 | 快速 | 低 |
| 拖放 | 快速、一次性传输 | 是 | 中等 | 非常低 |
| USB 设备 | 大文件、离线传输 | 否 | 快速 | 低 |
| SCP / SFTP | 安全、脚本化传输 | 否 | 快速 | 中等 |
| Samba | Windows 兼容共享 | 否 | 中等 | 中等 |
| 共享剪贴板 | 仅文本/小数据 | 是 | 即时 | 非常低 |
排查常见问题
共享文件夹在 Linux 客户端中不可见
- 确认 Guest Additions 已安装且为最新版本
- 将用户添加到
vboxsf组:sudo usermod -aG vboxsf $USER - 在组更改后重启 VM
拖放不起作用
- 在 VM 内重新安装 Guest Additions
- 确保 VirtualBox 进程在主机上具有足够的权限
- 尝试在 Linux 客户端内重启
VBoxClient服务:
VBoxClient --draganddropUSB 设备未检测到
- 安装 VirtualBox 扩展包(USB 2.0/3.0 需要)
- 在 Linux 主机上,将您的用户添加到
vboxusers组:
sudo usermod -aG vboxusers $USER网络传输失败
- 使用
ip addr(Linux) 或ipconfig(Windows) 验证 VM 的 IP 地址
