Estoy tratando de entender la diferencia entre usar ln -sy mount --bind. En el escenario básico, puedo usar ambos para acceder a un directorio desde otro lugar. ¿En qué escenarios esos dos se comportarán de manera diferente?
                    
                        command-line
                                mount
                                symbolic-link
                                
                    
                    
                        Łukasz
fuente
                
                fuente

rm -rde amount --bind. Con aln, elimina el enlace, mientras que para a--bind, tiene el mismo efecto que ejecutarlorm -ren el objetivo. No es bueno, como encontré poco antes de reconstruir uno de mis servidores ...Respuestas:
Se comportarán de manera diferente en al menos dos casos:
A) que tienen algo más (B) montado en ellos. El enlace mostrará el contenido de mount target (B) en lugar del original (A).Además, puede enlazar montar un directorio o archivo en un directorio o archivo existente, enmascarando el contenido original (haciendo que el contenido original sea inaccesible a menos que el original se haya montado en otro lugar). Un enlace simbólico requiere que el original se mueva o se elimine.
fuente
Bueno,
ln -screa un enlace simbólico, mientras quemount --bindcrea una montura.Un enlace simbólico es un tipo especial de archivo. Si lo hace
ln -s /var/target /var/link,/var/linkhabrá un archivo que contiene la ruta "/var/target" en él. La única diferencia entre un enlace simbólico y un archivo ordinario es que cuando un programa intenta realizar una operación en un enlace simbólico, la operación generalmente se realiza en el destino en lugar del archivo. Entonces, si lo hacels /var/link, ellsprograma intentará obtener una lista de directorio para/var/link, pero en realidad obtendrá una lista de directorio para/var/target.Sin embargo, los enlaces simbólicos siguen siendo solo archivos. Pueden ser renombrados y eliminados y todo ese jazz. Tenga en cuenta que no puede crear un enlace simbólico (o un archivo ordinario)
/var/linksi ya hay un archivo llamado/var/link; primero deberías deshacerte de él.Un montaje no es un archivo; Es un registro que el núcleo guarda en la memoria. Si lo hace
mount --bind /var/target /var/mount, el núcleo registrará el hecho de que/var/mountahora es un nuevo nombre para/var/target. (No conozco los detalles; en particular, no sé si montar algo en un subdirectorio/var/targethará que aparezca/var/mounttambién, o por qué o por qué no. Se agradecerán las modificaciones de esta respuesta). Así que ahora si lo hacels /var/mount, sucederá lo mismo que lo hizols /var/target, porque/var/mounty/var/targetson el mismo directorio.Las monturas no son archivos. No sé qué pasaría si intentaras renombrar o eliminar
/var/mount. Tenga en cuenta que no puede montar nada a/var/mountmenos que ya haya un directorio en/var/mount.fuente
ln -s ../../myfile .. Si mueve eso a otro directorio, apuntará a otro lugar porque es un enlace relativo. Esto puede ser útil si necesita hacer una copia de seguridad de un subárbol y aún así los enlaces funcionan en la copia de seguridad.Además, ln -s sobreviviría a un reinicio; mientras que mount --bind no lo haría, a menos que edite / etc / fstab para hacerlo persistente.
fuente
Además de las otras respuestas. El sistema no permite enlaces duros al directorio:
La montura le permite crear enlaces duros, es decir, dos o más nombres para el mismo inodo :
(Uno puede encontrar que ayuda para la copia de seguridad de instantáneas con la versión anterior de rsync).
Además, tenga en cuenta que este montaje no está completo:
Por lo tanto, el soporte aún es de lectura y escritura, incluso si solicité la opción ro (solo lectura).
fuente