Frage

Wie Sie einen Hardlink erstellen (im Gegensatz zu einem Symlink Gegensatz oder einen Mac OS Alias) in OS X, das auf ein Verzeichnis? Ich weiß schon, den Befehl „ln Ziel Ziel“, aber das funktioniert nur, wenn das Ziel eine Datei ist. Ich weiß, dass Mac OS, im Gegensatz zu anderen Unix-Umgebungen erlaubt, um Ordner Hardlinks (dies ist für Time Machine verwendet wird, zum Beispiel), aber ich weiß nicht, wie es selbst zu tun.

War es hilfreich?

Lösung 2

Sie können es nicht direkt dann in BASH tun. Allerdings ... Ich fand hier einen Artikel, der beschreibt, wie es zu tun indirekt: http://www.mactech.com/articles/mactech/Vol.23/23.11/ExploringLeopardwithDTrace/index.html durch ein einfaches kleines C-Programm kompiliert:

#include <unistd.h>
#include <stdio.h>

int main(int argc, char *argv[])
{
   if (argc != 3) return 1;

   int ret = link(argv[1], argv[2]);

   if (ret != 0) perror("link");

   return ret;
}

... und baut in Terminal.app mit:

$ gcc -o hlink hlink.c -Wall

Andere Tipps

Ich bin damit einverstanden, dass hart Verknüpfung Ordner / Verzeichnisse Probleme, wenn nicht vorsichtig verursachen können, aber sie haben eine sehr entscheidender Vorteil - Time Machine ein perfektes Beispiel ist. Ohne sie wäre es einfach nicht als Vervielfältigung von redundanten Versionen von Dateien selbst würde sehr schnell verbrauchen praktisch sein, die größten Festplatten.

Snow Leopard kann harte Links auf Verzeichnisse erstellen, solange Sie Amit Singh sechs Regeln folgen:

  1. Das Dateisystem gelagert werden muss, HFS +.
  2. Die übergeordnete Verzeichnisse der Quell- und Ziel müssen unterschiedlich sein.
  3. Die Eltern Quelle darf nicht das Stammverzeichnis sein.
  4. Das Ziel muss nicht im Stammverzeichnis sein.
  5. Das Ziel muss nicht ein Nachkomme der Quelle sein.
  6. Das Ziel darf keine Vorfahren haben, die ein Verzeichnis harter Link ist.

Es ist also durchaus nicht richtig, dass Snow Leopard hat die Fähigkeit verloren zu harten Links zu erstellen Ordner.

Ich überprüft nur, dass Link / entkoppeln auf Snow Leopard arbeiten - so lange, wie Sie die sechs folgen Regeln. Ich habe gerade versuchte es und es funktioniert gut auf meinem Snow Leopard 10.6.6 System - versuchte es auf dem Startvolume und auf einem separaten externen USB-Volumen und es funktionierte in beiden Fällen gut.

Hier ist das "hunlink.c" Programm:

#include <stdio.h>
#include <unistd.h>
int
main(int argc, char *argv[])
{
   if (argc != 2)
      return 1;
   int ret = unlink(argv[1]);
   if (ret != 0)
      perror("unlink");
   return ret;
}

gcc -o hunlink hunlink.c

Also, seien Sie vorsichtig, wenn Sie es versuchen - denken Sie daran, die Regeln zu folgen und hlink diese harten Links zu erstellen und verwenden hunlink anschließend die feste Verbindung zu entfernen. Und vergessen Sie nicht, zu dokumentieren was Sie für später oder für jemanden getan hat anderes, könnte dies wissen müssen.

Ein anderer „Gotcha“, die ich gerade über diese „harten Links“ auf Ordner gelernt. Wenn man sie schaffen es gibt wirklich eine Menge, die „hinter dem Vorhang“ von Mac OS X. Ein wirklich wichtiges Thema passiert ist, dass der Ordner, den Sie auf den Link erstellen, um eine super-magische super-versteckte Ordner ist wirklich bewegt genannt /.HFS+ Private Directory-Daten% 000d / dir_xxx xxx ist die Inode-Nummer der "source_folder" - denken Sie daran, das Format des Befehls ist

hlink source_folder target_folder

, weil dieser Also, muss man vorsichtig sein, keine Dateien mit offenen in den „source_folder“ denn wenn Sie das tun, sie habe nur an den Super-magische Ordner verschoben, und Sie werden wahrscheinlich ein Problem, wenn Sie versuchen, speichern Sie alle Änderungen an diesen Dateien, die in der „source_folder“ offen waren. Dies passierte mir ein paar Mal, bis es dämmerte mir, was los war, und die Lösung ist recht einfach. Ich habe bemerkt, dass Sie nicht ein „ls -la“ -Befehl nicht mehr, ohne sich lustig Fehler für alle Ordner / Verzeichnisse tun könnte, die in der ursprünglichen „source_folder“ waren, aber man konnte ein „ls“ Befehl tun und alles sah gut aus.

Wenn Sie „Verify Disk“ in dem „Disk Utility“ Programm ausführen, werden Sie feststellen, dass es wahrscheinlich beschwert und gibt einen „Volume Bitmap kleinere Reparatur für verwaiste Blöcke benötigt“, das, was ist nur mit der Schaffung des super- geschah magische Ordner und die Bewegung des „source_folder“ zu.

Wenn Sie sich in dieser Situation tun finden mit „verwaisten Blöcke“, die geänderten Dateien in einem anderen temporären Speicherort speichern nicht in dem Volumen der „source_folder“ Baum enthält, verwenden Sie dann „Disk Utility“ auszuhängen und das Volumen wieder montieren dass enthält die „source_folder“ oder nur ein Neustart des Computers. Dann kopieren Sie die Dateien, auf die temporären Orten wieder an ihren ursprünglichen Orten gespeichert und Sie sollten wieder im Geschäft sein. Dies ist, was für mich gearbeitet, so kann nicht garantieren, dies auch für Sie arbeiten. So ist es eine gute Idee, diese auf einem Volume, um zu versuchen sein könnte aus haben Sie eine gute Sicherung für alle Fälle.

Es scheint so sehr seltsam, dass all dieser Aufwand nur für die einfache Aufgabe tritt in einen Ordner eine feste Verbindung zu schaffen. Hat jemand eine Ahnung, warum Mac OS X zu all diesen Bemühungen für diese harte Link Schöpfung Ordner geht? Hat es etwas mit der Tatsache zu tun, dass dies ein „gelagert“ Dateisystem?

entdeckte ich die Informationen über die super-magische, super-hidden Lage von Amit Singh Erklärung seines „hfsdebug“ Dienstprogramm zu lesen. Wenn Sie weitere Informationen wünschen sehen Sie seine Website unter Amit Singh hfsdebug Dienstprogramm . Es ist ein sehr interessantes Stück Software und finden Sie viele Informationen über HFS + Dateisysteme erzählen. Es ist kostenlos und ich ermutige Sie es herunterladen und ausprobieren. Es wird nicht mehr unterstützt, aber es funktioniert immer noch auf beiden Snow Leopard und Leopard - im Grunde jeden HFS + gestütztes System. Man kann nicht wirklich mit ihm schaden, da es eine „read-only“ Werkzeug ist - so ist es toll auf einige Details des Dateisystems suchen zu verwenden.

Ein weiteres Problem über diese „harten Links auf Ordner“ - sobald Sie eine erstellen und die super-super-magische Geheimnis versteckte Ordner erstellt werden, ist es dort für gut. Auch wenn Sie den Ordner entkoppeln, die es verursacht in erster Linie geschaffen werden, diese Magie Ordner bleibt um. Nicht sicher, warum, aber es ist definitiv der Fall ist. Sie können „hfsdebug“ verwenden, um dies herauszufinden, wenn Sie möchten, um es auszuprobieren. Sie können auch „hfsdebug“ verwenden, um herauszufinden, wie viele dieser „harten Links zu Ordnern“ auf einem Laufwerk vorhanden sein. Für diese Angaben beziehen sich auf Amit Artikel über den „hfsdebug“ Dienstprogramm.

Er hat auch eine andere neuere Dienstprogramm, das aber die Kosten unterstützt wird. Es heißt fileXray und kostet $ 79 für eine Person auf einem beliebige Anzahl von Computern im gleichen Haushalt für eine persönliche nicht-Business-Typ-Lizenz. Es verfügt über einen umfangreichen 173-seitiges Benutzerhandbuch, die Sie herunterladen können, um zu sehen, was es tun kann, bevor Sie kaufen. Leider gibt es keine Testversion, so das Handbuch lesen und die Website für weitere Informationen überprüfen, um zu sehen, ob es Ihnen aus der Patsche helfen kann. Erfahren Sie alle Details über sie auf ihrer Website -. Finden Sie unter fileXray Website für weitere Informationen

Es gibt ein paar Fragen sollten Sie sich bewusst sein, wenn diese harten Links zu Ordnern. Wenn das Volumen, das sie erstellt wird auf ein Remote-Client eingebaut ist, kann es erhebliche Probleme geben, je nachdem, wie sie montiert sind. Wenn Sie AFP verwenden, um die Lautstärke auf ein Remote-Client zu montieren, gibt es große Probleme wie jeden Ordner, der zur Zeit eine feste Verbindung zu ihm hat oder jemals hatte man aber später entfernt, nicht in der Lage sein wird, wie alle untere Ebene Ordner verwendet werden ( aber nicht Dateien) werden entweder aus dem Finder oder einem Terminal-Fenster nicht zugänglich sein. Wenn Sie versuchen, ein einfaches „ls -lR“ Befehl zu tun, wird es nicht und geben Sie „ls: xxx: Keine solche Datei oder das Verzeichnis“ Fehlermeldungen für alle unteren Ebene Ordner. Wenn Sie ein Finder-Fenster, um den Verzeichnisbaum des Remote-Volume, die Ordner, die in dem Ordner befinden, hatte oder hat eine feste Verbindung zu ihm wird einfach verschwinden, ohne Fehler zu durchlaufen, wenn Sie zuerst auf den Namen Ordner klicken.

Diese Probleme scheinen nicht (mit Ausnahme der Fehlermeldung) auftreten, wenn Sie NFS verwenden, um das Remote-Client zu montieren (und vorausgesetzt, Sie einen NFS-Server auf dem System hatten, die das Volumen als lokale HFS + Dateisystem hat). Details darüber, wie NFS verwendet Volumes zu montieren sind hier nicht vorgesehen. Ich habe ein schönes Programm von Dr. Marcel Bresink „NFS Manager“ genannt, mit dem NFS auf dem Server und Client zu helfen. Sie können es von seiner Website erhalten - nur die Suche für „Bresink NFS Manager“ in Ihrer bevorzugten Suchmaschine, aber er hat eine kostenlose Testversion, so können Sie versuchen, bevor Sie kaufen. Es ist nicht so große Sache, wenn Sie erfahren möchten, wie die NFS-Mounts zu tun, aber die „NFS Manager“ macht es ziemlich einfach, alles einzurichten und die verschiedenen Einstellungen zu optimieren, um es zu optimieren. Er hat mehrere andere nette Mac OS X Dienstprogramme zu, die sehr preiswert sind - ein „Hardware Monitor“ genannt, die Sie alle möglichen Dinge wie Stromverbrauch für beide, die Temperatur der CPU, die Geschwindigkeit der Ventilatoren und viele viele andere Variablen überwachen und Graphen können die lokalen und Remote-Mac-Systeme über längere Zeiträume (von Minuten bis Tage). Auf jeden Fall lohnt sich, wenn Sie in han sinddy-Utilities.

Eine Sache, ich habe bemerkt, dass NFS-Dateiübertragungen etwa 20% langsamer waren als sie über AFP tun, aber Ihre „Leistung kann variieren“, so dass keine Garantien der einen oder der anderen, aber ich würde lieber etwas, das noch funktioniert wenn ich eine 20% Leistungseinbußen zu zahlen haben, im Vergleich zu nichts Arbeit überhaupt haben.

Apple ist sich der Probleme bewusst mit harten Links und Remote-AFP-Dateisysteme, und sie beziehen sich auf sie als „implentation Begrenzung“ des AFP-Client - ich ziehe es zu nennen, was es scheint mir wirklich zu sein - Fehler! !! Ich kann nur hoffen, dass die nächste Version von Mac OS X behebt das Problem, wie ich wirklich die Fähigkeit, wie mit harten Links zu Ordnern zu verwenden, wenn es Sinn macht.

Diese Hinweise sind meine persönliche Meinung und ich mache keine Gewähr über ihre Richtigkeit nutzt sie dies auf eigenes Risiko. Haben Sie eine gute Sicherung durch, bevor Sie mit diesen „harten Links auf Ordner“ nur für den Fall etwas Unvorhergesehenes passiert, rumspielen. Aber ich hoffe, dass Sie Spaß haben, wenn Sie ein wenig mehr in diesen interessanten Aspekt von Mac OS X suchen entscheiden.

Piffle. Am 10.5, es sagt Ihnen, in der man-Seite für ln :

   -d, -F, --directory
          allow the superuser to attempt to hard link  directories  (note:
          will  probably  fail  due  to  system restrictions, even for the
          superuser)

Also ja:

    sudo  ln  -d  existing_dir  new_hard_link

Geben Sie ihm Ihr Kennwort ein, und Sie sind noch nicht fertig . Sie haben dokumentiert es nicht, nicht wahr? Sie muss Dokument hart verknüpfte Verzeichnisse; auch wenn es eine Single-User-Maschine.

Löschen ist eine andere Geschichte: wenn man darüber die übliche Art und Weise gehen Verzeichnisse zu löschen, werden Sie den Inhalt löschen. So Sie muss "entkoppeln" das Verzeichnis:

    unlink  new_hard_link

Es. Hoffe, dass Sie nicht ruinieren Ihr Dateisystem!

Cross-Posting dieses große Werkzeug , die fein säuberlich das Problem löst, die ursprünglich von Sam :


Um Hardlink zu installieren, stellen Sie sicher, Sie haben installiert Homebrew , dann laufen:

brew install hardlink-osx

Nach der Installation erstellen eine feste Verbindung mit:

hln [source] [destination]

Ich habe auch bemerkt, dass unlink Befehl nicht auf Schneeleopard funktioniert, so dass ich hinzugefügt, um eine Option zu entkoppeln:

hln -u destination

-Code auf Github für diejenigen zur Verfügung, die daran interessiert sind: https://github.com/selkhateeb/hardlink

Ja, es durch den Kernel und das Dateisystem unterstützt wird, aber da es nicht für den allgemeinen Gebrauch bestimmt ist, ist es nicht an der Schale ausgesetzt.

Sie könnten wahrscheinlich arbeiten heraus, welche APIs Time Machine verwendet und wickeln Sie sie in einem Kommandozeilen-Tool, aber es wäre besser, den Hinweis zu nehmen und steuern gut klar.

Die OSX Version von ln kann es nicht tun, aber, wie in der anderen Antwort von reich ist es möglich, mit der GNU-Version von ln, die in Homebrew als gln als Teil des coreutils Formel. man gln listet die -d Option mit der OSX-spezifischen Warnung in reich 's Antwort. Mit anderen Worten, es funktioniert nicht in allen Fällen. Was genau bestimmt, ob es funktioniert oder nicht scheint nicht überall zu dokumentieren.

Als Voraussetzung installieren coreutils:

    brew install coreutils

Jetzt können Sie tun:

    sudo gln -d /original_folder /mirror_folder

Wichtig : die feste Verbindung entfernen Sie muss Verwendung gunlink:

    sudo gunlink /mirror_folder

Mit rm oder Finder wird auch die ursprünglichen Ordner löschen.

Zur Info: Die coreutils Homebrew Formel liefert die GNU-kompatible Versionen von generischen Unix-Tool. Verwenden Sie brew list coreutils die vollständige Liste zu sehen.

Mein Fall war, dass ich herausgefunden hat, dass aus einer virtuellen Windows-Maschine, kann ich nicht Symlinks folgen. (Ich wollte einige HTML-Seiten im Internet Explorer testen). Und meine Verzeichnisstruktur hatte symbolische Links für CSS und Bilder-Ordner.

Meine Abhilfe das Problem zu lösen war ein anderer Ansatz als die anderen Antworten impliziert. Ich benutzte rsync eine Kopie des Ordners zu erstellen. Rsync können die Symlinks lösen und die verknüpften Dateien anstelle kopieren.

Dieses mein Problem gelöst, ohne harte Links auf Verzeichnisse zu verwenden. Und es ist eigentlich eine einfache Lösung, wenn Sie nur auf eine kleine Gruppe von Dateien zu arbeiten.

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

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

Die kurze Antwort ist, dass Sie nicht. :) (außer vielleicht als root, wenn es genauer sein würden Sie zu sagen, sollte nicht.)

Unixes nur eine bestimmte Anzahl von Links zu Verzeichnissen erlauben - „..“ aus allen seinen Kindern und „“ aus sich selbst heraus. Alles anderes ist möglicherweise ein Rezept für einen sehr verwirrten Verzeichnisbaum. Das ist / war offenbar eine Design-Entscheidung von Ken Thompson.

(Having said that, anscheinend Time Machine von Apple dieses :) tut)

Aus dem Artikel verknüpft, werden Sie diesen Fehler erhalten, wenn Sie versuchen, den harten Link im selben Verzeichnis wie das Original zu erstellen. Sie müssen es schaffen woanders.

Dies kann auch mit eingebauten in Perl (vom Terminal) durchgeführt werden, ohne etwas zu kompilieren. Mein spezifischer Anwendungsfall ist für Google Drive (die keine symbolischen Links nicht unterstützt), so dass die folgenden Beispiele spiegeln den Anwendungsfall.

Ihre Ordner "Documents" auf Google Drive zu verknüpfen, so dass es synchronisiert ist:

perl -e 'link "/Users/me/Documents", "/Users/me/Google Drive/Documents"'

Um den Link zu Ihrem Ordner "Dokumente" aus Google Drive zu entfernen:

sudo perl -U -e 'unlink "/Users/me/Google Drive/Documents"'

Sie müssen "root" zu entkoppeln (siehe "entkoppeln" perldoc).

Eine andere Lösung zu verwenden ist bindfs https://code.google.com/p/bindfs/ , die installierbar über Port ist:

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

, falls es kein Unterordner ist, können Sie versuchen

ln folder_path / * . * target_folder

es funktionierte für mich auf OSX 10.9

Unter Linux können Sie verwenden, binden montieren Fest eines Verbunds von Verzeichnissen zu simulieren. Nicht sicher OSX

sudo mount --bind /some/existing_real_contents /else/dummy_but_existing_directory
sudo umount /else/dummy_but_existing_directory
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top