问题

有时候虚拟机像是 bug 了一样,明明安装了 VMtools,从物理机拖放文件还是会失败:

  1. 如果直接将文件拖进虚拟机会显示 🚫,不妨试试在物理机中将文件复制后粘贴到虚拟机哦(如果还是不行,试试重装 VMtools)
  2. 有时候将文件拖进虚拟机没有显示 🚫,文件也拖放成功了,但文件却并没有出现在对应的文件夹中,当然这就是本文要解决的问题

以物理机往 Ubuntu 虚拟机拖放 CLion 为例:

从物理机拖到Linux虚拟机中的文件消失了1.png

可以看到,虚拟机没有提示 🚫,拖放操作是没有问题的

从物理机拖到Linux虚拟机中的文件消失了2.png

拖放后,物理机开始复制文件到 Ubuntu 虚拟机

从物理机拖到Linux虚拟机中的文件消失了3.png

但是发现复制结束后,桌面上什么都没有,左上角还有个像卡 bug 了一样的白图标


原因

其实,如果在拖放文件到虚拟机的时候没有显示 🚫,并且会有一个 正在将文件 "xxx" 复制到虚拟机 的弹窗,那说明文件是已经成功移到虚拟机了,只是没有移到你想放的文件夹下

VMware Workstation 会将用户拖放到虚拟机的文件存放在一个叫 drag_and_drop 的文件夹内,只需手动操作一下即可


解决

打开主目录,并在主目录里打开终端(或直接 cd ~

ls -a 查看主目录下所有文件:

从物理机拖到Linux虚拟机中的文件消失了4.png

进到名为 .cache 的隐藏文件夹,可以一路 ls -a 查看

进到 ~/.cache/vmware/drag_and_drop 目录下

从物理机拖到Linux虚拟机中的文件消失了5.png

这个目录下有 n 个文件夹,这些文件夹里存放的就是用户从物理机拖到虚拟机里的东西 (一般最左边的就是最近一次拖放的)

从物理机拖到Linux虚拟机中的文件消失了6.png

只需将这里面对应的文件移出去即可

例如我将 CLion 移到主目录下:

mv ./CLion-2022.3.1.tar.gz ~

从物理机拖到Linux虚拟机中的文件消失了7.png

现在查看主目录的文件夹,就能看到你拖到虚拟机里的文件了


定期清理拖放文件

因为每次拖放文件到虚拟机都会在 ~/.cache/vmware/drag_and_drop 目录下生成一个文件,长此以往特别占用虚拟机的空间

所以我们可以定期删除 ~/.cache/vmware/drag_and_drop 目录下的文件:

cd ~/.cache/vmware/drag_and_drop && sudo rm -rf *

对于 Windows 虚拟机:

Win + R 后输入 %temp%
或者,在文件管理器中打开 C:\Users\用户名\AppData\Local\Temp 路径

在打开的 Temp 文件夹中有一个名为 vmware-用户名 的文件夹,里面存放的也是拖放到虚拟机中的文件,可以直接删除


设置共享文件夹

如果往虚拟机中拖放文件、复制文件经常出 bug,也可以通过共享文件夹来向虚拟机传送文件
但是这种方式将物理机和虚拟机联系到了一起,可能会不安全,不太建议使用

首先开启共享文件夹,虚拟机 --> 设置 --> 选项 --> 共享文件夹

从物理机拖到Linux虚拟机中的文件消失了8.png

设置总是启用添加共享文件夹,选择物理机上的一个文件夹,作为物理机和虚拟机的共享文件夹

从物理机拖到Linux虚拟机中的文件消失了9.png

后面的保持默认设置即可

打开终端,输入 vmware-hgfsclient 检测是否设置成功

我设置的共享文件夹名字叫 "ShareFolder"

从物理机拖到Linux虚拟机中的文件消失了10.png

一般来说,Linux 中的共享文件夹在目录 /mnt/hgfs

也可以在如下位置查看:

从物理机拖到Linux虚拟机中的文件消失了11.png

可以通过把文件放在物理机的 ShareFolder 文件夹下,然后 Ubuntu 虚拟机就可以访问到了

如果在目录 /mnt/hgfs 下,还是访问不到你放置的文件,或者 cd /mnt/hgfsls -a 发现什么都没有

将物理机的共享文件夹挂载到目录 /mnt/hgfs 下,在终端输入:

vmhgfs-fuse .host:/ /mnt/hgfs

退出目录,重新进到目录 /mnt/hgfs

即可发现正常访问:

从物理机拖到Linux虚拟机中的文件消失了12.png

从物理机拖到Linux虚拟机中的文件消失了13.png

如果是 Windows 虚拟机,查看共享文件夹就更简单了,可以直接挂载到 "网络" 中,然后进行查看

从物理机拖到Linux虚拟机中的文件消失了14.png