Doble enlace simbólico (para partición y servidor)

Doble enlace simbólico (para partición y servidor)

Espero que esto no sea un duplicado, busqué pero no pude encontrar una respuesta.

Estoy usando Linux Mint. Tengo una partición de datos que se monta automáticamente al arrancar. Creé enlaces simbólicos desde esta partición en mi /home/usercarpeta.

El problema es que tengo una carpeta 'www' en mi partición de datos (es una copia de seguridad de los sitios web que necesito restaurar) y necesito crear un enlace simbólico en /home/user. También necesito vincularlo simbólicamente para /var/www/htmlpoder realizar cambios en los archivos/carpetas de mi servidor. ¿Es posible? ¿Cuál sería la mejor manera de hacerlo?

Anteriormente mantenía la carpeta 'www' directamente, /home/userpor lo que solo necesitaba un enlace simbólico. Pero ahora que tengo una partición de datos separada, no sé cómo hacerlo. Podría tener solo un enlace simbólico para el servidor, pero tendría que copiar/hacer una copia de seguridad manualmente de cualquier información nueva que se agregue, y prefiero hacerlo automáticamente, si hay una manera.

Respuesta1

sí, es posible vincular simbólicamente una carpeta a varios lugares. Hasta donde entiendo tu pregunta, quieres dos enlaces simbólicos:

/home/user/www -> /mnt/partition/www
/var/www/html -> /mnt/partition/www

Estaré feliz de ajustar mi respuesta si esto fuera diferente. Sin embargo, el procedimiento general debería ser el mismo.

 ln -s /mnt/partition/www /home/user/www
 ln -s /mnt/partition/www /var/www/html

Si necesita toda la estructura de directorios de /mnt/partition/wwwunder /var/www/htmly /home/user, como en dos "carpetas" idénticas que se mantienen sincronizadas, eche un vistazo a los montajes vinculados.

Respuesta2

Si entiendo las cosas correctamente, tienes (un poco abstracto):

/data/html/xyz.html

tienes un enlace en tu directorio de inicio:

/home/user/html -> /data/html

entonces los datos en realidad se almacenan en la partición separada/data

Ahora puedes usar el archivo xyz.html de /var/www/html vinculando:

/var/www/html -> /data/html

Los comandos para eso son:

cd /home/user
ln -s /data/html .
cd /var/www
ln -s /data/html .

Sin embargo, veo dos problemas con esta configuración.

  1. Es posible que su servidor no esté configurado para seguir un enlace en /var/www. Por ejemplo, Apache necesita tener la +FollowSymLinksopción en su configuración ya que esto es un riesgo potencial para la seguridad.
  2. Cada cambio editado se "envía" inmediatamente al servidor web. Probablemente debería hacer esto a través de algún sistema de control de revisiones, de modo que, como máximo, el material comprometido llegue al sitio web.

Hay diferentes maneras de resolver los problemas anteriores. Si el espacio /es la razón para poner todo, /datacrearía /data/wwwun servidor web desde allí en lugar de /var/www(eliminar la necesidad de seguir enlaces simbólicos). También usaría Mercurial para controlar la revisión del material /data/htmly clonarlo en un ubicación predeterminada /data/wwwpara que pueda confirmar desde /data/html(o /home/user/html) y una vez que todo esté estable, realice una confirmación y presione para que se entregue desde el sitio web.

Respuesta3

En Linux, cualquier almacenamiento físico se puede asignar a cualquier ruta del sistema de archivos cualquier cantidad de veces. Las rutas de archivos son solo inodos (identificadores/punteros) al almacenamiento físico. Puede asignar el mismo archivo/carpeta físico a diferentes rutas del sistema de archivos de al menos 3 maneras:

1) montaje. Así como puede montar una unidad física completa en un directorio, también puede montar un directorio existente arbitrario en otra ubicación (montaje vinculado). Este es completamente transparente para cualquier aplicación del sistema, ningún programa notará que el contenido del directorio está montado desde otra ubicación. En tu caso, puedes hacerlo fácilmente.

mount --bind /mnt/partition/www/ /var/www/html/

Esta es la mejor manera de hacerlo, porque a los servidores web generalmente no les gusta seguir enlaces simbólicos de forma predeterminada, porque pueden otorgar acceso a partes del sistema de archivos a las que no se debería acceder.

Puede montar cualquier carpeta en cualquier otra carpeta tantas veces como desee. El directorio original ni siquiera sabe que está montado en otro lugar, el sistema operativo se encarga de esto.

2) enlaces simbólicos. Los enlaces simbólicos son sólo alias. Esta es la unión más débil. A diferencia del montaje, los enlaces simbólicos simplemente contienen (básicamente en forma de texto) una ruta a la que apuntan. Esto significa que no es necesario montarlo en cada arranque (o cuando lo necesite), y es posible que la ruta ni siquiera exista. También puede cambiar. La mayoría de las aplicaciones funcionan con ellos como con archivos normales, pero hay advertencias: los enlaces simbólicos de directorios tienen algunos problemas porque cuando entras y regresas, no necesariamente llegas al mismo lugar. Además, las aplicaciones saben que el archivo/directorio es un enlace. Para evitar ciclos, el sistema operativo limita la longitud de la cadena de eslabones a seguir (casi nunca es un problema, salvo que abuses mucho de ellos). Por supuesto, puedes tener tantos enlaces como quieras, el directorio original ni siquiera los conoce.

ln -s /mnt/partition/www/ /var/www/html/

ln -s /mnt/partition/www/ /home/user/www/

3) enlaces físicos. Debido a que los sistemas de archivos en Unix están diseñados como un conjunto de inodos que apuntan a ubicaciones físicas en el disco duro, cada inodo es solo una dirección para llegar allí. Por lo tanto, puede tener muchos inodos (EN EL MISMO SISTEMA DE ARCHIVOS) apuntando a la misma dirección. Si no utiliza el comando -sde encendido ln, se crea un vínculo físico (si es posible). Todos los nombres de archivos que apuntan al mismo almacenamiento físico son en realidad equivalentes. No existe ningún archivo "original". Todos son el mismo archivo, solo hay dos o más nombres para lo mismo. Debido a que la eliminación en realidad sólo elimina el inodo (y marca el espacio como libre sólo si NINGÚN inodo apunta a él), eliminar un archivo no elimina el otro. Simplemente elimina el nombre. Por supuesto, si elimina todos los enlaces físicos, no habrá inodos que le indiquen dónde encontrar el almacenamiento y finalmente se perderá (el sistema de archivos puede usar el espacio para otra cosa).

Esto no te ayuda en este caso. Los enlaces duros sólo funcionan dentro del mismo sistema de archivos (misma partición), porque cada partición tiene su propia administración de direcciones físicas. Pero incluí esto sólo para completar.

Entonces... enlace simbólico cualquier cosa con cualquier cosa, incluso puede vincular a otro enlace (así es como /usr/libse vinculan la mayoría de las bibliotecas para que el nombre de la biblioteca genérica esté vinculado a la versión específica que está instalada). Si tiene acceso de root, le sugiero montar mediante enlace el directorio que utilizará el servidor web, es la forma más correcta de hacer las cosas. Probablemente nunca necesites enlaces físicos, pero debes saber que existen.

información relacionada