Pregunta ¿Cómo obtener todos los enlaces duros a la misma información?


Tener varios enlaces duros al mismo archivo.
¿Cómo (por ejemplo) un archivo (enlace permanente) hace que otros apunten a los mismos datos?
Ninguna tarea real. Solo interesante. Puede ser útil.


0


origen


La pregunta es la respuesta. Lo que hice actualmente ¿Quiere preguntar? ¿Cómo crear enlaces duros? ¿Qué enlaces son y cómo funcionan?  ¿Para qué se usan los enlaces duros?  Muchas de estas preguntas ya han sido formuladas y respondidas. - JdeBP


Respuestas:


La mayoría de los sistemas de archivos no mantienen un directorio donde están los enlaces duros a un archivo (o más precisamente, a un indode).

Así que tendrás que escanear todo el sistema de archivos para encontrar todos los enlaces duros. Puedes hacer esto usando find -inum <inode number>.

Ejemplo:

Crear archivo con enlace:

$ ~> mkdir linktest
$ ~> cd linktest/
$ ~/linktest> touch file1
$ ~/linktest> ln file1 file2

Comprobar inodos:

$ ~/linktest> stat file*
  File: file1
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 805h/2053d      Inode: 37          Links: 2
[...]
  File: file2
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 805h/2053d      Inode: 37          Links: 2
[...]

Como puede ver, ambas entradas de archivo tienen el mismo inodo (37), porque son enlaces duros a los mismos datos.

Encuentra por número de inodo:

$ ~/linktest> find -inum 37
./file1
./file2

Esto está en Linux, pero debería funcionar igual en * BSD.


2



¿Qué sistemas de archivos pueden hacerlo sin analizar todos los archivos? - Sergey
@Sergey: No tengo idea. No sé ninguno. - sleske


find tiene una opción -samefile para esto:

find / -xdev -samefile /myfile

Reemplazar / con la raíz del sistema de archivos que myfile está encendido, por ejemplo, si utilizó /home/sergey/myfile y tu tienes /home en un sistema de archivos separado, luego use find /home.


2