
做运维和开发这些年虚拟机几乎是每天都要打交道的东西。装个虚拟机不难难的是虚拟机里头的数据怎么跟宿主机、跟其他虚拟机互通。尤其是刚入门的同学经常在群里问Windows虚拟机里怎么拷贝Linux虚拟机里的文件Linux虚拟机怎么访问Windows的共享目录两个Linux之间怎么传大文件不走U盘这个需求太典型了我决定把虚拟机里Windows-Windows、Linux-Windows、Linux-Linux之间互传资料的三种主流方法从头到尾捋一遍。每种方法我都会给出详细步骤、参数选择和实际踩坑记录最后附上一个我自己常用的排错思路。这篇文章不是那种理论上可以的教程每一步我都实际跑过照着抄基本不会出问题。1. 先搞清楚你在哪个场景下互传方案选型才不会错很多人一上来就问怎么互传文件其实这个问题的答案完全取决于你手头的环境组合。三种场景对应三种不同的推荐方案选错了路径轻则多折腾半小时重则踩到系统兼容性的坑里爬不出来。1.1 Windows-Windows 场景最省心的路径是共享文件夹其次是远程桌面两个 Windows 虚拟机之间传文件本质跟两台物理 Windows 电脑之间互传没有任何区别。你不需要用到任何虚拟化特有的功能直接用 Windows 自己的文件共享机制就行。最常见的做法是设置共享文件夹这个后面会在方案一里细讲。另外一个非常好用的方法容易被忽略两个 Windows 之间直接用远程桌面连接在远程会话里把本地磁盘映射过去然后 CtrlC / CtrlV 直接复制粘贴。这个办法特别适合临时传几个小文件的场景不需要建共享、不需要配权限只要知道对方的 IP、账号、密码就够了。1.2 Linux-Windows 场景最主流的是 SMB 协议但要注意双向差异这个场景最复杂因为涉及两个操作系统的文件系统差异和协议栈差异。Windows 访问 Linux 的文件一般用 SambaSMB 协议的 Linux 实现Linux 访问 Windows 的共享目录直接用 Windows 自带的 SMB 协议挂载。两条路用的是同一套协议但配置方向完全不同很多人在这里被绕晕。还有一条路用 FTPWindows 和 Linux 两边都有现成的 FTP 服务端/客户端配起来也不难。但 FTP 有个天然缺陷传大文件容易中断、断点续传配置麻烦、明文传输安全性差所以我现在基本只用 SMB 方案。1.3 Linux-Linux 场景优先用 SSH 系工具别绕弯路两个 Linux 虚拟机之间互传SSH 是最合理的选择没有之一。Linux 默认都自带 SSH 服务端不需要额外装任何东西用scp或rsync就能完成传输。如果你要传的是一整个目录、大量小文件、或者需要定期同步rsync的增量同步能力是 SMB 和 FTP 完全比不上的。这个场景还有一个特殊玩法我经常用直接在宿主机上给两个 Linux 虚拟机额外挂载同一个虚拟磁盘相当于两块移动硬盘插在两台机器上。这个技巧后面在方案三里详细展开。2. 方案一虚拟机共享文件夹和拖拽复制VMware 系通用最推荐新手这个方案只适用于同一台宿主机上的虚拟机之间互传靠的是虚拟化软件提供的最直接通道。2.1 从宿主机到虚拟机的常规共享怎么配置在 VMware Workstation 里选中虚拟机点编辑虚拟机设置切到选项标签页找到共享文件夹启用后添加一个 Host 目录作为共享根目录。把这个目录映射成一个固定的 Windows 盘符或 Linux 挂载点虚拟机里就能像访问本地磁盘一样访问它了。先说说为什么这个方法最适合新手配置一次、永久生效、双方无需额外服务。Windows 虚拟机里共享文件夹会直接出现在此电脑里名字一般是\\vmware-host\Shared FoldersLinux 虚拟机里共享文件夹默认被自动挂载到/mnt/hgfs/下。这个机制走的是 VMware Tools 提