Crear un enlace duro recursivo de toda la carpeta

Crear un enlace duro recursivo de toda la carpeta

En primer lugar, sé que no se pueden crear vínculos físicos de una carpeta.

Me preguntaba si había algún comando (Linux) que pudiera crear automáticamente (y recursivamente) el árbol de carpetas posterior en el destino y luego vincular automáticamente todos los archivos desde el origen al destino.

Respuesta1

No estoy seguro de lo que quieres decir con "luego vincula todos los archivos desde el origen al destino automáticamente". Y quieres explícitamente recursividad.

Si desea que las dos ubicaciones permanezcan "sincronizadas", por ejemplo, la eliminación o creación de un archivo debe observarse en ambas a la vez, luego vincule el montaje (esta otra respuesta) es bueno. Tenga en cuenta que la solución no deja rastro en el sistema de archivos. Si crea un vínculo físico, se crea en el sistema de archivos. Mueva el disco y monte el sistema de archivos en otro sistema operativo y el enlace físico seguirá ahí. Reinicie y el enlace duro seguirá ahí. Los montajes de enlace están en el nivel del sistema operativo. No solo necesitaría ordenar por separado al otro sistema operativo que vincule el montaje después de mover y montar el disco. Si no mueve el disco, aún debe indicarle al sistema operativo actual que vincule el montajede nuevodespués de que se reinicie (si lo que desea es una solución permanente).

Un enlace simbólico a un directorio es algo similar y existe en el sistema de archivos.

ln -s /original /other

Si el enlace simbólico y su destino pertenecen al mismo sistema de archivos y el enlace simbólico esrelativo, entonces funcionará incluso si el sistema de archivos se monta en otro lugar (punto de montaje diferente, posiblemente en un sistema operativo diferente). Hay razones por las que un enlace simbólico puede no ser lo que desea (ejemplo).

Tenga en cuenta que el montaje de enlaces o los enlaces simbólicos no son realmente recursivos. Es unsolteroacto que "enlaza" dos caminos. No hace nada por caminos más profundos. Su (semi-)equivalencia surge porque existe algún tipo de vínculo entre los respectivos ((((...)tatar-)tatar-)abuelos "directorios".

Ahora bien, si por "luego vincular automáticamente todos los archivos desde el origen al destino" quiere decir "hacer esto automáticamente pero una vez", entonces puede hacerlo con cp:

cp -lR /original /other

( -lSin embargo, POSIX no lo requiere). Es como cp -Rpero con enlaces duros. Esto es realmente recursivo. Pero también es una acción única. Los subárboles de directorios están separados, solo los archivos normales aparecen vinculados. La creación o eliminación de archivos no se reflejará.Acciones que rompen enlaces durosromperá los enlaces duros.

Respuesta2

sería unenlazar montajeser una mejor solución? Hace exactamente lo que desea, que es que todos los archivos sean iguales de forma recursiva en dos rutas diferentes.

Este comando /othertiene el mismo contenido que el montaje o directorio existente /original:

mount --bind /original /other

Cualquier cambio que realice en cualquiera de ellos /originalaparecerá /otherinmediatamente en el otro porque las dos rutas ahora son punteros al mismo montaje.

información relacionada