Que es un enlace simblico
Lo primero, como no, es explicar lo que es un enlace simblico. En un sistema
Linux o Unix, un enlace simblico, es un acceso directo a un fichero o
directorio. Es algo muy similar al Acceso directo de los programa en Windows.
Cabe decir que hay dos tipos de enlace simblico en Linux: Enlace simblico y
duro.
Enlaces simblicos
Un enlace simblico tambin puede definirse como una etiqueta o un nuevo
nombre asociado a un archivo pero a diferencia de los enlaces fsicos, el enlace
simblico no contiene los datos del archivo, simplemente apunta al registro del
sistema de archivos donde se encuentran los datos. Tiene mucha similitud a un
acceso directo en Windows o un alias en OS X.
Para crear un enlace simblico del archivo archivo.txt a nuevo_nombre.txt,
ejecutamos:
$ ln -s archivo.txt nuevo_nombre.txt
ste enlace tambin aparecer como otro archivo ms en el directorio y
apuntar al mismo contenido de archivo.txt, reflejando todos los cambios que
se hagan tanto para archivo.txt como para nuevo_nombre.txt.
Sobre un enlace simblico tambin se pueden usar todos los comandos bsicos
de archivos (rm, mv, cp, etc). sin embargo cuando el archivo original es
borrado o movido a una ubicacin diferente el enlace dejar de funcionar y se
dice que el enlace est roto.
Un enlace simblico permite enlazar directorios y, usando NFS, tambin
permite enlazar archivos fuera del equipo. En un principio puede parecer
complicado, pero luego de leer detalladamente seguro que tendrs ms claro
cundo usar un enlace simblico y cundo usar uno fsico.
Tipo de enlace simblico
Enlaces duros
Los enlaces duros lo que hacen es asociar dos o ms ficheros compartiendo el
mismo inodo. Esto hace que cada enlace duro sea una copia exacta del resto
de ficheros asociados, tanto de datos como de permisos, propietario, etc. Esto
implica tambin que cuando se realicen cambios en uno de los enlaces o en el
fichero este tambin se realizar en el resto de enlaces.
En sistemas GNU/Linux, los enlaces duros, tienen varias limitaciones. Una es
que slo se pueden hacer enlaces duros a archivos, y no a directorios.
La segunda limitacin es que no pueden expandirse a travs de distintos
sistemas de archivos. Esto significa que no puede crear un enlace permanente
desde /usr/bin/bash hacia /bin/bash si sus directorios / y /usr pertenecen a
distintos sistemas de archivos.
Vamos a crear un enlace duro al fichero "tesis-grupal" que antes usamos y
veremos que efectivamente comparten inodo y que los datos de propietario,
grupo y permisos se mantienen sincronizados:
ln /publico/tesis-grupal /home/pepe/tesis-enlace-duro
O podemos ir al directorio donde deseamos crear el enlace
cd /home/pepe
ln /publico/tesis-grupal tesis-enlace-duro
Luego listamos para analizar los resultados con ls -il
ls -il /publico/tesis-grupal
ls -il /home/pepe/tesis-enlace-duro
Enlaces fsicos
Un enlace fsico no es ms que una etiqueta o un nuevo nombre asociado a un
archivo. Es una forma de identificar el mismo contenido con diferentes
nombres. ste enlace no es una copia separada del archivo anterior sino un
nombre diferente para exactamente el mismo contenido.
Para crear un enlace fsico en Linux del archivo archivo.txt a nuevo_nombre.txt,
ejecutamos:
$ ln archivo.txt nuevo_nombre.txt
El enlace aparecer como otro archivo ms en el directorio y apuntar al
mismo contenido de archivo.txt. Cualquier cambio que se haga se reflejar de
la misma manera tanto para archivo.txt como para nuevo_nombre.txt.
Un enlace se puede borrar usando el comando rm de la misma manera en que
se borra un archivo, sin embargo el contenido del inodo no se eliminar
mientras haya un enlace fsico que le haga referencia. Esto puede tener varias
ventajas, pero tambin puede complicar la tarea de seguimiento de los
archivos. Un enlace fsico tampoco puede usarse para hacer referencia a
directorios o a archivos en otros equipos.
Para crear un enlace simblico lanzaremos el siguiente comando
desde la terminal
ln -s DIRECTORIO_ORIGINAL DIRECTORIO_ENLACE
Donde
DIRECTORIO_ORIGINAL es el directorio al que queremos apuntar
DIRECTORIO_ENLACE es donde queremos poner el enlace al
DIRECTORIO_ORIGINAL
Sirva de ejemplo la siguiente sentencia
ln -s $HOME/www /opt/joomla1.5.1/joomla-1.5.2-0/apache2/htdocs/
Donde
/opt/joomla1.5.1/joomla-1.5.2-0/apache2/htdocs/ es la ruta al directorio en el
que se encuentran los archivos del servidor web que tengo montado en mi
equipo con el stack de Bitnami
$HOME es mi directorio de usuario
www es un directorio que me he creado en mi carpeta de usuario
Con ese enlace simblico consigo tener todos los proyectos web que voy
creando en mi equipo dentro de mi carpeta de usuario.
La idea es que si algn da cambio de distribucin Linux no perder ese trabajo
por un despiste: toda mi documentacin y proyectos estn en mi directorio de
usuario ($HOME) as no tengo que recordar que dentro del sistema de ficheros
de Linux tengo cosas que me podran hacer falta
TRUCO Para recordar el parmetro -s asociar la palabra SOFT o SIMBLICO
seguro que as no se te olvida