¿Cuál es la diferencia entre ln -s y mount --rbind?

8

Cuál es la diferencia entre:

ln -s /mnt/extra/home /

y

mkdir /home
mount --rbind /mnt/extra/home /home
NerdOfLinux
fuente
1
lnhace enlaces; en particular, ln -shace enlaces simbólicos. mountmonta un sistema de archivos en un directorio. Ellos no tienen nada en comun.
AlexP
Pero mount --rbind /mnt/extra/homeya es un directorio montado
NerdOfLinux
Ponga eso como respuesta y marcaré esta pregunta como resuelta :)
NerdOfLinux

Respuestas:

13

mount --rbindrealiza un montaje de enlace recursivo; es decir, /mnt/extra/hometambién se podrá acceder a la jerarquía del sistema de archivos montada /home.

En la práctica, la principal diferencia entre la ln -ssolución y la mount --rbindsolución es que with ln -s /homees un enlace simbólico mientras mount --rbindque es un directorio; esto afecta a herramientas como find, df, test/ [, etc.

Además, ln -sfallará si /homeexiste, mientras mount --rbindque fallará si no existe o si no es un directorio vacío.

El comentario de Mark a continuación también es importante: ln -snecesita un sistema de archivos grabable en el que crear el enlace simbólico.

AlexP
fuente
77
La gran diferencia es que ln -smodifica el sistema de archivos, mientras mount --rbindque no lo hace. Esto significa que puede montar el directorio de inicio en una raíz de solo lectura (por ejemplo, un CD de arranque), pero no puede hacer un enlace simbólico en él.
Mark
3
--bindy --rbindno me importa si mis directorios de destino están vacíos, simplemente se montan "encima" de los archivos que estén allí, dejándolos inaccesibles
Xen2050
7

En este caso, tanto un montaje de enlace como un enlace simbólico funcionarán de manera similar para la mayoría de los propósitos, pero tienen diferencias importantes.

Un enlace simbólico es un poco más ligero. Puede tener cientos o miles de enlaces simbólicos sin que sea un gran problema de gestión. Se sientan en el sistema de archivos en lugar de requerir una configuración especial a nivel de sistema.

Los enlaces simbólicos se pueden respaldar y copiar correctamente mediante herramientas como cp y rsync. Es decir, las herramientas pueden reconocer y copiar el enlace simbólico, asegurando que en la restauración en otro lugar el enlace se restaure y apunte al destino correcto. Todo funcionará "correctamente" de forma predeterminada. Por el contrario, al realizar una copia de seguridad o copiar un montaje de enlace, el montaje se tratará de forma transparente, lo que hará que los archivos se copien, lo que puede conducir a la duplicación si también obtiene los mismos archivos en su otra ubicación, y requerirá trabajo adicional si lo desea para replicar el montaje de enlace en el destino.

Los enlaces simbólicos pueden ser modificados o eliminados por cualquier usuario que tenga acceso al enlace, por lo que es fácil hacerlo solo para superusuario o abrirlo a un usuario en particular. Los montajes de enlace solo pueden ser configurados o modificados por el superusuario.

Si esto suena como un respaldo brillante de enlaces simbólicos, lo es. Son una forma más directa de vincular entre archivos y directorios. Usaría monturas de enlace solo para situaciones en las que un enlace simbólico no funcionaría, lo que puede ser menos situaciones de lo que parece. La mayoría de las herramientas, incluidas las herramientas de copia de seguridad y sincronización, tienen un comportamiento predeterminado sensible para los enlaces simbólicos y su tratamiento de los enlaces simbólicos puede ser configurable. Los montajes de enlace son transparentes para tales herramientas, por lo que pierde esa flexibilidad y puede perder el comportamiento sensible (por ejemplo, como se mencionó anteriormente, la duplicación de directorios en sus copias de seguridad).

thomasrutter
fuente
0

Una diferencia más es que el enlace simbólico es simbólico , es decir, solo hace referencia a una ruta , una cadena de caracteres, y se desreferencia cada vez que abre un subdirectorio / archivo en la ruta de destino. Por el contrario, se mount --rbindcomporta más como un enlace rígido, para el cual la ruta no se vuelve a evaluar en cada desreferencia.

Esto hace la diferencia en algunos escenarios como chroot. Por ejemplo, vsftpd chroot s en el directorio de inicio de la cuenta de usuario FTP en la que inicia sesión. Por lo tanto, si coloca un enlace simbólico en ese directorio, vsftpdno podrá desreferenciarlo y, por lo tanto, el objetivo no será accesible a través de FTP. Si, en cambio mount --rbind, lo hace , vsftpdaccederá a ese subárbol como si realmente estuviera allí, de manera similar a como había vinculado allí un archivo.

Ruslan
fuente