Oh sí. Si ejecuta ln -s
, crea un enlace simbólico, que es un inodo que apunta a un determinado objeto del sistema de archivos, razón por la cual los enlaces simbólicos pueden atravesar sistemas de archivos y los enlaces duros no pueden: los enlaces duros no tienen su propio inodo.
Si monta un sistema de archivos con --bind
, crea un segundo punto de montaje para un dispositivo o sistema de archivos.
Si visualiza un enlace simbólico como una redirección, visualice un --bind
sistema de archivos montado como creando otra puerta de enlace a los datos.
Los enlaces simbólicos y las monturas de unión son un juego de pelota completamente diferente.
El --bind
montaje me parece un poco más robusto y probablemente sea un poco más rápido que trabajar con un enlace simbólico. Por otro lado, no hay inconvenientes serios al usar el enlace simbólico, ya que el impacto en el rendimiento será pequeño (si es que existe).
Editar : He estado pensando en esto, y el éxito en el rendimiento podría ser un poco más grande de lo que pensé originalmente. Si tiene una aplicación que lee muchos archivos diferentes, cada nuevo archivo que se abra requerirá una lectura adicional. Algunas investigaciones aquí sugieren que mi suposición es correcta, por lo que si tiene una aplicación pesada de IO ejecutándose allí, considere la --bind
opción de montar por encima de la solución de enlace simbólico.
La razón por la que no es común, es probablemente el hecho de que un enlace simbólico es visible en un ls
, mientras que un montaje de enlace solo es visible cuando se mira / proc / mounts o / etc / mtab (que es lo que hace el comando de montaje, si es ejecutado sin parámetros). Aparte de eso, no creo que haya ningún problema. Sin embargo, me interesaría si los hay.
Además : otro problema ln -s
es que para algunas aplicaciones, cuando la ruta se desreferencia, puede hacer que la aplicación se resista si "espera" que ciertos elementos estén en lugares específicos.
mount
, cuando se invoca sin ningún argumento, imprime el contenido de/etc/mtab
, que tiene información ligeramente diferente que/proc/mounts
. (En particular,/proc/mounts
(enlace simbólico a/proc/self/mounts
) siempre muestra los puntos de montaje visibles para el proceso al leerlo)Una de las grandes diferencias entre
ln -s
un montaje de enlace es que puede usar un montaje de enlace para "modificar" un sistema de archivos de solo lectura. Por ejemplo, si hubiera un CD montado/mnt/application
y quisiera reemplazarlo/mnt/application/badconfigfile.conf
con una versión correcta, podría hacer esto:No sería posible afectar el mismo cambio usando un enlace simbólico porque no puede modificar el sistema de archivos de destino.
Esto también se puede utilizar para un buen efecto si distribuyó un conjunto de software común a través de NFS (o algún tipo de sistema de archivos de clúster) y desea realizar cambios específicos de host en un sistema. Simplemente puede usar un montaje de enlace en el sistema de destino para anular los archivos o directorios según sea necesario.
fuente
Diferencia práctica n. ° 1 para mí entre ln -s y mount --bind:
vsftpd no permite explorar un directorio a través de un enlace simbólico, pero permite cuando está montado.
No sé qué demonio estás usando, pero puede comportarse de manera similar.
fuente
Se podría notar que, como consecuencia de la unión a una montura, que es en sí misma una unión, que luego se recupera, la unión original permanece intacta, suponiendo que todo permanezca físicamente conectado.
Es decir, si une A a B y une B a C, y luego une D a B, C seguirá unido a A. Eso podría ser lo que desea, o no. Si uno desea que C siga a B, vuelva a montar usando los mismos objetivos, es decir
mount -o remount B C
, o use--rbind
en su lugar. No hay--rebind
opcion.fuente