Cuál es la diferencia entre:
ln -s /mnt/extra/home /
y
mkdir /home
mount --rbind /mnt/extra/home /home
mount --rbind /mnt/extra/home
ya es un directorio montado
Cuál es la diferencia entre:
ln -s /mnt/extra/home /
y
mkdir /home
mount --rbind /mnt/extra/home /home
mount --rbind /mnt/extra/home
ya es un directorio montado
Respuestas:
mount --rbind
realiza un montaje de enlace recursivo; es decir, /mnt/extra/home
también se podrá acceder a la jerarquía del sistema de archivos montada /home
.
En la práctica, la principal diferencia entre la ln -s
solución y la mount --rbind
solución es que with ln -s
/home
es un enlace simbólico mientras mount --rbind
que es un directorio; esto afecta a herramientas como find
, df
, test
/ [
, etc.
Además, ln -s
fallará si /home
existe, mientras mount --rbind
que fallará si no existe o si no es un directorio vacío.
El comentario de Mark a continuación también es importante: ln -s
necesita un sistema de archivos grabable en el que crear el enlace simbólico.
ln -s
modifica el sistema de archivos, mientras mount --rbind
que 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.
--bind
y --rbind
no 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
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).
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 --rbind
comporta 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, vsftpd
no podrá desreferenciarlo y, por lo tanto, el objetivo no será accesible a través de FTP. Si, en cambio mount --rbind
, lo hace , vsftpd
accederá a ese subárbol como si realmente estuviera allí, de manera similar a como había vinculado allí un archivo.
ln
hace enlaces; en particular,ln -s
hace enlaces simbólicos.mount
monta un sistema de archivos en un directorio. Ellos no tienen nada en comun.