首页>软件资讯>常见问题

常见问题

一键挂载 VMware 共享目录,让虚拟机访问主机文件更简单

发布时间:2025-02-24 19:57:38人气:342



 前言

在使用 VMware 运行 Linux 虚拟机时,如何在虚拟机中访问宿主机的共享文件夹 是许多小伙伴关心的问题。VMware 提供了共享目录功能(Shared Folders),但默认情况下,并不会自动挂载到 Linux 虚拟机上。


今天,给大家分享一个实用的 Bash 脚本 mount_vmware_shared_folders.sh,让你一键挂载共享目录,无缝访问宿主机文件,提升工作效率!


为什么要挂载 VMware 共享目录?

在 Linux 虚拟机中使用 VMware 共享目录,可以带来很多便利: 轻松访问主机文件:无需麻烦地传输文件,直接在虚拟机中操作主机的共享文件夹。 提高文件管理效率:避免频繁使用 scp、rsync 或 U 盘拷贝,减少时间浪费。 适用于开发和调试:共享项目目录,代码在宿主机和虚拟机之间自由切换。


如果你已经开启了 VMware 共享目录功能,但发现 虚拟机中 /mnt/hgfs 目录是空的,那么这个脚本就是你需要的解决方案!


脚本解析:如何一步步挂载共享目录?

 1. 启用严格模式,确保脚本可靠运行

set -euo pipefail

作用:


-e:如果命令失败,脚本会立即退出,避免后续错误。

-u:如果使用了未定义的变量,脚本会报错,避免意外错误。

-o pipefail:确保管道中的所有命令都正确执行,否则脚本会退出。

这样可以确保脚本执行时更加稳定,减少意外情况的发生。


 2. 定义挂载目录

MOUNT_POINT="/mnt/hgfs"

 作用:


VMware 共享目录通常默认挂载到 /mnt/hgfs,但有时需要手动执行挂载。

这个变量定义了共享目录的目标挂载路径,后续命令都会基于它操作。

 3. 检查 vmhgfs-fuse 是否已安装

if ! command -v vmhgfs-fuse &>/dev/null; then

    echo "Error: vmhgfs-fuse 命令未找到,请确保已安装 open-vm-tools" >&2

    exit 1

fi

 作用:


vmhgfs-fuse 是 VMware 提供的 FUSE(用户态文件系统)工具,它负责将共享目录挂载到 Linux 系统中。

这里通过 command -v 检查 vmhgfs-fuse 是否可用,如果未找到,则提示用户需要安装 open-vm-tools,并终止脚本执行。

 如何安装 open-vm-tools?如果你遇到 Error: vmhgfs-fuse 命令未找到,可以运行以下命令安装它:


sudo apt-get update

sudo apt-get install -y open-vm-tools open-vm-tools-desktop

如果你使用的是 CentOS/RHEL,可运行:


sudo yum install -y open-vm-tools open-vm-tools-desktop

安装完成后,重新运行脚本即可!


 4. 创建挂载点(如果不存在)

if [ ! -d "$MOUNT_POINT" ]; then

    echo "创建挂载点 $MOUNT_POINT ..."

    sudo mkdir -p "$MOUNT_POINT"

fi

作用:


如果 /mnt/hgfs 目录不存在,脚本会自动创建它,确保挂载点可用。

mkdir -p 作用:即使目录已存在,也不会报错,避免意外中断。

 5. 检查共享目录是否已经挂载

if mount | grep " on $MOUNT_POINT " &>/dev/null; then

    echo "共享目录已经挂载在 $MOUNT_POINT"

    exit 0

fi

 作用:


通过 mount | grep 判断 /mnt/hgfs 是否已被挂载,如果已挂载,则直接退出,不重复操作。

这样可以避免用户多次执行脚本时重复挂载,提高脚本的健壮性。

 6. 挂载共享目录

echo "正在挂载 VMware 共享目录到 $MOUNT_POINT ..."

sudo vmhgfs-fuse .host:/ "$MOUNT_POINT" -o allow_other

 作用:


vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other

.host:/ 是 VMware 共享目录的标识,它会将所有共享的目录挂载到 /mnt/hgfs。

-o allow_other 允许其他用户访问挂载的共享目录,否则默认只有 root 能访问。

如果共享目录成功挂载,用户就可以在 /mnt/hgfs 看到宿主机的共享文件了!

7. 挂载成功与失败的处理

if [ $? -eq 0 ]; then

    echo "成功挂载 VMware 共享目录。"

else

    echo "挂载失败,请检查 open-vm-tools 是否正确安装或配置。" >&2

    exit 1

fi

 作用:


if [ $? -eq 0 ]; then ...  用于检测上一条命令(挂载命令)的执行状态。

如果成功,则提示用户“挂载成功”;如果失败,则给出可能的错误原因。

 使用方法:一键运行,轻松挂载!

 只需 3 步,即可在 Linux 虚拟机中访问主机共享文件


1️⃣ 下载脚本,并赋予执行权限


chmod +x mount_vmware_shared_folders.sh

2️⃣ 运行脚本(需要 root 权限)


sudo ./mount_vmware_shared_folders.sh

3️⃣ 验证挂载是否成功


ls /mnt/hgfs

如果看到共享目录列表,说明挂载成功! 🎉


遇到问题?这里有解决方案!

 脚本运行后,/mnt/hgfs 仍然为空?可能的原因: 检查 VMware 设置


确保你在 VMware 中 已启用共享文件夹功能(VM > Settings > Shared Folders)。

检查 open-vm-tools 是否正确安装


dpkg -l | grep open-vm-tools

如果没有安装,请参考  3. 检查 vmhgfs-fuse 是否已安装 章节进行安装。


重启虚拟机后再试


sudo reboot

总结:为何这个脚本如此实用?

✅一键挂载,无需手动输入命令✅ 自动检测 VMware 环境,防止误操作✅ 智能检查是否已挂载,避免重复挂载✅ 适用于所有主流 Linux 发行版




适用场景:✅ 你想要在 Linux 虚拟机中访问主机文件? ✅ 共享目录 /mnt/hgfs 没有自动挂载? ✅ 你厌倦了每次都手动挂载? 👉 用这个脚本,一行命令解决问题!



上一条:Redis使用规范

下一条:VMware Workstation Pro虚拟机