Copiar un directorio recursivamente usando enlaces duros para cada archivo

2024-12-30

Suelo utilizar enlaces duros o hard links habitualmente, sobre todo de mis descargas, a la hora de organizar el contenido multimedia y poder ahorrar espacio en disco, Universo arr.

Hay veces que necesito realizar enlaces duros de un directorio que a su vez contiene más ficheros dentro de otros directorios.

Para crear un enlace duro de un fichero lo haremos con el comando:

ln fiechero1 fichero2
ls -l
-rw-r--r--. 2 carlos carlos 0 ago 27 21:16 fichero1
-rw-r--r--. 2 carlos carlos 0 ago 27 21:16 fichero2

Supongamos que tenemos la siguiente estructura:

/tmp/enlaces > tree -L 3 --inodes
[   2499]  .
├── [   2503]  dirA
│   ├── [   2504]  fichero1
│   ├── [   2505]  x
│   │   └── [   2506]  fichero2
│   └── [   2507]  y
│       └── [   2508]  fichero3
├── [   2502]  fichero1
└── [   2502]  fichero2
4 directories, 5 files

Vemos que existen dos ficheros (fichero1 y fichero2) con el mismo inodo, se corresponde al enlace duro creado en el paso anterior

Para copiar un directorio de forma recursiva usando enlaces duros para cada archivo lo haremos con

cp -al dirA dirB
  [   2499]  .
├── [   2503]  dirA
│   ├── [   2504]  fichero1
│   ├── [   2505]  x
│   │   └── [   2506]  fichero2
│   └── [   2507]  y
│       └── [   2508]  fichero3
├── [   2509]  dirAB
│   ├── [   2504]  fichero1
│   ├── [   2510]  x
│   │   └── [   2506]  fichero2
│   └── [   2511]  y
│       └── [   2508]  fichero3
├── [   2502]  fichero1
└── [   2502]  fichero2

7 directories, 8 files

Vemos como los inodos de los ficheros que estan en los directorios x e y de dirA son los mismos que los que se encuentran en dirB

Espero que te haya gustado, pasa un gran día 🐧


Ingrese la dirección de su instancia