如何挂载-bind本地目录?


16

在linux中,您可以做的一件伟大的事情(特别是对开发人员而言)是装入一个文件夹并将其本地绑定到系统上的另一个文件夹。

与符号链接相比,这具有优势,因为像Git这样的事实工具不会将其检测为其他类型的节点,并且您不需要删除原始内容。完成后,您可以简单地卸载并留下原始文件系统内容。

但是,mount -bind或者mount.localMac上似乎不存在(从OS X 10.10.2起,优胜美地)。

您如何处理?

Answers:


9

正如另一个在StackOverflow上的用户提到的那样,您可以对此使用NFS挂载。但是,它需要一点一点的一次性设置。

首先,您需要设置一个/etc/exports文件(如果尚未设置)。

$ sudo tee -a /etc/exports <<< "/ -alldirs -mapall=$USER localhost"

其次,你需要启动RPCnfsd的服务。

$ sudo launchctl start com.apple.rpcbind
$ sudo nfsd start

从那里开始,让NFSd一点点起床并吃早餐,您应该很好地挂载它:

$ sudo mount localhost:/path/to/target ./mnt

要恢复原始内容,只需执行

$ sudo umount ./mnt

我试图安装我的$ sudo mount localhost:/Volumes/Aren/Movies /Users/me/Movies/
exfat

mount_nfs: can't mount /Volumes/Aren/Movies from localhost onto /Users/me/Movies: No such file or directory
Necktwi'2

如果我用其他方法做的话,它的效果很好!
Necktwi's

如果显示“没有这样的文件或目录”,请尝试首先制作一个文件夹以挂载到目标位置。如果收到“权限被拒绝”错误,请尝试“ sudo nfsd restart”(对我来说,nfsd已经启动,所以我需要重新启动以接新的出口产品线)
Nick

1
@JayGee我是OP。当时对我有用,Git有什么错误?cd在使用Git之前,您是否先退出然后再返回?Shell倾向于使用与inode绑定的文件描述符,而不是完整的字符串路径-因此,如果您挂载并停留在“相同”目录中,则Shell仍将使用基础目录而不是已挂载的目录进行操作。Git没有理由将任何东西都看成已挂载-挂载不能那样工作。出于所有目的和目的,它是同一类型的文件系统。
Qix

8

还有另一个选项-bindfs。它要求您安装FUSE,但提供了使用NFS的替代方法。

您可能需要从源代码进行编译,但我认为MacPorts中也提供了它。


2
自制:安装osxfuse,然后brew install homebrew/fuse/bindfs(测试埃尔卡皮坦;用于无需sudo之前bindfs为面向用户的坐骑)
dhchdhd

保险丝的缺点是它不支持声化事件。如果源已更新,则App在目标中监视更新时,它将不会收到更新。
diimdeep

当在bindfs卷中编译内容时,这对我来说也有点奇怪。特别是,在没有明显原因的情况下,我在Xcode中始终为一个特定项目获得“太多打开文件”。如果我只是复制内容而不挂载,它的构建就很好。
Grishka '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.