Pregunta

Sólo quería aclarar si un enlace duro / simbólico es en realidad un archivo que se crea ??

Me corrió el comando:

ln source hardlink
ln -s source softlink

- El comando ls muestra este 2 enlaces como un archivo

.

Así que mi pregunta es, ¿realmente ln / ln -s crear un archivo?

Saludos, darkie15

¿Fue útil?

Solución

Sí y no: -)

En UNIX, el contenido de un archivo son distintas de las entradas de directorio para ese archivo. Usted puede tener múltiples puntos de entradas de directorio a los mismos contenidos (mirar hacia arriba ínodo para una descripción de cómo este obras) y, aquí está el truco:

Todas las entradas de directorio son iguales. A pesar de que uno puede haber sido creado en primer lugar, no hay nada de especial. Si lo quita, el contenido no desaparecen, sólo la entrada de directorio. El contenido desaparecerán una vez que el nodo-i tiene cero entradas de directorio que apuntan a ella (y todos los procesos de cierre el archivo - Me ha picado antes al tratar de liberar espacio en disco eliminando archivos de registro sólo para encontrar que, debido a un proceso todavía tiene el archivo abierta, el contenido del archivo no se recuperan a pesar de que no hay entradas de directorio apuntan a ellos).

Eso es para los enlaces duros.

Los enlaces blandos son un poco más complicado. Lo hacen crear un "archivo" de clases (un i-nodo independiente), que contiene la ruta de acceso al archivo de destino. Y esos enlaces son no iguales. Borrar el original le dejará con un enlace simbólico que apunta a ninguna parte.

Debido a inodos son únicos en un sistema de archivos determinado, enlaces duros se hace referencia a los datos en un sistema de archivos diferente.

Los enlaces blandos no tienen esa limitación ya que almacenan la ruta del archivo de destino, no su nodo-i.

La siguiente transcripción puede ayudar:

$ echo hello >f1
$ ln f1 f2
$ ln -s f1 f3
$ ls -ial f*
    7385 -rw-r--r-- 2 pax None 6 May 11 14:09 f1
    7385 -rw-r--r-- 2 pax None 6 May 11 14:09 f2
    4672 lrwxrwxrwx 1 pax None 6 May 11 14:09 f3 -> f1
$ cat f1
    hello
$ cat f2
    hello
$ cat f3
    hello
$ rm f1
$ ls -ial f*
    7385 -rw-r--r-- 2 pax None 6 May 11 14:09 f2
    4672 lrwxrwxrwx 1 pax None 6 May 11 14:09 f3 -> f1
$ cat f1
    cat: f1: No such file or directory
$ cat f2
    hello
$ cat f3
    cat: f3: No such file or directory

he utilizado sólo los últimos cuatro dígitos del número de i-nodo para mantener la entrada corta (y no golpear con números de inodo como 43910096366994672), pero se puede ver que f1 y f2 tienen exactamente el mismo inodo mientras que f3 es diferente. También se puede ver que el contenido del archivo creado originalmente como f1 sobreviven su eliminación debido f2 todavía se está refiriendo a él.

Sin embargo, debido f3 hace referencia el nombre f1 en lugar de su nodo-i, se obtiene un error al intentar utilizarlo.


Aparte: Usted que amar cuando juguetes UNIX con usted como esta:

$ ls f*
    f2  f3
$ cat f3 # What the ...?
    cat: f3: No such file or directory

Casi tan divertido como la creación de un archivo llamado espacio retroceso x y luego ver a alguien intenta eliminar es: -)

Otros consejos

Ninguno de los dos crea un archivo.

Un archivo en el disco se identifica por un "nodo-i." Directorios mapa nombres de archivo a inodos. Un medio de enlaces duros "crear un nuevo nombre de archivo en este directorio que apunta a la misma i-nodo como el nombre del archivo que he".

Un medio de enlaces simbólicos "crear un nuevo nombre de archivo en este directorio que apunta a lo que sea este inodo otros puntos de archivos."

Como puntos mangoman a cabo en un comentario, un enlace simbólico hace crear un archivo con el nombre del destino del enlace, pero no se debe prestar atención a ella. Es un archivo especial que es Ninguno de su negocio.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top