Wie mounten Sie ein lokales Verzeichnis?


15

Unter Linux konnten Sie (insbesondere für Entwickler) einen Ordner mounten und lokal an einen anderen Ordner auf dem System binden.

Dies hatte den Vorteil gegenüber Symlinks, da Tools wie Git keinen anderen Knotentyp erkannt haben und Sie den ursprünglichen Inhalt nicht entfernen mussten. Wenn Sie fertig sind, können Sie einfach die Bereitstellung aufheben und der ursprüngliche Inhalt des Dateisystems bleibt erhalten.

Jedoch mount -bindoder mount.localscheinen nicht auf Mac (ab OS X 10.10.2, Yosemite) zu existieren.

Wie gehst du vor?

Antworten:


8

Wie von einem anderen Benutzer in StackOverflow erwähnt , können Sie hierfür eine NFS-Mount- Aktion verwenden. Es erfordert jedoch ein wenig einmaliges Einrichten.

Zuerst müssen Sie eine /etc/exportsDatei einrichten (falls Sie dies noch nicht getan haben).

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

Zweitens müssen Sie die Dienste rpc und nfsd starten .

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

Geben Sie NFSd von dort aus ein wenig Zeit, um aufzuwachen und das Frühstück zu sich zu nehmen, und Sie sollten bereit sein, Folgendes zu montieren:

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

Um den ursprünglichen Inhalt wiederherzustellen, tun Sie einfach Folgendes

$ sudo umount ./mnt

Ich habe versucht, mein Exfat-USB-Laufwerk$ sudo mount localhost:/Volumes/Aren/Movies /Users/me/Movies/
Necktwi

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

Es funktioniert gut, wenn ich es anders mache!
Necktwi

Wenn Sie die Meldung "Keine solche Datei oder solches Verzeichnis" erhalten, erstellen Sie zunächst einen Ordner, in den das Ziel eingehängt werden soll. Wenn Sie die Fehlermeldung "Permission Denied" erhalten, versuchen Sie es mit "sudo nfsd restart" (für mich war nfsd bereits gestartet, daher musste es neu gestartet werden, um die neue Exportlinie aufzunehmen, glaube ich)
Nick,

1
@ JayGee Ich bin OP. Bei mir hat es damals geklappt, welchen Fehler hat Git? Haben Sie cdsich vor der Verwendung von Git aus- und wieder eingearbeitet? Shells arbeiten in der Regel mit Dateideskriptoren, die an Inodes gebunden sind, und nicht mit vollständigen Zeichenfolgenpfaden. Wenn Sie also einhängen und im selben Verzeichnis bleiben, verwendet die Shell weiterhin das zugrunde liegende Verzeichnis anstelle des eingebundenen. Es gibt keinen Grund, warum Git irgendetwas als gemountet ansehen sollte - das Mounten funktioniert nicht so. In jeder Hinsicht handelt es sich um dieselbe Art von Dateisystem.
Qix

8

Es gibt noch eine andere Option - bindfs . Es erfordert die Installation von FUSE , bietet jedoch eine Alternative zur Verwendung von NFS.

Möglicherweise müssen Sie aus dem Quellcode kompilieren, aber ich sehe, dass es auch in MacPorts verfügbar ist .


2
Homebrew: Installieren osxfuse , dann brew install homebrew/fuse/bindfs(Getestet auf El Capitan, keine Notwendigkeit , sudobevor bindfsfür anwenderorientierte Mounts)
dhchdhd

Der Nachteil der Sicherung ist, dass sie keine inotify-Ereignisse unterstützt. Wenn die Quelle aktualisiert wird, während die App im Ziel nach Updates sucht, werden keine Updates empfangen.
Diimdeep

Außerdem ist es für mich ein bisschen wackelig, wenn ich Dinge in einem bindfs-Volume kompiliere. Insbesondere bekomme ich ohne ersichtlichen Grund immer wieder "zu viele offene Dateien" für ein bestimmtes Projekt in Xcode. Wenn ich nur den Inhalt kopiere, ohne ihn zu mounten, funktioniert das einwandfrei.
Grishka
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.