Jaka jest różnica pomiędzy:
ln -s /mnt/extra/home /
i
mkdir /home
mount --rbind /mnt/extra/home /home
mount --rbind /mnt/extra/home
jest już zamontowanym katalogiem
Jaka jest różnica pomiędzy:
ln -s /mnt/extra/home /
i
mkdir /home
mount --rbind /mnt/extra/home /home
mount --rbind /mnt/extra/home
jest już zamontowanym katalogiem
Odpowiedzi:
mount --rbind
tworzy rekurencyjne mocowanie binda; oznacza to, że podłączona hierarchia systemu plików /mnt/extra/home
będzie również dostępna przez /home
.
W praktyce główna różnica między ln -s
rozwiązaniem a mount --rbind
rozwiązaniem polega na tym, że with ln -s
/home
jest dowiązaniem symbolicznym, podczas gdy z mount --rbind
nim jest katalog; wpływa to narzędzia, takie jak find
, df
, test
/ [
etc.
Ponadto ln -s
zawiedzie, jeśli /home
istnieje, a mount --rbind
zawiedzie, jeśli nie istnieje lub nie jest pustym katalogiem.
Ważny jest również komentarz Marka: ln -s
potrzebny jest zapisywalny system plików, w którym można utworzyć dowiązanie symboliczne.
ln -s
modyfikuje system plików, podczas gdy mount --rbind
nie. Oznacza to, że możesz zamontować katalog domowy na katalogu głównym tylko do odczytu (np. Bootowalnym CD), ale nie możesz utworzyć na nim dowiązania symbolicznego.
--bind
i --rbind
nie dbam o to, czy moje katalogi docelowe są puste, po prostu montują „na wierzchu” dowolnych plików, pozostawiając je niedostępne
W takim przypadku zarówno mocowanie wiązania, jak i dowiązanie symboliczne będą działać podobnie do większości celów, ale mają one istotne różnice.
Łącze symboliczne jest nieco lżejsze. Możesz mieć setki lub tysiące dowiązań symbolicznych bez większego problemu z zarządzaniem. Siedzą w systemie plików, a nie wymagają specjalnej konfiguracji na poziomie systemu.
Łącza symboliczne mogą być archiwizowane i kopiowane poprawnie za pomocą narzędzi takich jak cp i rsync. Oznacza to, że narzędzia mogą rozpoznawać i kopiować dowiązanie symboliczne, zapewniając, że podczas przywracania gdzieś indziej łącze zostanie przywrócone i wskaże poprawne miejsce docelowe. Domyślnie wszystko będzie działać poprawnie. Z drugiej strony, podczas tworzenia kopii zapasowej lub kopiowania oprawy montażowej montaż zostanie potraktowany w sposób przezroczysty, co spowoduje skopiowanie samych plików, co może prowadzić do duplikacji, jeśli otrzymasz te same pliki w ich innej lokalizacji, i wymagać dodatkowej pracy, jeśli chcesz replikacja podłączenia binda w miejscu docelowym.
Dowiązania symboliczne mogą być modyfikowane lub usuwane przez każdego użytkownika, który ma dostęp do łącza, więc łatwo jest ustawić je jako superużytkownika lub otworzyć dla konkretnego użytkownika. Mocowania powiązań mogą być konfigurowane lub modyfikowane tylko przez administratora.
Jeśli to brzmi jak świecące poparcie dla dowiązań symbolicznych, to właśnie tak. Są prostszym sposobem łączenia plików i katalogów. Używałbyś montowań powiązań tylko w sytuacjach, w których dowiązanie symboliczne nie działałoby, co może być mniejszą liczbą sytuacji niż mogłoby się wydawać. Większość narzędzi, w tym narzędzia do tworzenia kopii zapasowych i synchronizacji, mają rozsądne domyślne zachowanie dla dowiązań symbolicznych, a ich traktowanie dowiązań symbolicznych może być konfigurowalne. Mocowania wiązań są przezroczyste dla takich narzędzi, więc tracisz elastyczność i możesz stracić rozsądne zachowanie (na przykład, jak wspomniano powyżej, powielanie katalogów w twoich kopiach zapasowych).
Jeszcze jedna różnica polega na tym, że dowiązanie symboliczne jest symboliczne , tzn. Odnosi się tylko do ścieżki - ciągu znaków i jest usuwane przy każdym otwarciu podkatalogu / pliku na ścieżce docelowej. Natomiast mount --rbind
zachowuje się bardziej jak łącze twarde, dla którego ścieżka nie jest ponownie oceniana przy każdym dereferencji.
To robi różnicę w niektórych scenariuszach, takich jak chroot
. Np. Vsftpd chroot
s do katalogu domowego konta użytkownika FTP, na które się logujesz. Zatem jeśli umieścisz dowiązanie symboliczne w tym katalogu, vsftpd
nie będzie w stanie go wyrejestrować, a zatem cel nie będzie dostępny przez FTP. Jeśli zrobisz to mount --rbind
, po vsftpd
prostu uzyskasz dostęp do tego poddrzewa tak, jakby rzeczywiście tam było, podobnie jak wtedy, gdy plik został tam na stałe połączony.
ln
tworzy linki; w szczególnościln -s
tworzy dowiązania symboliczne.mount
montuje system plików w katalogu. Nie mają ze sobą nic wspólnego.