一、环境介绍
本机: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 虚拟机集群,则操作上将变得很麻烦。
经过多番实践,最后还是认为这种方法最好用,因此记录下来。