VMware虚拟机(以Ubuntu为例)的共享文件夹挂载操作

一、挂载前的前提准备

得先把基础条件搭好,不然挂载会失败:

  1. 安装VMware工具 (虚拟机和宿主机的"连接器")
    打开终端,执行命令安装:

    bash 复制代码
    sudo apt update && sudo apt install open-vm-tools open-vm-tools-desktop
  2. 宿主机开启共享文件夹

    • 打开VMware软件,选中当前虚拟机→点击「虚拟机设置」
    • 切换到「选项」标签→选择「共享文件夹」
    • 点击「添加」→选择你要共享的宿主机目录→勾选「启用此共享」

二、手动临时挂载(重启后失效)

适合临时用,步骤如下:

  1. 创建挂载点目录 (如果/mnt/hgfs不存在):

    bash 复制代码
    sudo mkdir -p /mnt/hgfs
  2. 执行挂载命令 (注意替换你的共享文件夹名):
    把"你的共享文件夹名"换成你在宿主机里设置的共享目录名称,比如你共享的文件夹叫my_files,就这么写:

    bash 复制代码
    sudo vmhgfs-fuse .host:/my_files /mnt/hgfs -o allow_other

三、自动挂载(开机自动生效)

如果想每次开机不用手动挂,就配置自动挂载:

  1. 编辑系统挂载配置文件/etc/fstab

    bash 复制代码
    sudo nano /etc/fstab
  2. 在文件末尾添加一行(同样替换你的共享文件夹名):

    复制代码
    .host:/你的共享文件夹名 /mnt/hgfs fuse.vmhgfs-fuse allow_other 0 0
  3. 保存退出(按Ctrl+O→回车→Ctrl+X),然后让配置生效:

    bash 复制代码
    sudo mount -a

四、验证是否挂载成功

执行命令查看/mnt/hgfs目录,能看到宿主机共享的文件就成功了:

bash 复制代码
ls /mnt/hgfs

五、适配 Ubuntu/Debian 系虚拟机的一键挂载共享文件夹脚本

下面是适配Ubuntu/Debian系虚拟机的一键挂载共享文件夹脚本,包含"手动临时挂载+可选自动挂载",复制就能用,步骤超简单:

第一步:创建并编辑脚本

  1. 打开终端,执行命令创建脚本文件:

    bash 复制代码
    nano vmware_share_mount.sh
  2. 把下面的脚本内容全选复制粘贴进去:

bash 复制代码
#!/bin/bash
# VMware虚拟机共享文件夹一键挂载脚本(Ubuntu/Debian专用)
# 作者:豆包编程助手
# 使用前请替换 【你的共享文件夹名】 为实际名称(宿主机设置的共享名)

# 检查是否以root权限运行
if [ $EUID -ne 0 ]; then
    echo "⚠️  请用sudo运行此脚本!示例:sudo bash vmware_share_mount.sh"
    exit 1
fi

# 定义核心变量(★★★ 必须修改这里 ★★★)
SHARE_NAME="你的共享文件夹名"  # 替换成宿主机设置的共享文件夹名称
MOUNT_POINT="/mnt/hgfs"        # 挂载点,默认不用改

# 步骤1:安装依赖(open-vm-tools)
echo "🔧 正在安装/检查VMware工具依赖..."
apt update > /dev/null 2>&1
apt install -y open-vm-tools open-vm-tools-desktop > /dev/null 2>&1
if [ $? -eq 0 ]; then
    echo "✅ VMware工具安装/检查完成"
else
    echo "❌ VMware工具安装失败,请手动执行:sudo apt install open-vm-tools open-vm-tools-desktop"
    exit 1
fi

# 步骤2:创建挂载点
echo "📁 正在创建挂载点 $MOUNT_POINT..."
mkdir -p $MOUNT_POINT
if [ $? -eq 0 ]; then
    echo "✅ 挂载点创建成功"
else
    echo "❌ 挂载点创建失败,请检查目录权限"
    exit 1
fi

# 步骤3:手动临时挂载
echo "🔗 正在挂载共享文件夹 $SHARE_NAME 到 $MOUNT_POINT..."
umount $MOUNT_POINT > /dev/null 2>&1  # 先卸载旧挂载(避免冲突)
vmhgfs-fuse .host:/$SHARE_NAME $MOUNT_POINT -o allow_other
if [ $? -eq 0 ]; then
    echo "✅ 手动挂载成功!"
else
    echo "❌ 手动挂载失败!请检查:"
    echo "   1. 宿主机是否已启用共享文件夹(VMware→虚拟机设置→选项→共享文件夹)"
    echo "   2. SHARE_NAME 是否和宿主机共享名一致(区分大小写)"
    exit 1
fi

# 步骤4:可选 - 配置开机自动挂载
read -p "🔍 是否配置开机自动挂载?(y/n,默认n):" AUTO_MOUNT
if [ "$AUTO_MOUNT" = "y" ] || [ "$AUTO_MOUNT" = "Y" ]; then
    # 先备份fstab
    cp /etc/fstab /etc/fstab.bak_vmshare
    # 写入自动挂载配置
    echo ".host:/$SHARE_NAME $MOUNT_POINT fuse.vmhgfs-fuse allow_other 0 0" >> /etc/fstab
    # 验证配置是否生效
    mount -a
    if [ $? -eq 0 ]; then
        echo "✅ 自动挂载配置完成!重启后仍生效"
    else
        # 配置出错则恢复备份
        cp /etc/fstab.bak_vmshare /etc/fstab
        echo "❌ 自动挂载配置失败,已恢复fstab备份"
    fi
else
    echo "ℹ️  跳过自动挂载配置,仅本次开机有效"
fi

# 步骤5:验证挂载结果
echo "📋 挂载结果验证:"
ls -l $MOUNT_POINT | head -5
echo "====================================="
echo "🎉 操作完成!共享文件夹路径:$MOUNT_POINT"

第二步:修改关键参数

找到脚本里这一行:

bash 复制代码
SHARE_NAME="你的共享文件夹名"

你的共享文件夹名替换成宿主机在VMware里设置的共享文件夹名称 (比如你共享的文件夹叫win_share,就改成SHARE_NAME="win_share")。

改完后按 Ctrl+O → 回车 → Ctrl+X 保存退出。

第三步:运行脚本

  1. 给脚本添加执行权限:

    bash 复制代码
    chmod +x vmware_share_mount.sh
  2. 用root权限运行(必须加sudo):

    bash 复制代码
    sudo bash vmware_share_mount.sh

脚本运行说明

  1. 运行后会自动安装依赖、创建挂载点、执行手动挂载;
  2. 会询问是否配置"开机自动挂载",输入y则自动修改/etc/fstab,重启不失效;输入n则仅本次开机有效;
  3. 最后会列出挂载目录的前5个文件,验证是否挂载成功。

如果运行中提示失败,大概率是SHARE_NAME填错了,或者宿主机没开启共享文件夹,核对一下就能解决~

相关推荐
松涛和鸣17 小时前
37、UDP网络编程入门
linux·服务器·前端·网络·udp·php
坐吃山猪17 小时前
Python命令行工具Click
linux·开发语言·python
Lueeee.17 小时前
FFMPEG核心结构体
linux·ffmpeg
山土成旧客17 小时前
【Python学习打卡-Day28】类的蓝图:从模板到对象的构建艺术
linux·python·学习
怀旧,17 小时前
【Linux系统编程】14. 库使用与原理(上)
linux·运维·服务器
QT 小鲜肉18 小时前
【Linux命令大全】001.文件管理之locate命令(实操篇)
linux·运维·服务器·chrome·笔记
嘻哈baby18 小时前
eBPF技术入门与实战:Linux内核黑科技
linux
风好衣轻18 小时前
Ubuntu单卡5090部署VeRL:从安装到运行
linux·运维·ubuntu
火柴棍mcu18 小时前
Ubuntu设备屏幕旋转、竖屏改横屏
linux·ubuntu·旋转·屏幕
amao998818 小时前
MITos2022--Lab2: system calls
linux