Fran's site and blog

Blog

Las bondades de los "Unix-like"

Posted by lapaginadefran on January 4, 2011 at 7:40 AM

Este es un correo en el que escribo a mi amigo Gabriel, recién llegado al mundo Apple para contarle algo interesante sobre el sistema de archivos que utiliza OS X, el sistema operativo de los mac, basado en BSD, luego "familia UNIX" y que tiene algo en común con los Linux: los enlaces duros. Bueno, tienen muchas más cosas en común; todos los comandos típicos de Unix para empezar, pero he aquí una breve explicación sobre una de ellas. Transcribo la carta original:



[En el mundo de los Unix, como Linux, Mac OS X, FreeBSD, Solaris... etc, etc. Existe una cosa muy muy útil llamada "enlace duro" a un archivo.

La cosa va de que la información en un disco duro se escribe de forma física de cierta manera y en cierto sitio (sectores, cilindros, etc), y luego el hecho de que ese archivo esté en una u otra carpeta no es más que un atributo suyo.


O sea, las carpetas, digamos que no existen, es una clasificación que se les da a los archivos que físicamente están almacenados en alguna parte del disco y tú, a través del entorno de ventanas (o la consola), los ves en cierto lugar "lógico".Copiar un archivo a otra carpeta supone duplicar la información y asignarle el atributo de estar situado en una segunda carpeta.


Pero, ¿y si un archivo, una única vez almacenado físicamente, le asignamos el atributo de estar en varios sitios a la vez, esto es, en más de una carpeta?


Lo veríamos en más de un sitio a la vez y la información no habría que duplicarla, triplicarla... estaría una sola vez, pero con la caracterísitica de pertenecer a varias carpetas a la vez.


Pues esto es lo que se llama en el mundo Unix los enlaces duros.

En Windows, los únicos enlaces que existen son los "accesos directos", llamados "enlaces blandos" en el mundo Unix; porque los accesos directos son eso, atajos al objeto al que apuntan.


Pero no puedes copiar un acceso directo pretendiendo así copiar el archivo al que apunta porque, como sabes, sólo te llevas eso, el acceso directo.


En Unix, los enlaces duros los ves como auténticos archivos. Si te copias uno de ellos a tu pendrive no te estás copiando un enlace, te estás copiando el archivo.


Conclusión:


enlace duro -> Un archivo "copiado" todas las veces que quieras en el disco duro y ocupando sólo el espacio de una sola copia. Cualquier cosa que le hagas a cualquiera de esas réplicas se lo estarás haciendo a todas, y esos cambios afectarán a todas las "réplicas" que tengas en cuantas carpetas quieras.


Una utilidad que le puedes encontrar a esa característica es si tienes más de una copia de un documento que sueles modificar. Si en vez de ser copias, son enlaces duros de un mismo documento, da igual desde qué carpetas de entre todas las que lo contienen hagas cambios al documento. Quedarán los cambios hechos en todas las "réplicas" que tengas en distintas carpetas de ese documento. Porque es la misma información del disco duro.


La información grabada en el disco, una sola vez, pero "vista" o "situada" en varios sitios a la vez (desde un punto de vista lógico). Porque recordemos que las carpetas (o directorios), no existen. Es un atributo de un archivo. Es decir. Que un archivo esté en una carpeta es como haberle puesto un cinta de algún color a un objeto y decir, "todos los objetos de los que cuelgue una cinta de color azul, pertenencen a un mismo sitio, a un mismo grupo, a una misma pandilla de amigos..., etc. Pero las carpetas no son lugares que existan.


(Inciso:

En informática suele existir una gran diferencia entre lo que uno ve y lo que ocurre realmente. Esto se debe a que el sistema operativo se las apaña como puede para hacer las cosas de la mejor manera posible, pero el usuario necesita verlas de una manera comprensible. Y si tenemos en cuenta que el usuario es un ser humano que siente y padece, pues si podemos "pintar" lo que ocurre dentro de un disco duro como una colección de bonitas carpetas e iconos varios, pues mejor que mejor para que él se las apañe y sepa qué está haciendo sin tener que ser un experto que sepa qué ocurre ahí dentro realmente.)



Ejemplo práctico: en un disco duro que tengo con tecnología NAS (se accede a él a través de la red y no por USB), en el que corre el emule para linux porque su firmware es un linux, tengo una peli en la carpeta de pelis ("My Videos"), que no está compartida con el emule; y un enlace duro de la peli en la carpeta del emule ("Incoming"): así comparto la peli teniéndola en dos sitios a la vez pero ocupando espacio una sola vez.


Si borro la peli de la carpeta del emule porque decido no seguir compartiéndola, sigue estando la "copia" de la carpeta de pelis, porque lo que he borrado es el enlace duro.


En cuanto existe un enlace duro hacia un archivo, todas las "réplicas" que veas del archivo son enlaces duros. O sea, desde que existe un enlace duro, ya no hay un "original" y una copia del original. Todos son enlaces duros del mismo archivo.


Vamos, como tener hermanos: todos son hermanos entre sí. A es hermano de B y eso implica que B es hermano de A. A no es el original, o más importante que B. Todos son, simplemente, hermanos los unos de los otros.


En cuanto creas un enlace duro hacia un archivo, los dos son enlaces duros hacia la información física del disco, que está contenida una única vez. Puedes borrar cualquiera de ellos y, seguirá existiendo el archivo mientras que no borres el último de ellos.


Estupendo, ¿no?

Para un documento puede no merecer la pena hacer eso. Para una peli de 1 Gb, es un giga que te ahorras por cada copia que no haces si en vez de eso haces un "enlace duro".

Y si se trata de archivos de varios gigas, como pueden ser los que se crean cuando tienes máquinas virtuales de varios sistemas operativos...


¿Sabías que el fabuloso "Time Machine", programa incluido de serie para crear copias de seguridad, si los archivos no han cambiado y te los encuentras en "50 días distintos", utiliza enlaces duros para no haberlos duplicado 50 veces? No te asustes si tus copias de seguridad tienen las misma información muchas veces. No estás desperdiciando disco duro con la misma información tantas veces. Time Machine también utiliza el truco de los enlaces duros con aquellos archivos que se repiten y no han cambiado.


Un apunte: en todos los sistemas operativos, no sé si te habrás dado cuenta que, dentro de una misma partición de un disco, mover un archivo, por grandísimo que sea (o sea, cortar y pegar), es una operación rapidísima, mientras que copiarlo dura todo lo que dura duplicar la información en el disco. ¿porque mover un archivo, por grande que sea, es tan rápido? Por lo que explico al principio de lo que es almacenar algo en un disco: los datos están almacenados físicamente, de la manera que sea (según si tenemos NTFS, Ext, FAT32, etc) en ciertas zonas físicas del disco, y luego "están" en una carpeta como un atributo suyo. LLevarlo a otra carpeta significa solamente cambiar el atributo de: "los datos que están en tal parte del disco guardados, ahora no pertenecen a la carpeta A, pertenecen a la B". Y para eso no hace falta trasladar datos de un sitio a otro. Eso sólo es cambiar unos bytes de información dentro del disco.

Por eso cortar y pegar es tan súmamente rápido dentro de una misma partición.


El enlace duro a un archivo se crea desde la línea de comandos y es un comando de los "no infumables", o sea, apto para principiantes y piltrafillas varios.


En otro correo te escribo, si quieres, la "fórmula mágica" que puedes encontrar en medio internet también (mira tú por dónde que lo que leas de la línea de comandos para Linux, puedes creer que te lo están contando para tu mac. La shell "bash"; entre otras, existe en casi todos (si no todos) los "Unix-like".


Tienes un ordenador de hardware muy avanzado tecnológicamente, de una calidad muy cuidada y con un sistema operativo cuyo corazón es hermano de Linux pero que la interfaz gráfica está tan currada como en Windows. Unix es el mejor sistema operativo que quizás se halla inventado. Que la parte invisible del sistema sea la mejor que se ha inventado, y que únicamente te tengas que currar el entorno gráfico es una gran idea de negocio. Microsoft también hizo en su momento su propia versión de UNIX: se llamaba XENIX y aportaron parte de la tecnología que es parte de la evolución de Unix.  Pero se empeñan en que su sistema operativo sea tecnología propia y el resultado es que es una cagada.


Espero no haberte aburrido mucho.]

Abrazos.


Categories: Inform├?┬ítica, Linux/Darwin

Post a Comment

Oops!

Oops, you forgot something.

Oops!

The words you entered did not match the given text. Please try again.

Already a member? Sign In

0 Comments