O tak. Wykonując polecenie ln -s
, tworzysz dowiązanie symboliczne, które jest i- węzłem wskazującym na określony obiekt systemu plików, dlatego dowiązania symboliczne mogą przechodzić przez systemy plików, a dowiązania twarde nie mogą: dowiązania twarde nie mają własnego i-węzła.
Jeśli montujesz system plików --bind
, tworzysz drugi punkt montowania dla urządzenia lub systemu plików.
Jeśli wyobrażasz sobie dowiązanie symboliczne jako przekierowanie, to wyobraź sobie --bind
zamontowany system plików jako kolejną bramę do danych.
Łącza symboliczne i łączenie opraw to zupełnie inna gra.
--bind
Mocowanie wydaje się nieco bardziej odporne na mnie i to prawdopodobnie jest nieco szybciej niż praca z dowiązania symbolicznego. Z drugiej strony nie ma poważnych wad korzystania z dowiązania symbolicznego, ponieważ wydajność będzie niewielka (jeśli w ogóle istnieje).
Edycja : Myślałem o tym, a wydajność może być nieco większa, niż początkowo myślałem. Jeśli masz aplikację, która odczytuje wiele różnych plików, każdy nowy plik, który zostanie otwarty, będzie wymagał dodatkowego odczytu. Niektóre badania tutaj sugerują, że moje założenie jest poprawne, więc jeśli masz tam ciężką aplikację IO, rozważ --bind
opcję zamontowania nad rozwiązaniem dowiązania symbolicznego.
Powodem, dla którego nie jest to powszechne, jest prawdopodobnie fakt, że dowiązanie symboliczne jest widoczne w ls
, podczas gdy łączenie łączenia jest widoczne tylko podczas patrzenia na / proc / mounts lub / etc / mtab (co robi polecenie mount, jeśli jest wykonywane bez parametrów). Poza tym nie sądzę, żeby były jakieś problemy. Byłbym jednak zainteresowany, gdyby tak było.
Dodanie : innym problemem ln -s
jest to, że w przypadku niektórych aplikacji, gdy ścieżka zostaje zaniedbana, może to powodować zawieszanie się aplikacji, jeśli „spodziewa się”, że niektóre elementy znajdują się w określonych miejscach.
mount
, po wywołaniu bez żadnych argumentów, drukuje zawartość/etc/mtab
, która zawiera nieco inne informacje niż/proc/mounts
. (W szczególności/proc/mounts
(dowiązanie symboliczne do/proc/self/mounts
) zawsze pokazuje punkty montowania widoczne dla czytającego go procesu.)Jedną z dużych różnic między
ln -s
podłączeniem do wiązania jest to, że można użyć podłączenia do „modyfikacji” systemu plików tylko do odczytu. Na przykład, jeśli zamontowano dysk CD/mnt/application
, a chcesz zastąpić/mnt/application/badconfigfile.conf
poprawną wersją, możesz to zrobić:Nie można zmienić tej samej zmiany za pomocą dowiązania symbolicznego, ponieważ nie można modyfikować docelowego systemu plików.
Można to również wykorzystać, jeśli ma się dobry wpływ, jeśli rozpowszechniasz wspólny pakiet oprogramowania za pośrednictwem NFS (lub innego systemu plików w klastrze) i chcesz wprowadzić zmiany specyficzne dla hosta w jednym systemie. Możesz po prostu użyć montowania powiązań w systemie docelowym, aby w razie potrzeby zastąpić pliki lub katalogi.
źródło
Praktyczna różnica # 1 dla mnie między ln -s a mount --bind:
vsftpd nie pozwala na przeglądanie katalogu poprzez dowiązanie symboliczne, ale pozwala na zamontowanie.
Nie wiem, jakiego demona używasz, ale może on zachowywać się podobnie.
źródło
Można zauważyć, że w wyniku powiązania z wierzchowcem, który sam jest wiązaniem, które później jest odbijane, oryginalne wiązanie pozostaje nietknięte, zakładając, że wszystko fizycznie pozostaje połączone.
To znaczy, jeśli wiązanie A do B i wiązanie B do C, a następnie wiązanie D do B, C nadal będzie wiązane z A. To może być to, czego chcesz, lub nie. Jeśli ktoś chce, aby C podążył za B, wówczas ponownie zamontuj go, używając tych samych celów, czyli
mount -o remount B C
użyj--rbind
zamiast tego. Nie ma--rebind
opcji.źródło