Mac 与虚拟机中的linux集群共享文件目录设置

一、环境介绍

本机:Macos Big Sur系统

虚拟机软件:vmware-fusion

虚拟机上虚拟的linux - centos7 系统

 

二、实现的效果

在mac上创建一个/Users/SH-Server/vm-vagrant目录,作为之后和虚拟机linux系统 /data 文件夹的共享目录。

我们最终想要达到的效果就是,我们在虚拟机linux上的/data 目录下编写代码,我们mac系统上/Users/SH-Server/vm-vagrant 中的文件也发生相应改变。

相应的,在mac上的共享目录/Users/SH-Server/vm-vagrant 中创建编写文件,虚拟机中的linux /data下的文件和目录也同样发生变化。

即二者是同步的。

 

三、实现

1、 Mac上命令行的操作
# Mac上创建用于和虚拟机的linux共享的目录
mkdir /Users/SH-Server/vm-vagrant
# 赋予权限
chmod -R 777 /Users/SH-Server/vm-vagrant

 

2、在mac上vmware-fusion上的操作

 
然后,添加共享文件夹,这里选择的是macos上我们之前创建的vm-vagrant目录,并且在左侧重命名为data,你也可以根据自己的编程习惯重命名为其他的名称。

 

3、在虚拟机上Linux的操作

我们在mac上设置好共享目录后,该目录就在 /mnt/hgfs 下。

我们在该目录执行ls,会发现,多出了一个目录,即 data目录

默认这个目录权限是不够的,不足以让我们操作该目录,因此我们需要修改该目录权限。

(1)赋予共享目录777权限:
chmod -R 777 /mnt/hgfs/data

 

(2)软连接到根目录

我这里习惯把代码都放在 /data 目录下,因此我这里直接将 /mnt/hgfs/data 软连接到根目录下。

注意,如果根目录下已经有data目录,要么删除掉,要么你软连接到其他目录。

ln -s /mnt/hgfs/data /

 
(3)效果

在虚拟机 linux 上多出了一个/data目录,在/data目录下touch一个index.php文件,我们去mac上的共享目录/Users/SH-Server/vm-vagrant,会发现同时也多了一个index.php文件。

我们在mac上的/Users/SH-Server/vm-vagrant 目录下创建一个目录或文件,虚拟机上的linux中,/data目录下也多了相应目录或文件。

说明设置共享目录成功,已经实现了macos和虚拟机linux的目录共享。

 

四、其他同步方案:

1、在macos的系统偏好设置 > 共享中设置共享目录,然后在虚拟机linux mount挂载

有无数的坑,效果并不好

 
2、使用 samba 实现mac和虚拟机linux目录共享

和第一种差不多,并不好用

 
3、使用vagrant + virtualbox管理虚拟机集群

在mac上有很多莫名其妙的错误,同样被pass掉。

 
4、使用phpstorm的development tools开发工具去同步服务器代码

单纯考虑mac和一台虚拟机linux代码同步,其实是可行的。

但如果需要mac同时和多个虚拟机linux系统进行文件目录同步,即一个大的linux 虚拟机集群,则操作上将变得很麻烦。

 
经过多番实践,最后还是认为这种方法最好用,因此记录下来。