El post que buscas se encuentra eliminado, pero este también te puede interesar

Enlaces simbolicos y duros en GNU/Linux

Anuncios

Enlaces Simbólicos

Un enlace simbólico (enlace blando, o acceso directo) es un archivo especial que contiene un nombre de camino. Así, los enlaces blandos pueden apuntar a ficheros en sistemas de ficheros diferentes (posiblemente montados por NFS desde máquinas diferentes, unidades extraibles), y no tienen por qué apuntar a ficheros que existan realmente.


Un enlace simbólico permite dar a un fichero el nombre de otro, pero no enlaza el fichero con un inodo, es decir, en realidad lo que hacemos es enlazar directamente al nombre del fichero. Los enlaces simbólicos son ampliamente usados para las librerías compartidas.

Para comprendelo mejor, un "enlace simbólico" no es más que una referencia (enlace) a una carpeta (directorio) o fichero que está situado en un lugar físico distinto.




Crear enlaces simbólicos de directorios

La mejor forma de explicarlo es creando un enlace simbólico, pasemos a ello, el directorio publico contiene varios documentos, y está localizado en /publico

Ahora vamos a crear un enlace simbólico en /home/pepe al directorio /publico

La forma de operar es la siguiente:

ln -s /origen /enlace-a-origen

Entonces podemos crear un enlace simbólico desde donde nos encontramos escribiendo la ruta completa con el siguiente comando:

ln -s /publico/2013 /home/pepe/enlace-a-publico


o podemos ir al directorio donde deseamos crear el enlace

cd /home/pepe
ln -s /publico/2013 enlace-a-publico



Podemos comprobar los resultados por consola, si listamos veremos que el enlace tiene el carácter l que lo identifica como enlace simbólico y se puede saber a que archivo están apuntando ya que se muestra la ruta -->

ls -l /home/pepe/enlace-a-publico

Como se ve los bits de permisos en un enlace simbólico no se usan (siempre aparecen como (rwxrwxrwx). En su lugar, los permisos del enlace simbólico son determinados por los permisos del fichero o directorio apuntado.


Enlaces simbolicos y duros en GNU/Linux






Si intenta efectuar la orden chmod sobre el enlace simbólico recién creado, en realidad cambiará los permisos del fichero al que apunta el enlace simbólico.

chmod 750 /home/pepe/enlace-a-publico

El comando anterior dará un mensaje de error, ya que el directorio 2013 no existe, esto significa que ha podido crear un enlace simbólico al directorio aunque no exista.


Entonces nos disponemos a crear el directorio /publico/2013 con permisos 755

mkdir -m 755 /publico/2013


Y verificamos que se creo con los permisos asignados:

ls -dl /publico/2013

terminal







Repetimos el comando que nos dio error antes:

chmod 750 /home/pepe/enlace-a-publico


Ahora no obtuvimos el error por que el directorio existe, si listamos vemos que el enlace simbólico mantiene sus permisos y que el directorio /publico/2013 fue el que cambio los permisos, de 755 a 750.


ls -l /home/pepe/enlace-a-publico
ls -dl /publico/2013


GNU







Para confirmar que el enlace simbólico tiene un inodo distinto usamos el comando ls -il:

ls -ild /publico/2013
ls -il /home/pepe/enlace-a-publico

consola







De forma gráfica el resultado esta a la vista sin mucho más que explicar.


sistemas






A continuación vamos a crear un archivo, haciendo uso del enlace simbólico al directorio 2013:

touch /home/pepe/enlace-a-publico/mifichero

Esto crea un archivo en enlace-a-publico llamado mifichero, pero la ubicación de este archivo es /publico/2013 vamos a listar para verlo.

ls -l /publico/2013

El fichero se ha creado en realidad en /publico/2013



servidores







Debemos tener presente:

Hay que tener en cuenta, que si borramos el archivo o directorio origen, el enlace simbólico permanece pero los datos desaparecen para siempre, pero si borramos el enlace simbólico no borraremos el directorio o archivo real.

Es importante remarcar que si accedemos al directorio por el atajo y luego hacemos un cd .. volveremos al directorio donde está el atajo y no al directorio superior.







Borrar enlaces simbólicos

Para eliminar un enlace tenemos dos posibles opciones:

unlink /home/pepe/enlace-a-publico

o podemos usar el conocido comando rm

rm /home/pepe/enlace-a-publico

Una vez que borramos el enlace simbólico comprobamos que el directorio al que estaba apuntando aun existe.

ls -ld /publico/2013


duros







En cambio si borramos el directorio 2013 al cual apunta el enlace simbólico veremos que los enlaces todavía existen, y obviamente ya no esta accesible el fichero original.










Crear enlaces simbólicos de archivos

En el caso que quisiéramos crear un enlace simbólico al archivo tesis-grupal que esta en el directorio /publico lo hacemos con los siguientes comandos.

Creamos el archivo tesis-grupal

echo "Tesis sobre GNU/Linux" > /publico/tesis-grupal



Como sabemos podemos crear el enlace desde donde nos encontramos escribiendo la ruta completa con el siguiente comando:

ln -s /publico/tesis-grupal /home/pepe/tesis-enlace-simbolico


o podemos ir al directorio donde deseamos crear el enlace y le asignamos el nombre tesis-enlace-simbolico

cd /home/pepe

ln -s /publico/tesis-grupal tesis-enlace-simbolico


Y con el comando cat podemos ver que el enlace apunta hacia el archivo que creamos antes:

cat /home/pepe/tesis-enlace-simbolico


Linux













Enlaces duros

Los enlaces duros lo que hacen es asociar dos o más 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 también que cuando se realicen cambios en uno de los enlaces o en el fichero este también se realizará en el resto de enlaces.

En sistemas GNU/Linux, los enlaces duros, tienen varias limitaciones. Una es que sólo se pueden hacer enlaces duros a archivos, y no a directorios.

La segunda limitación es que no pueden expandirse a través 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





En la primera columna verificamos que tienen el mismo número de inodo y en la tercera se especifica cuandos enlaces duros tiene el fichero, vamos a crear otro enlace y el numero se va a incrementar.


ln /publico/tesis-grupal /home/pepe/tesis-enlace-duro2

o podemos ir al directorio donde deseamos crear el enlace

cd /home/pepe
ln /publico/tesis-grupal tesis-enlace-duro2

Luego listamos para analizar los resultados con ls -il

ls -il /publico/tesis-grupal
ls -il /home/pepe/tesis-enlace-duro
ls -il /home/pepe/tesis-enlace-duro2


simbolicos






Si editamos o modificamos un enlace duro veremos que también se modifican el resto de los enlaces y en el archivo origen.
Por ejemplo vamos a agregar texto al enlace tesis-enlace-duro2 para comprobar como el cambio afecta al archivo tesis-grupal y al otro enlace duro


echo "Cap. 1 Enlaces simbolicos" >> /home/pepe/tesis-enlace-duro

Y finalmente hacemos un cat a los archivos para verificar los resultados:

cat /publico/tesis-grupal
cat /home/pepe/tesis-enlace-duro
cat /home/pepe/tesis-enlace-duro2

y como podemos ver la edición al archivo tesis-enlace-duro también afecto al archivo tesis-grupal y a tesis-enlace-duro2


Enlaces simbolicos y duros en GNU/Linux




Si queremos obtener más datos para comprobar que son iguales los 3 archivos podemos recurrir a el comando stat

stat /publico/tesis-grupal
stat /home/pepe/tesis-enlace-duro
stat /home/pepe/tesis-enlace-duro2



terminal







En el caso de los enlaces duros si borras en archivo de origen no vamos a perder el fichero, ya que los enlaces duros son una copia fiel de el.

Borramos el archivo origen

rm /publico/tesis-grupal


el enlace duro funciona sin problemas

cat /home/pepe/tesis-enlace-duro

y vemos que existen dos enlaces duros todavía.

stat /home/pepe/tesis-enlace-duro


GNU










Borrando enlaces duros

Igual que con los enlaces simbólicos podemos usar dos comandos para borrar los enlaces duros:


unlink /home/pepe/tesis-enlace-duro2

o podemos usar el conocido comando rm

rm /home/pepe/tesis-enlace-duro2


Con el comando anterior el único enlace duro que nos queda es el tesis-enlace-duro si lo eliminamos ya perderíamos definitivamente el archivo, así que a no confundirse con este concepto.

cat /home/pepe/tesis-enlace-duro
stat /home/pepe/tesis-enlace-duro



consola









Como una breve conclusión podemos decir que:

✔ Los enlaces simbólicos se pueden hacer con ficheros y directorios, los enlaces duros solo con ficheros.

✔ Los enlaces simbólicos se pueden hacer entre distintos sistemas de archivos, los enlaces duros no.

✔ En los enlaces simbólicos si se borra el archivo o directorio original la información se pierde, en los enlaces duros no.

✔ Los enlaces duros son copias de los originales que comparten el numero de inodo, mientras de los enlaces simbólicos son meros punteros.










Fuentes de conocimiento:

http://www.bibigeek.com/2009/09/08/enlaces-simbolicos-en-ubuntu-linux/
http://rm-rf.es/diferencias-entre-soft-symbolic-y-hard-links/
http://www.nodo50.org/utlai/linux/27010712.htm
http://www.ant.org.ar/cursos/curso_intro/x1811.html
http://www.adslayuda.com/Linux-enlaces.html
https://sites.google.com/site/leafarpaur/httpsitesgooglecomsitesalverteccomarsalverteccomar/linux/ln
http://www.gentoo.org/doc/es/articles/lpi-101-fundamentals-p1.xml
http://lucas.hispalinux.es/DEBIAN/%257Ejfs/debian/doc/es/debian-guide-es/html/node221.html
http://nideaderedes.urlansoft.com/2006/12/04/la-consola-de-linux-crear-directorios-con-mkdir/



_____________________________________________________________________

Anuncios

35 comentarios - Enlaces simbolicos y duros en GNU/Linux

@Novatovich +2
buen post , reco y demas
@alband +2
Muchas gracias compañero
@chapitalmala +2
Un orgasmo de placer cognitivo ! jajajaja, Felicitaciones amigo !
@alband +2
Que alegra que te gustó el aporte amigo, muchas gracias por pasar.
@piruo7 +2
Muy bueno tu aporte amigo. Gracias por compartirlo!
@kardenas3 +1
@alband tenes un blog?
@alband +1
La verdad que no tengo amigo, solo publico en Taringa ya que es un sitio muy visitado.
@kiwi100 +1
@alband +1
Gracias por pasar, y por los puntos
@asalabra2 +1
Tormenta de informacion...+10
@1985a +1
Siempre tuve esa pequeña duda, de que era un enlace duro y un simbólico.

Ahora estoy mas claro, gracias amigo +10
@Maxi21Kpo +1
Que raro que con todo esto no te contraten en red hat
@alband +1
Amigo ese comentario me alza hasta el cielo
Gracias, muchas gracias.
@cesarzeta +1
Buena información. Imprescindible conocerla para no cometer errores al borrar links.
@cesarzeta +1
Por ahora reco y fav, cuando tenga va el resto.
@alband +1
@cesarzeta Amigo, con que difundas el aporte es más que suficiente!!
La verdad que solo quiero que sea de utilidad mi aporte.
@metallitico +1
Gracias, voy aprendiendo
@alband +1
Yo te agradezco por pasar amigo
@buggerandgy
sabes y omucho tiempo pense que las bibliotecas de windows 7 se podian emular de cierto modo con enlaces duros y simbolicos pero la verdad no supe como ¿alguien?
@alband
Con wine y algunos emuladores se hace eso, de otra forma yo no conozco.
@nikos3194 +1
Excelente aporte , gracias master alband por el tutorial me ayuda a profundizar mucho, nunca se me hubiera ocurrido investigar sobre la composición de los enlaces simbolicos

+10, recomendado y a favoritos
@alband +1
Yo te doy las gracias a ti por valorar el aporte, tu comentario es muy importante amigo.
También te agradezco los puntos.
@nikos3194
de nada amigo, hay que ayudar a difundir
@RuoskaPSP +1
buen post
@alband +1
Muchas gracias
@NumbFive +1
Muy buen aporte amigo!
@alband
Agradezco tu comentario compañero
@mfurones +1
genialidades son tus post, o me dan los tiempos para leerlos todos (y eso que le dedico bastante!)
+10 y reco
@alband
Que bien amigo, si algo no entendés avisame por favor
@NumbFive +1
bueno pasando con +10 que te dejo! saludos!
@alband
Muchas gracias por pasar amigo
@Viktor894 +1
muy bueno amigo
@alband +1
Gracias compañero!!!
@-Arkimedes +1
Aquí se aprende Mucho
@alband +1
Muchas gracias por pasar
@MondiRengo +1
Muy buen aporte amigo!!!!!!!!! +8

servidores
@alband +1
Muchas gracias!
@Bruno +1
Grande alband!!!! +100 si pudiera
@secpre +2
Nuuuu esto me tomaron en el final de Informatica 1 ( entre otros temas... )

+10
@alband +2
Una info mas que útil me imagino
@pepi_1912 +2
+10
@alband +2
Muchas gracias
@mati888 +1
Muy buena explicacion me ayudó mucho +10
@ingente20
gracias amigo esencialmente practica la info compartida, para leer y practicar, actualmente quiero copiar un enlaces simbolicos, los puedo comprimir en un tar como recomiendan para a la hora de descomprimir me da error, alguna sugerencia, gracias de antemano
@brot_regor
man, que buen aporte. buen post
@darkinvaderve
Solo veo un pequeño fallo de comprensión entre las diferencias.

Un enlace duro no es una copia del archivo, es un puntero directo hacia la misma hubicación del archivo en memoria.

Te hago una analogía: imaginemos una casa como el contenido de un archivo.

Los enlaces duros son como las puertas que permiten entrar y salir de la casa.

Todo archivo creado o copiado viene con un enlace duro al contenido, puesto que al igual que pasa con una casa no tiene sentido crearla sin por lo menos una puerta que te permita entrar a ella.

Destruir un enlace duro es como bloquear o quitar una puerta de la casa. Mientras haya por lo menos una puerta más todavía podrás entrar a ella. Y si modificas la casa (archivo) obviamente se verá igual desde cualquier puerta (enlace duro) ya que es la misma.

El enlace simbólico es más como la dirección de la casa, es un método fácil y rápido de saber donde está la casa y como conseguirla. Si destruyo la dirección (enlace simbólico) la casa seguirá teniendo puertas (enlaces duros) para entrar a ella, en cambio si tengo la dirección pero la casa no tiene puertas no podré entrar.