Manejo de enlaces simbólicos en Linux
Con este post me gustaría iniciar una serie de artículos cuyo objetivo no es otro que ofrecer a los lectores una serie de herramientas básicas (de ahí que como imagen haya optado por colocar una caja de herramientas que volveré a utilizar para destacar estos artículos añadiéndoles alguna otra que haga alusión al tema que vaya a tratarse) para el manejo de Linux.
En esta primera entrega me gustaría centrarme en el uso de los enlaces simbólicos que, aunque simples una vez comprendido su funcionamiento, son de extrema utilidad al gestionar nuestro sistema de archivos.
Definición de enlace simbólico
Lo primero sería explicar qué es un enlace simbólico pero, como no quiero aburriros con los detalles lo mejor será incluir un enlace donde poder consultarlo.
Como más de uno se habrá quedado igual añadiré que podrían verse (con ciertas diferencias) como los accesos directos del “ventanuco“ o lo que es lo mismo: la posibilidad de colocar en cualquier sitio un directorio (o fichero) que realmente se encuentra ubicado en otro lugar.
Tipos y creación de enlaces
Enlaces simbólicos
Son los enlaces que suelen utilizarse habitualmente de ahí que incluso suela denominarse, por defecto, enlace simbólico a cualquier enlace que se cree.
Cualquier cambio que se haga tanto en el directorio original como en el contenido del enlace simbólico quedará reflejado en el otro (si cambias el contenido del enlace simbólico se podrá ver en el original y viceversa)
Borrar el enlace simbólico no afecta al original (seguirá existiendo)
Para crear un enlace simbólico 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 simbólico consigo tener todos los proyectos web que voy creando en mi equipo dentro de mi carpeta de usuario.
La idea es que si algún día cambio de distribución Linux no perder ese trabajo por un despiste: toda mi documentación y proyectos están en mi directorio de usuario ($HOME) así no tengo que recordar que dentro del sistema de ficheros de Linux tengo cosas que me podrían hacer falta
TRUCO Para recordar el parámetro -s asociar la palabra SOFT o SIMBÓLICO seguro que así no se te olvida
Enlaces duros
Igual que el simbólico pero con un matiz: cuando se borre el último enlace que apunte al DIRECTORIO_ORIGINAL (se pueden crear tantos enlaces como se necesiten a un directorio cualquiera de nuestro sistema de archivos) se borrará el DIRECTORIO_ORIGINAL
La sintaxis es la misma cambiando única y exclusivamente el parámetro por -t; sirva de ejemplo
ln -t $HOME/www /opt/joomla1.5.1/joomla-1.5.2-0/apache2/htdocs/
Identificar enlaces simbólicos
Desde el administrador de archivos pueden identificarse fácilmente por contar con una flecha en la parte inferior del icono de carpeta

Desde la terminal (lanzando un ls -l para que muestre información adicional) veremos que en el bit de tipo en lugar de aparecer una d (de Directorio) aparece una l (de Link)

Ya que estamos con la terminal y recordando el aviso que hicimos sobre los enlaces duros (al borrar el último se borra el DIRECTORIO_ORIGINAL) comentar que para saber cuántos enlaces DUROS apuntan al directorio original basta con mirar el número que hay justo a la derecha de los permisos (en el ejemplo es un 1 porque sólo hay un enlace duro al DIRECTORIO_ORIGINAL)

Eliminar enlaces
Tan sencillo como ejecutar el comando unlink
unlink RUTA_AL_ENLACE_NO_DESEADO
Donde
- RUTA_AL_ENLACE_NO_DESEADO es la ruta a alguno de los enlaces que hemos creado y han dejado de sernos útiles
Conclusión
Espero que este tocho os haya servido para entender algo mejor el funcionamiento y utilidad de los enlaces simbólicos; utilidades todas las que se os puedan ocurrir (recordad el ejemplo para ubicar los proyectos webs en el directorio de usuario y evitar que se pierda con alguna instalación desde cero)
Podría interesarte
61 Respuestas a “Manejo de enlaces simbólicos en Linux”
Trackbacks / Pingbacks
- - 10 agosto 2009
- - 6 marzo 2011
- - 5 enero 2013





















Pero si creas un enlace simbólico y borras el archivo al que “apunta”, rompes el enlace, es decir que si instalas desde cero, tu www dejaria de funcionar, o me equivoco?
Muy bueno el blog
La idea Laucha es copiar el contenido del directorio www a tu cuenta de usuario, borrar el www de Apache y en su lugar crear el enlace a tu $HOME.
Cuando reinstales la única precaución será volver a crear el enlace a tu cuenta de usuario donde tendrás el código de todos tus proyectos web.
Me alegra que te guste el blog, puedes ponerte cómodo… estás en tu casa
MUY BUENO TU BLOG…. GRACIAS ME SIRVE PARA UN QUIZ QUE TENGO HOY
Muy interesante todo. Me ha servido mucho la informacion, gracias y sigue asi con tu blog.
La informacion que me das es concisa y la esplicas muy bien, gracias.
Que tal compañero, soy nuevo en esto de linux, pero al leer este magnifico post, me surgio una pequeña pregunta, si bien se puede crear un enlace simbolico.. hay alguna manera de proteger el enlace de manera que no modifique al original? si mi pregunta el algo tonta me disculpo.. enlace simbolico parece un espejo ó una virtualizacion aunque en algunos casos el termino virtualizacion no se acerque en lo mas minimo a este caso.
Gracias y disculpa la molestia.
No pidas disculpas por querer aprender [ nadie nace sabiendo, ¿verdad?
]
Respecto a la pregunta no termino de captar lo que quieres hacer.
Me explico: cuando creas un enlace simbólico estás, digámoslo así, creando un “atajo” en cualquier punto del árbol de directorios a otra rama de dicho árbol que te interesa
¿Para qué necesitas que no pueda modificarse? Si me planteas cuál es tu objetivo puede que consiga indicarte una alternativa que resulte viable.
Un saludo y suerte
a mi me interesaria proteger el destino original para este caso: digamos que quiero hacer un enlace simbolico de mis proyectos a la carpeta de skydrive para que lo que modifique en mis proyectos originales se respalde inmediato a skydrive, pero yo soy muy desconfiado que tal si alguien se mete a mi cuenta de skydrive y borra todo entonces eso afectaria tambien a la carpeta original y perderia todo lo que tengo.
muy interesante.. apenas principiando.. me sirvio. Muchas gracias, saludos desde medellin,colombia
Esta buena esa explicación gracias por toda la ayuda…
Muchas gracias me sirvio un monton para mi examen de Ubuntu Server
A mi no me deja crear enlances simbolicos, todos los crea como enlaces duros, saben como puedo hacerle, ya intente con ln -s y con ln –symbolic pero aun asi no los crea como simbolicos
En wikipedia encontre algo parecido a este post de blog pero esta un poco diferente la sentencia de ln
ln [-s]
¿Por qué dices que son duros los enlaces?
el hecho de que este entre [] indica que es un parámetro opcional
Muchas gracias el articulo esta chido……
Gracias!!!
Tengo la necesida de aumentar el espacio de una particion en linux que se me esta llenado y creo que con los enlces simbolicos puedo llevar los datos a otra partición con suficiente espacio, pero no se como hacerlo a pesar de las explicaciones que son bastante claras pero no aclara este extremo que planteo, agradecería cualquier explicación de como hacerlo.
Te recomendaría montar una partición o disco nuevo en tu árbol de directorios. Si quieres tratamos el tema a través del soporte técnico y te oriento sobre el modo de hacerlo.
Un saludo
muchas gracias por el aporteee me ayudo bastate estaba demasiado perdido en el tema muchas grax
Hola, googleando (¿se puede decir así?) acabé aquí..y dado que mis dudas trataban sobre enlaces simbólicos, ¿que mejor sitio?.
Conciso y claro, solo me quedó una duda..¿estos enlaces solo pueden referenciar a un directorio? es que veo que en tus ejemplos especificas claramente links a directorios…¿no puedes hacer un link a un archivo?
Salu2!
No es mala pregunta… ten en cuenta que en Linux TODO (incluidos los periféricos o componentes como la tarjeta de sonido) son tratados como ficheros
Luego la respuesta es: se pueden enlazar ficheros
Gracias por la respuesta, te acabas de ganar un fan..(luego no te quejes!)
¿¡¿ un fan ?!? yuuujuuu… ¡tiembla Justin Bieber! (o como quiera que se escriba)
hola compi buen blog pero apesar de todo estoy muy perdido con linux y me estoy rompiendo la cabeza pero no doy con la tecla veras kiero mover archivos a mi carpeta descargas desde un pen y desde mi disco duro y no se como se hace porque si intento moverlos a la carpeta o al escritorio me dice que no se puede disco lleno y no se porque dice eso si tengo espacio todavia bueno pues no me enrrollo mas si me pudieras echar una mano gracias
¿has mirado si tienes permiso de escritura en la carpeta “descargas”?
¿puedes copiar en otras carpetas de tu disco duro?
Como el problema tiene poco que ver con el tema del artículo, ponte en contacto a través del soporte técnico informático del blog
soy re flojo posteando, pero este articulo me lo ha dejado claro, siempre tu(v|b)e la duda entre que diferenciaba un simbolico a un duro (hard link)
el manual: man ln
no me lo dejo muy claro
gracias desde Chile!
Me alegra que te haya sido de utilidad @Joe.
Un saludo desde el sur de España
Hola amigos. Como hago para visualizar o listar todos los enlaces simbolicos que tengo en un servidor?
Utiliza el parámetro -l del comando find del siguiente modo
find / -type lYa me contarás cómo te ha ido.
Suerte y un saludo
Excelente informacion gracias!!! tengo una duda como puedo ver las rutas de los archivos de un enlace duro?? he intentado pero no he encontrado nada… gracias de antemano
uffffffffff gracias muy buen aporte
Tengo una carpeta con la particion casi llena y tengo otra particion con mucho espacio, un link simbolico me serviria para que mi nueva informacion se guarde en la otra parcion??
/opt/miprograma/logs —> Particion casi llena
/home/miprograma/ —> Particion con mucho espacio
Comp puedo hacerle?
Muchas gracias por tu vlaiosa ayuda
Te recomendaría mover todo el contenido de la carpeta que está a punto de “rebosar” a la nueva partición
y luego que borres la carpeta /opt/miprograma/logs sustituyéndola por un enlace (del mismo nombre que la carpeta que has borrado) apuntando a la que creaste nueva (y en la que has metido los logs)
Aunque no venga al cuento, te recomendaría que comprimieses los ficheros de logs más antiguos pues no creo que tengan demasiada importancia y ahorrarás bastante espacio (los ficheros de texto plano tienen altas tasas de compresión)
Suerte y un saludo
hola, estoy haciendo un taller sobre shell, y la pregunta es como contar los vinculos que tiene un archivo, la verdad estoy perdido sobre como hacer este conteo?
hola,
este es un tema que nunca entendi del todo, asi k a ver si m echas una mano:
¿Que diferencia hay entre un enlace simbolico, externamente claro, y los accesos en windows? Ambos tienen la misma finalidad(distimtas rutas de acceso a un mismo fichero), ¿no?
Gracias:D, estupendo articulo
borre opt x accidente y nose como hacer??? ayuda
Recuperarlo lo vas a tener complicado y no te garantizo que te funcione bien.
Si no quieres perder las aplicaciones instaladas te recomendaría instalar el mismo sistema operativo en otra partición (o mejor en una máquina virtual) y copiar el contenido de /opt a la partición perdida.
Un saludo
Excelente información. Gracias. Gente como tú gana adeptos para Linux.
Gracias compañero. Me alegra saber que te ha sido de utilidad.
Muy buen post. muy claro todo.
Solo tengo una pregunta. Ayuda urgente porfavor.
Como haría si quiero que el enlace simbolico sea a otro servidor.
Muchas gracias de antemano
Tendrías que recurrir a NFS, Samba o similar
Gracias por tu respuesta.
Te comento mi situación a ver si me puedes echar una mano.
Tengo una aplicación que me guarda los archivos en el directorio /var/lib/codendi/documentos/.
Lo que quiero hacer es que ahora esos documentos los guarde en otro servidor.
S.O CentOS 5.3, Aplicación llamada Codendi y desarrollada en php.
Gracias.
Existe bastante información en la red; sirve de ejemplo este artículo en el que explican cómo montar una unidad de red utilizando Samba y NFS
Para problemas concretos, dame un toque a través del soporte técnico.
Suerte y un saludo Oscar
Muy buena explicacion amigo..al fin m qedo mas q claro esto de los enlaces..
a tener cuidao con los enlaces duros entonces… Se agradece y q sigan los exitos!
Me alegra que te haya sido de utilidad.
Bienvenido y gracias por los buenos deseos.
Un saludo
Muy buen artículo. Muy claro y conciso. Yo no he empleado mucho los enlaces simbólicos, posiblemente al tipo de estructura que sigo en mi sistema de archivos.
Aún así, sí me gustaría ver qué otros usos y ventajas ofrecen a otros usuarios. Si miraré por internet y si alguno me llama la atención lo pondré por aquí.
Hola me gustaria saber como recupero la ruta de un enlace es decir:
ln -s genera @file o un ~directorio
si lo que tengo es @file o un ~directorio como se a donde apuntan, como recupero esta informacion
Podría servirte lanzar un ls -l en el directorio en el que se encuentra el enlace simbólico.
Un saludo
Hola Informático de Guardia, estoy empezando con Ubuntu, estoy trabajando con un servidor donde quiero instalar LAMP desde su fuente, asi que tu tema me fue de gran ayuda. De igual forma quiero darte las gracias por tu agran aporte a la comunidad. y de igual forma, pedirte ayuda de una manual para instalar mysql-5.5.25 para ubuntu, muchas gracias por tu tiempo.
Me alegra que te guste y sea de utilidad el blog.
Respecto a la ayuda que pides cuenta con ella; no tienes mas que contactarme a través del soporte técnico (por no “aburrir” al resto) y vemos qué se puede hacer.
Un saludo y bienvenido
Hola amigos eruditos, quiseiara saber como modificar el target de un enlace simbolico ya que necesito agregarle unos parametros a goggle-creme en linux ubuntu
Si acaso “iniciados” (eruditos nos viene algo grande
)
Lo más sencillo es eliminar el enlace simbólico y volverlo a crear (simple, ¿verdad?
)
hola, como podria listar todos los enlaces (duros y simbolicos) de un directorio
ademas si es simbolico que muestre el nombre del archivo la que apunta.
gracias
¿algo así como ls -l en la terminal?
Un saludo
me parece que la palabra adversión hace referencia a una adversidad, un contratiempo… pero si es para un sentimiento de asco o repugnancia, etc me parece que se dice aversión. aunq no estoy seguro. por lo demás muy bueno
Interesante/apreciada matización Miguel; me has hecho dudar y parece que, aunque anticuada, es aceptada por la RAE
Gracias y bienvenido a la que puedes considerar tu casa.
Andalinux, que alegría encontrar lo que buscaba linkado por tí…
Un saludo.-
Coooooondee ¡Antonio! la alegría, como puede comprobarse, es mutua
La pregunta es: ¡¿qué hace piruleando con Linux un señor como ud.?!