Quelle est la différence entre:
ln -s /mnt/extra/home /
et
mkdir /home
mount --rbind /mnt/extra/home /home
symbolic-link
NerdOfLinux
la source
la source
ln
fait des liens; en particulier,ln -s
fait des liens symboliques.mount
monte un système de fichiers sur un répertoire. Il n'ont rien en commun.mount --rbind /mnt/extra/home
est déjà un répertoire montéRéponses:
mount --rbind
crée un montage de liaison récursif; c'est-à-dire que la hiérarchie du système de fichiers montée sur/mnt/extra/home
sera également accessible via/home
.Dans la pratique, la principale différence entre la
ln -s
solution et lamount --rbind
solution est que withln -s
/home
est un lien symbolique tandis que withmount --rbind
est un répertoire; cela affecte des outils tels quefind
,df
,test
/[
etcEn outre, le
ln -s
échouera s'il/home
existe, tandis quemount --rbind
échouera s'il n'existe pas ou s'il ne s'agit pas d'un répertoire vide.Le commentaire de Mark ci-dessous est également important:
ln -s
nécessite un système de fichiers accessible en écriture sur lequel créer le lien symbolique.la source
ln -s
modifie le système de fichiers, maismount --rbind
pas. Cela signifie que vous pouvez monter le répertoire personnel sur une racine en lecture seule (par exemple, un CD de démarrage), mais vous ne pouvez pas créer de lien symbolique dessus.--bind
et--rbind
ne se soucient pas si mes répertoires cibles sont vides, ils se montent simplement "au-dessus" de tous les fichiers qui s'y trouvent, lesDans ce cas, un montage de liaison et un lien symbolique fonctionneront de la même manière dans la plupart des cas, mais ils présentent des différences importantes.
Un lien symbolique est un peu plus léger. Vous pouvez avoir des centaines ou des milliers de liens symboliques sans que cela ne soit un gros problème de gestion. Ils se trouvent dans le système de fichiers plutôt que d'exiger une configuration spéciale au niveau du système.
Les liens symboliques peuvent être sauvegardés et copiés correctement par des outils comme cp et rsync. Autrement dit, les outils peuvent reconnaître et copier le lien symbolique, garantissant qu'à la restauration ailleurs, le lien est restauré et pointe vers la bonne destination. Tout fonctionnera "correctement" par défaut. En revanche, lors de la sauvegarde ou de la copie d'un montage de liaison, le montage sera traité de manière transparente, ce qui entraînera la copie des fichiers eux-mêmes, ce qui peut entraîner une duplication si vous obtenez également les mêmes fichiers à leur autre emplacement, et nécessitant un travail supplémentaire si vous le souhaitez pour répliquer le montage de liaison à la destination.
Les liens symboliques peuvent être modifiés ou supprimés par tout utilisateur ayant accès au lien, il est donc facile de le rendre superutilisateur uniquement ou de l'ouvrir à un utilisateur particulier. Les montures de liaison ne peuvent être configurées ou modifiées que par le superutilisateur.
Si cela ressemble à une approbation éclatante de liens symboliques, c'est le cas. Ils constituent un moyen plus simple de relier les fichiers et les répertoires. Vous utiliseriez des montures de liaison uniquement pour les situations où un lien symbolique ne fonctionnerait pas, ce qui peut être moins de situations que vous ne le pensez. La plupart des outils, y compris les outils de sauvegarde et de synchronisation, ont un comportement par défaut raisonnable pour les liens symboliques et leur traitement des liens symboliques peut être configurable. Les montages de liaison sont transparents pour ces outils, vous perdez donc cette flexibilité et vous risquez de perdre le comportement raisonnable (par exemple, comme mentionné ci-dessus, duplication de répertoires dans vos sauvegardes).
la source
Une autre différence est que le lien symbolique est symbolique , c'est-à-dire qu'il fait simplement référence à un chemin - une chaîne de caractères, et il est déréférencé chaque fois que vous ouvrez un sous-répertoire / fichier dans le chemin cible. En revanche,
mount --rbind
se comporte plutôt comme un lien dur, pour lequel le chemin n'est pas réévalué à chaque déréférence.Cela fait une différence dans certains scénarios comme
chroot
. Par exemple, vsftpdchroot
s dans le répertoire personnel du compte utilisateur FTP auquel vous vous connectez. Ainsi, si vous placez un lien symbolique dans ce répertoire, vousvsftpd
ne pourrez pas le déréférencer, et donc la cible ne sera pas accessible via FTP. Si vous le faites à la placemount --rbind
, vousvsftpd
accéderez simplement à ce sous-arbre comme s'il était vraiment là, de la même manière que lorsque vous y avez lié un fichier en dur.la source