63 Stimmen

Wie lautet der Unix-Befehl zum Erstellen eines Hardlinks zu einem Verzeichnis in OS X?

Wie erstellt man in OS X einen Hardlink (im Gegensatz zu einem Symlink oder einem Mac OS-Alias), der auf ein Verzeichnis verweist? Ich kenne bereits den Befehl "ln target destination", aber der funktioniert nur, wenn das Ziel eine Datei ist. Ich weiß, dass Mac OS im Gegensatz zu anderen Unix-Umgebungen Hardlinks zu Ordnern zulässt (dies wird z. B. für Time Machine verwendet), aber ich weiß nicht, wie ich es selbst machen kann.

7voto

ccpizza Punkte 24937

Die OSX-Version von ln kann es nicht, aber, wie in der anderen Antwort von reich ist es möglich, mit der GNU-Version von ln die erhältlich ist in selbstgebaut como gln als Teil der coreutils Formel. man gln listet die -d mit der OSX-spezifischen Warnung, die in reich Antwort. Mit anderen Worten: Es funktioniert nicht in allen Fällen. Was genau darüber entscheidet, ob es funktioniert oder nicht, scheint nirgendwo dokumentiert zu sein.

Als Voraussetzung müssen Sie Folgendes installieren coreutils :

    brew install coreutils

Das können Sie jetzt tun:

    sudo gln -d /original_folder /mirror_folder

WICHTIG : Um den Hardlink zu entfernen, müssen Sie muss verwenden. gunlink :

    sudo gunlink /mirror_folder

Verwendung von rm oder Finder löscht auch den ursprünglichen Ordner.

Zu Ihrer Information: Die coreutils homebrew formula stellt die GNU-kompatiblen Versionen der allgemeinen Unix-Werkzeuge bereit. Verwenden Sie brew list coreutils um die vollständige Liste zu sehen.

4voto

ariel Punkte 14427

Ab 2018 nicht mehr möglich. APFS (eingeführt in MacOS High Sierra 10.13) ist nicht mit Verzeichnis-Hardlinks kompatibel. Siehe https://github.com/selkhateeb/hardlink/issues/31

3voto

Jesper Rønn-Jensen Punkte 98301

In meinem Fall habe ich festgestellt, dass ich von einer virtuellen Windows-Maschine aus keine Symlinks verfolgen kann. (Ich wollte einige HTML-Seiten im Internet Explorer testen). Und meine Verzeichnisstruktur hatte Symlinks für CSS- und Bilder-Ordner.

Ich habe das Problem mit einem anderen Ansatz gelöst, als die anderen Antworten vermuten ließen. Ich verwendete rsync um eine Kopie des Ordners zu erstellen. Rsync kann die Symlinks auflösen und stattdessen die verknüpften Dateien kopieren.

Dies löste mein Problem, ohne harte Links zu Verzeichnissen zu verwenden. Und es ist tatsächlich eine einfache Lösung, wenn man nur an einer kleinen Anzahl von Dateien arbeitet.

rsync -av --copy-dirlinks --delete ../htmlguide ~/src/

1voto

Gannet Punkte 1025

Aus dem verlinkten Artikel geht hervor, dass Sie diese Fehlermeldung erhalten, wenn Sie versuchen, den harten Link im selben Verzeichnis wie das Original zu erstellen. Sie müssen ihn an einem anderen Ort erstellen.

1voto

Kit Sunde Punkte 33909

Eine andere Lösung ist die Verwendung von bindfs https://code.google.com/p/bindfs/ das über Port installiert werden kann:

sudo port install bindfs
sudo bindfs ~/source_dir ~/target_dir

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X