La diferencia entre enlaces duros y enlaces simbólicos

  
        Lo primero que hay que entender es que en un sistema Linux, el núcleo asigna un inodo (nodo de índice) a cada archivo recién creado, y cada archivo tiene un número de inodo único. Los atributos del archivo se almacenan en el nodo de índice. Cuando se accede al archivo, el nodo de índice se copia en la memoria para lograr un acceso rápido al archivo. Un enlace es una forma de establecer una conexión entre un archivo compartido y varias entradas de directorio del usuario que accede a él. Linux incluye dos tipos de enlaces: Hard Link y Soft Link. Los enlaces suaves también se denominan enlaces simbólicos. Un enlace duro de enlace duro es un puntero a un nodo de índice de archivos. El sistema no le reasigna el inodo. Puede usar el comando: ln para crear un enlace duro. Sintaxis: ln [opciones] existente archivo newfileln [opciones] existentefile-list directorio uso: Primero: cree un enlace fijo para " existentefile ", el nombre del archivo es " newfile ". Segundo: en el directorio " directorio " Cree un enlace fijo con el mismo nombre para todos los archivos contenidos en " lista de archivos existentes ". [Opciones] opcionales de uso común – f Crear enlaces independientemente de si existe " newfile " existe o no. -n Si ya existe " newfile ", no se creará ningún enlace. Aquí hay algunos ejemplos: $ ls – il13058 -rwx - - - - - - 1 longcheng longcheng 48 agosto 5 16:38 archivo113059 -rwx - - - - - - 1 longcheng longcheng 57 agosto 5 16:40 archivo2 $ ln File2 file2hard $ ls – il13058 -rwx - - - - - - 1 longcheng longcheng 48 August 5 16:38 file113059 -rwx - - - - - - longcheng longcheng 57 August 5 16:40 file213059 -rwx - - - - - - 2 longcheng longcheng 57 5 de agosto 16:40 file2hard Tenga en cuenta que la cantidad de enlaces mostrados por file1 es 1 antes de que se cree el enlace. Después de crear el enlace (1), la cantidad de enlaces entre file1 y file1hard se convierte en 2; (2) file1 y File1hard es el mismo en número de inodo (3) El tamaño de archivo mostrado por file1 y file1hard también es el mismo. Se puede ver que el funcionamiento del comando ln resulta: file1 y file1hard son dos nombres del mismo archivo, tienen el mismo número de nodo de índice y atributos de archivo, y se crea el enlace físico del archivo1, es decir, el nodo de índice de archivo1 está en el directorio actual. Crea un nuevo puntero. Como se muestra a continuación, puede eliminar cualquiera de ellos, como rm file2, solo se eliminará un puntero a la vez, y el número de enlaces se reducirá en uno. Solo el puntero al contenido del archivo, es decir, el número de enlaces se reducirá a 0, el kernel colocará El contenido del archivo se borra del disco. La estructura lógica del directorio actual: (el mapa lo siento no se muestra). También es posible crear enlaces duros a archivos en directorios diferentes pero en el mismo sistema de archivos. Deje que file1 y file2 estén en el directorio /home /longcheng /dir1. El siguiente comando crea un enlace fijo a file2 en /home /longcheng. Ln file2 /home /longcheng /file2hard El siguiente programa es crear todos los archivos en el directorio dir1, crear un enlace físico en el directorio dir2 $ mkdir dir2 $ ln /home /longcheng /dir1 /* /home /longcheng /dir2 Si usa ln – f newfile newfile, si ya existe newfile, no importa de qué archivo sea el newfile original, solo el usuario actual tiene acceso de escritura, newfile se convierte en un archivo de enlace duro de exisitngfile. Aunque los enlaces duros ahorran espacio, también es la forma tradicional de integrar sistemas de archivos en sistemas Linux, pero existen algunos inconvenientes: (1) No es posible establecer enlaces entre archivos de diferentes sistemas de archivos.
(2) Solo los superusuarios pueden crear enlaces duros para directorios. . Aunque muchos árboles dicen que el usuario root puede crear, pero el autor encontró en el proceso de aprendizaje que incluso el usuario root no puede crear, mi sistema es Redhat, el kernel 2.4, 2.6 lo ha intentado, en otros sistemas no sé si es posible. De hecho, bajo ubuntu, cambiar a superusuarios también hace que sea imposible crear enlaces duros para directorios. Tenga en cuenta que el tamaño del archivo cableado se multiplica. Segundo, enlaces blandos (enlaces simbólicos) Los enlaces simbólicos son punteros indirectos a un archivo. Un enlace duro apunta directamente al i-nodo del archivo. Los enlaces blandos superan las deficiencias de los enlaces duros, sin ninguna limitación del sistema de archivos, cualquier usuario puede crear enlaces simbólicos a directorios. Ahora se usa más ampliamente, tiene más flexibilidad e incluso puede vincular archivos a través de diferentes máquinas y diferentes redes. Para crear un enlace blando, simplemente agregue la opción – s después de ln. Aquí hay un ejemplo $ ls -il13058 -rwx - - - - - - 1 longcheng longcheng 48 agosto 5 16:38 file113059 -rwx - - - - - 2 longcheng longcheng 57 5 de agosto 16:40 file213059 -rwx - - - - - - 2 longcheng longcheng 57 5 de agosto 16:40 file2hard $ ln – s file1 file1soft $ ls -il13058 -rwx - - - - - 1 Longcheng longcheng 48 agosto 5 16:38 file113059 -rwx - - - - - - 2 longcheng longcheng 57 agosto 5 16:40 file213059 -rwx - - - - - 2 longcheng longcheng 57 agosto 5 16:40 file2hard13061 lrwxrwxrwx 1 Longcheng longcheng 5 5 de agosto 16:58 file1soft-> ​​gt1 Los resultados del enlace anterior se pueden ver como enlaces blandos y enlaces duros, la diferencia no solo es conceptual, sino también diferente en la implementación. La diferencia: el archivo original de enlace físico &archivo de enlace comparte un número de inodo, lo que indica que son el mismo archivo, y el archivo original de enlace flexible &archivo de enlace tiene un número de inodo diferente, lo que indica que son dos archivos diferentes; en los atributos del archivo El enlace flexible escribe claramente el archivo de enlace, y el enlace duro no se escribe, porque en esencia el archivo de enlace duro y el archivo original son completamente iguales; el número de enlaces es diferente, el número de enlaces del enlace suave no aumenta; el tamaño del archivo No es el mismo, el tamaño de la pantalla del archivo de enlace físico es el mismo que el archivo original, esto se enfatiza porque es equivalente, y el tamaño de la pantalla del enlace flexible aquí es diferente del archivo original, el tamaño del archivo 1 es 48B y el archivo 1soft Es 5B, y el 5 interior es en realidad el tamaño de " archivo1 ". En resumen, el establecimiento de un enlace flexible es crear un nuevo archivo. Al acceder a un archivo vinculado, el sistema encontrará que es un archivo vinculado, que lee el archivo vinculado para encontrar el archivo al que realmente se accede. La creación de enlaces flexibles entre diferentes sistemas y el establecimiento de enlaces a directorios no es un ejemplo aquí. Los lectores pueden probarlo por su cuenta. También aprendo en la práctica. Por supuesto, los enlaces blandos también tienen la desventaja de los enlaces duros, porque el archivo de enlace contiene la información de la ruta del archivo original, por lo que cuando el archivo original se mueve de un directorio a otro y luego accede al archivo del enlace, el sistema no puede encontrarlo, y el enlace duro Sin este defecto, ¿cómo quiere moverlo? Tiene que asignar espacio adicional para que el sistema cree nuevos nodos de índice y guarde la ruta al archivo original. Para agregar: puede ver el archivo de enlace a través del enlace simbólico, puede usar el enlace simbólico man para aprender.
Copyright © Conocimiento de Windows All Rights Reserved