Auf jedenfall. Wenn Sie den Befehl ausführen ln -s
, erstellen Sie eine symbolische Verknüpfung, bei der es sich um eine Inode handelt, die auf ein bestimmtes Dateisystemobjekt verweist. Daher können Symlinks Dateisysteme durchqueren und Hardlinks nicht: Hardlinks haben keine eigene Inode.
Wenn Sie ein Dateisystem mit bereitstellen --bind
, erstellen Sie einen zweiten Bereitstellungspunkt für ein Gerät oder Dateisystem.
Wenn Sie sich einen Symlink als Umleitung vorstellen, stellen Sie sich ein bereitgestelltes --bind
Dateisystem als ein weiteres Gateway für Daten vor.
Symlinks und Bind Mounts sind ein ganz anderes Ballspiel.
Die --bind
Montierung scheint mir ein bisschen robuster zu sein und ist wahrscheinlich ein bisschen schneller als die Arbeit mit einem Symlink. Auf der anderen Seite gibt es keine gravierenden Nachteile bei der Verwendung des Symlinks, da der Leistungseinbruch gering sein wird (falls überhaupt vorhanden).
Edit : Ich habe darüber nachgedacht, und der Performance-Hit könnte ein bisschen größer sein, als ich ursprünglich dachte. Wenn Sie eine Anwendung haben, die viele verschiedene Dateien liest, ist für jede neu geöffnete Datei ein zusätzlicher Lesevorgang erforderlich. Einige Nachforschungen legen nahe, dass meine Annahme richtig ist. Wenn Sie also eine IO-lastige Anwendung haben, die dort ausgeführt wird, ziehen Sie die --bind
Option in Betracht , über der Symlink-Lösung zu mounten.
Der Grund, warum dies nicht häufig vorkommt, ist wahrscheinlich die Tatsache, dass ein Symlink in einem sichtbar ist ls
, wohingegen ein Bindungs-Mount nur sichtbar ist, wenn Sie sich / proc / mounts oder / etc / mtab ansehen (was der Befehl mount auch tut, wenn er es ist) ohne Parameter ausgeführt). Abgesehen davon glaube ich nicht, dass es irgendwelche Probleme gibt. Es würde mich allerdings interessieren, ob es welche gibt.
Zusatz : Ein weiteres Problem ln -s
besteht darin, dass bei einigen Anwendungen der Pfad dereferenziert wird und die Anwendung blockiert, wenn bestimmte Elemente an bestimmten Stellen "erwartet" werden.
mount
Gibt beim Aufruf ohne Argumente den Inhalt von aus/etc/mtab
, der geringfügig andere Informationen enthält als/proc/mounts
. (Insbesondere zeigt/proc/mounts
(symlink to/proc/self/mounts
) immer die Mountpunkte an, die für den Prozess, der es liest, sichtbar sind.)Einer der großen Unterschiede zwischen
ln -s
einem Bind-Mount besteht darin, dass Sie einen Bind-Mount verwenden können, um ein schreibgeschütztes Dateisystem zu "modifizieren". Wenn zum Beispiel eine CD eingelegt/mnt/application
ist und Sie diese durch/mnt/application/badconfigfile.conf
eine korrekte Version ersetzen möchten, können Sie dies tun:Dieselbe Änderung kann nicht über einen Symlink beeinflusst werden, da Sie das Zieldateisystem nicht ändern können.
Dies kann auch von Vorteil sein, wenn Sie eine gemeinsame Software-Suite über NFS (oder ein Cluster-Dateisystem) verteilt haben und hostspezifische Änderungen auf einem System vornehmen möchten. Sie können einfach einen Bind-Mount auf dem Zielsystem verwenden, um die Dateien oder Verzeichnisse nach Bedarf zu überschreiben.
quelle
Praktischer Unterschied # 1 für mich zwischen ln-s und mount --bind:
vsftpd erlaubt nicht das Durchsuchen eines Verzeichnisses über einen symbolischen Link, erlaubt jedoch das Mounten.
Ich weiß nicht, welchen Dämon Sie verwenden, aber er kann sich ähnlich verhalten.
quelle
Man könnte bemerken, dass als Folge der Bindung an ein Mount, das selbst eine Bindung ist, die später erneut gebunden wird, die ursprüngliche Bindung intakt bleibt, vorausgesetzt, dass alles physisch in Verbindung bleibt.
Das heißt, wenn Sie A an B binden und B an C binden und dann D an B binden, wird C immer noch an A gebunden. Wenn man möchte, dass C B folgt, muss man die gleichen Ziele verwenden, dh
mount -o remount B C
oder--rbind
stattdessen verwenden. Es gibt keine--rebind
Option.quelle