Muchas veces, en cualquier sistema operativo basado en Linux/Unix, es aconsejable comprender los conceptos subyacentes, luego solo uno puede apreciar la belleza de los comandos y cómo se implementan.
Algunos pequeños detalles nos ayudarán mucho en la depuración y solución de problemas de muchas situaciones desafiantes si sabemos con anticipación acerca de estos comandos y conceptos relacionados.
En este tema, cubriré qué son los enlaces, los diferentes tipos, los caracteres distintivos y cómo pueden usarse mejor junto con los conceptos requeridos.
Al ejecutar el comando "man ln", puede ver que dice "hacer un enlace entre archivos" y no dice sobre enlaces blandos o duros.
[email protected] ~}$ man ln
De manera similar, el comando "man link" se describe como "llamar a la función de enlace para crear un archivo".
Enlace suave:
El enlace suave, como sugiere el nombre, es solo un nuevo enlace creado para el nuevo archivo. En este caso, el número de inodo del archivo nuevo apuntará al archivo antiguo.
Enlace fijo:
En este caso, el archivo antiguo y el nuevo apuntarán al mismo número de inodo.
Enlace simbólico:
En algunas variantes de Unix/Linux, tanto los enlaces simbólicos como los suaves se tratan de la misma manera. Pero la diferencia real es que tanto el número de inodo del archivo nuevo como el antiguo apuntarán a un nuevo número de inodo. Esto dependerá completamente de la implementación.
Uso del comando "ln" para crear enlaces duros y suaves
Creación de enlace fijo
[email protected] ~}$ man ln ln - make links between files
[email protected] ~}$ln ln: missing file operand Try 'ln --help' for more information.
[email protected] ~}$ ls -la total 24 drwx------ 4 root root 4096 Feb 6 15:23 . drwxr-xr-x 23 root root 4096 Jan 25 16:39 .. -rw-r--r-- 1 root root 3122 Jan 25 16:41 .bashrc drwx------ 2 root root 4096 Feb 6 15:23 .cache -rw-r--r-- 1 root root 0 Jan 25 16:41 .hushlogin -rw-r--r-- 1 root root 148 Aug 17 2015 .profile drwxr-xr-x 2 root root 4096 Jan 25 16:41 .ssh
yo) Cree el archivo usando el comando "tocar"
[email protected] ~}$ touch 123.txt [email protected] ~}$ ls -l total 0 -rw-r--r-- 1 root root 0 Feb 6 15:51 123.txt
ii) Ingrese el contenido en el archivo usando el comando "cat" y presione "ctrl+c" para guardar y salir.
[email protected] ~}$ cat > 123.txt Welcome to this World! ^C
iii) Cree el enlace duro entre los archivos "123.txt" y "321.txt". En este caso ya existía el “123.txt” con contenidos “Bienvenidos a este Mundo”.
[email protected] ~}$ ln 123.txt 321.txt [email protected] ~}$ ls -l total 8 -rw-r--r-- 2 root root 23 Feb 6 15:52 123.txt -rw-r--r-- 2 root root 23 Feb 6 15:52 321.txt
iv) Verifique los números de inodo (nodo de índice) de los archivos. Para ambos archivos, el número de inodo es el mismo y es 794583. También verifique el contenido del nuevo archivo "321.txt", que también es el mismo que "123.txt".
[email protected] ~}$ ls -li total 8 794583 -rw-r--r-- 2 root root 23 Feb 6 15:52 123.txt 794583 -rw-r--r-- 2 root root 23 Feb 6 15:52 321.txt $ cat 321.txt Welcome to this World!
Nota 2 :- El número de inodo es un número de índice único generado para cualquier archivo que se crea en los sistemas operativos Linux/unix. Estos números de inodo se almacenan en atributos de directorio/archivo en el directorio /proc. Pero en el caso de los enlaces, estos números de inodo se comparten entre los archivos y solo la ruta se actualiza en la tabla de archivos.
v) Cree un archivo más llamado "456.txt" y vincúlelo usando el comando ln a "321.txt". Ahora los tres archivos tienen los mismos números de inodo. El contenido de "456.txt" será el mismo que el del archivo original.
[email protected] ~}$ ls -li total 12 794583 -rw-r--r-- 3 root root 23 Feb 6 15:52 123.txt 794583 -rw-r--r-- 3 root root 23 Feb 6 15:52 321.txt 794583 -rw-r--r-- 3 root root 23 Feb 6 15:52 456.txt $ cat 456.txt Welcome to this World! [email protected] ~}$ ls -l total 12 -rw-r--r-- 3 root root 23 Feb 6 15:52 123.txt -rw-r--r-- 3 root root 23 Feb 6 15:52 321.txt -rw-r--r-- 3 root root 23 Feb 6 15:52 456.txt
vi) Cuando se elimine el archivo de origen o cualquiera de estos archivos, no afectará a otros archivos. El archivo de origen se puede eliminar con el comando "rm". El contenido de otro archivo tampoco tendrá ningún impacto.
[email protected] ~}$ rm 123.txt [email protected] ~}$ ls -l total 8 -rw-r--r-- 2 root root 23 Feb 6 15:52 321.txt -rw-r--r-- 2 root root 23 Feb 6 15:52 456.txt [email protected] ~}$ ls -li total 8 794583 -rw-r--r-- 2 root root 23 Feb 6 15:52 321.txt 794583 -rw-r--r-- 2 root root 23 Feb 6 15:52 456.txt [email protected] ~}$ cat 456.txt Welcome to this World!
vii) No se permite la creación de enlaces duros entre directorios.
[email protected] ~}$ls -l total 8 -rw-r--r-- 2 root root 23 Feb 6 15:52 321.txt -rw-r--r-- 2 root root 23 Feb 6 15:52 456.txt [email protected] ~}$ mkdir abc [email protected] ~}$ ln abc def ln: abc: hard link not allowed for directory
viii) Cualquier cambio en el contenido de un archivo afectará y cambiará el contenido de otro archivo en consecuencia, a continuación se explican los pasos,
[email protected] ~}$ vi 321.txt Welcome to this World! You are welcomed to this new world :wq [email protected] ~}$ ls -l total 12 -rw-r--r-- 2 root root 59 Feb 6 16:24 321.txt -rw-r--r-- 2 root root 59 Feb 6 16:24 456.txt drwxr-xr-x 2 root root 4096 Feb 6 16:18 abc [email protected] ~}$ cat 456.txt Welcome to this World! You are welcomed to this new world
Creación de vínculos suaves:
[email protected] ~}$ touch src.txt [email protected] ~}$ cat > src.txt Hello World ^C [email protected] ~}$ ls -l total 4 -rw-r--r-- 1 root root 12 Feb 6 16:32 src.txt
[email protected] ~}$ ln -s src.txt dst.txt [email protected] ~}$ ls -l total 4 lrwxrwxrwx 1 root root 7 Feb 6 16:33 dst.txt -> src.txt -rw-r--r-- 1 root root 12 Feb 6 16:32 src.txt [email protected] ~}$ cat dst.txt Hello World
[email protected] ~}$ ls -li total 4 794584 lrwxrwxrwx 1 root root 7 Feb 6 16:33 dst.txt -> src.txt 794583 -rw-r--r-- 1 root root 12 Feb 6 16:32 src.txt
[email protected] ~}$ mkdir abc [email protected] ~}$ ln -s abc def $ ls -l total 8 drwxr-xr-x 2 root root 4096 Feb 6 16:34 abc lrwxrwxrwx 1 root root 3 Feb 6 16:34 def -> abc lrwxrwxrwx 1 root root 7 Feb 6 16:33 dst.txt -> src.txt -rw-r--r-- 1 root root 12 Feb 6 16:32 src.txt
[email protected] ~}$ ls -li total 8 794585 drwxr-xr-x 2 root root 4096 Feb 6 16:34 abc 794586 lrwxrwxrwx 1 root root 3 Feb 6 16:34 def -> abc 794584 lrwxrwxrwx 1 root root 7 Feb 6 16:33 dst.txt -> src.txt 794583 -rw-r--r-- 1 root root 12 Feb 6 16:32 src.txt
[email protected] ~}$ $ cd abc [email protected] ~}$ touch 123.txt [email protected] ~}$ vi 123.txt Hello :wq! [email protected] ~}$ touch 456.txt [email protected] ~}$ cd .. [email protected] ~}$ ls -l total 8 drwxr-xr-x 2 root root 4096 Feb 6 16:36 abc lrwxrwxrwx 1 root root 3 Feb 6 16:34 def -> abc lrwxrwxrwx 1 root root 7 Feb 6 16:33 dst.txt -> src.txt -rw-r--r-- 1 root root 12 Feb 6 16:32 src.txt [email protected] ~}$ cd def [email protected] ~}$ ls -l total 4 -rw-r--r-- 1 root root 6 Feb 6 16:37 123.txt -rw-r--r-- 1 root root 0 Feb 6 16:36 456.txt [email protected] ~}$ cat 123.txt Hello
Nota 3 :- Podemos tener cualquier número de enlaces anidados. Pero el usuario/administrador que crea estos enlaces simbólicos debe ser consciente del hecho de que esto generará confusión. A veces se pueden olvidar y generar resultados no deseados. Así que tienen que tener cuidado.
Nota 4 :- Hay algunas posibilidades de enlace "simbólico" o "suave" que apunta a un enlace inexistente. Esto se llama "enlace colgante". Esto apuntará a ninguna parte.
Nota 5 :- hay llamadas al sistema que se usan en linux/unix para crear enlaces simbólicos OR a nivel de programación (usando programas C/C++ a nivel de sistema). Estos son 1) enlace simbólico 2) enlace simbólico.
Estos no deben confundirse con las utilidades de línea de comandos que he descrito anteriormente.
Eliminación de enlaces blandos/enlaces simbólicos
Los enlaces blandos o simbólicos se eliminan con los comandos 'rm' y desvincular.
Sintaxis:
# rm
# unlink
Eliminación de directorios de Soft Link
Sintaxis:
# rm
# unlink
Conclusiones:
La creación de enlaces, ya sean duros o blandos, será muy útil para los administradores y desarrolladores. El material de referencia anterior será útil para comprender qué tipo de enlace estamos creando y cómo es útil. Además, este artículo ayudará a comprender las diferencias y la utilización de los enlaces.