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)
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 🙂
Me gustaMe gusta
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 😉
Me gustaMe gusta
MUY BUENO TU BLOG…. GRACIAS ME SIRVE PARA UN QUIZ QUE TENGO HOY
Me gustaMe gusta
Muy interesante todo. Me ha servido mucho la informacion, gracias y sigue asi con tu blog.
Me gustaMe gusta
La informacion que me das es concisa y la esplicas muy bien, gracias.
Me gustaMe gusta
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.
Me gustaMe gusta
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
Me gustaMe gusta
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.
Me gustaMe gusta
muy interesante.. apenas principiando.. me sirvio. Muchas gracias, saludos desde medellin,colombia
Me gustaMe gusta
Esta buena esa explicación gracias por toda la ayuda…
Me gustaMe gusta
Muchas gracias me sirvio un monton para mi examen de Ubuntu Server 😉
Me gustaMe gusta
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]
Me gustaMe gusta
¿Por qué dices que son duros los enlaces?
Me gustaMe gusta
el hecho de que este entre [] indica que es un parámetro opcional 😉
Me gustaMe gusta
Muchas gracias el articulo esta chido……
Me gustaMe gusta
Gracias!!!
Me gustaMe gusta
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.
Me gustaMe gusta
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
Me gustaMe gusta
muchas gracias por el aporteee me ayudo bastate estaba demasiado perdido en el tema muchas grax
Me gustaMe gusta
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!
Me gustaMe gusta
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
Me gustaMe gusta
Gracias por la respuesta, te acabas de ganar un fan..(luego no te quejes!)
Me gustaMe gusta
¿¡¿ un fan ?!? yuuujuuu… ¡tiembla Justin Bieber! (o como quiera que se escriba) 😉
Me gustaMe gusta
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
Me gustaMe gusta
¿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 😉
Me gustaMe gusta
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 gustaMe gusta
Me alegra que te haya sido de utilidad @Joe.
Un saludo desde el sur de España
Me gustaMe gusta
Hola amigos. Como hago para visualizar o listar todos los enlaces simbolicos que tengo en un servidor?
Me gustaMe gusta
Utiliza el parámetro -l del comando find del siguiente modo
find / -type l
Ya me contarás cómo te ha ido.
Suerte y un saludo
Me gustaMe gusta
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
Me gustaMe gusta
uffffffffff gracias muy buen aporte
Me gustaMe gusta
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
Me gustaMe gusta
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
Me gustaMe gusta
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?
Me gustaMe gusta
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
Me gustaMe gusta
borre opt x accidente y nose como hacer??? ayuda
Me gustaMe gusta
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
Me gustaMe gusta
Excelente información. Gracias. Gente como tú gana adeptos para Linux.
Me gustaMe gusta
Gracias compañero. Me alegra saber que te ha sido de utilidad.
Me gustaMe gusta
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
Me gustaMe gusta
Tendrías que recurrir a NFS, Samba o similar
Me gustaMe gusta
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.
Me gustaMe gusta
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
Me gustaMe gusta
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 gustaMe gusta
Me alegra que te haya sido de utilidad.
Bienvenido y gracias por los buenos deseos.
Un saludo
Me gustaMe gusta
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í.
Me gustaMe gusta
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
Me gustaMe gusta
Podría servirte lanzar un ls -l en el directorio en el que se encuentra el enlace simbólico.
Un saludo
Me gustaMe gusta
Un pequeño apunte, para eliminar el exceso de información producida por un comando
ls -l
, puede usarse un filtro con la siguiente estructura:$ ls -l | grep ^l
Me gustaMe gusta
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 gustaMe gusta
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
Me gustaMe gusta
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
Me gustaMe gusta
Si acaso «iniciados» (eruditos nos viene algo grande ;))
Lo más sencillo es eliminar el enlace simbólico y volverlo a crear (simple, ¿verdad? ;))
Me gustaMe gusta
Realmente lo más sencillo e intuitivo sería poder editarlo, pero ya me ando resignando a que en Linux no se puede esperar usabilidad.
Con respecto al mismo problema, usar enlaces para poner parámetros no debería resultar ya que se me ocurrió hacer eso esperando que el comportamiento fuese igual que los accesos directos de Windows, pero entonces dice que el enlace está roto.
Osea, parece que no es posible crear enlaces con parámetros.
Dicho de otra manera, los enlaces de Linux no son compatibles con los accesos directos de Windows y son mucho más capados.
Me gustaMe gusta
Son conceptos totalmente distintos (aunque, en ocasiones, queramos usarlos de otro modo).
Lo más parecido a un acceso directo (de Windows) que podríamos esperar, son los ficheros .desktop de las distribuciones actuales.
Estos ficheros si que admiten parametrización y ser cambiados de ubicación sin que dejen de funcionar 😉
Me gustaMe gusta
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
Me gustaMe gusta
¿algo así como ls -l en la terminal?
Un saludo
Me gustaMe gusta
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
Me gustaMe gusta
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.
Me gustaMe gusta
Andalinux, que alegría encontrar lo que buscaba linkado por tí…
Un saludo.-
Me gustaMe gusta
Coooooondee ¡Antonio! la alegría, como puede comprobarse, es mutua 😉
La pregunta es: ¡¿qué hace piruleando con Linux un señor como ud.?! 😛
Me gustaMe gusta
La pregunta que me surge es: cuando reinicio el sistema los enlaces a discos que están fuera del sistema de archivos aparecen como rotos ¿como puedo hacer para solucionar este problema?
Me gustaMe gusta
Reblogueó esto en principia technologica.
Me gustaMe gusta
Siempre que intento hace un enlace me dice
ln: el objetivo «enlace.jpg» no es un directorio
Y yo pienso, ya sé que no es un directorio, es el nombre de un archivo jpg, el nombre del enlace ¿cómo va a ser un directorio?
Me gustaMe gusta
Asegúrate de escribir tal y como se indica en el post… enlazar a ficheros (todo en linux lo es) funciona sin problemas
Me gustaMe gusta
buen post!! congratz!!
Me gustaMe gusta
Queridos tengo un problema que necesito resolver:
He instalado un servidor ftp en debian 7, el server tiene 4 hdd con informacion que deseo publicar, he creado symlink de las carpetas que quiero esten publicas en el ftp, cuando accedo via web veo los enlaces pero no a la informacion contenida en las carpetas y no he podido resolver, alguna idea me seria muy util.
Gracias anticipadas
Me gustaMe gusta
Yo miraría los permisos
Me gustaMe gusta
Se agradece la guía, luego de unas pruebas funciono sin problemas.
Saludos
Me gustaMe gusta
No sabe lo que me alegra saberlo, gracias por compartir su experiencia 👍
Me gustaMe gusta
Muchas gracias. Buenísima la explicación. Saludos!
Me gustaMe gusta
Gracias a ti, Sonia por comentar.
Me alegra que te haya gustado y sido de utilidad.
Un saludo
Me gustaMe gusta