LINUX

Cómo fusionar árboles de directorios en Linux usando el comando cp

¿Cómo fusionar dos árboles de directorios con un diseño similar en un tercer directorio? Consideremos el siguiente ejemplo para comprender el problema.

Suponga que dos directorios dir1 y dir2 tienen 3 subdirectorios a, byc en cada uno de ellos. El diseño del directorio es el siguiente:

Diseño de directorios de entrada

Estos directorios a, byc contienen algunos archivos. La salida del comando de árbol lo ilustrará mejor:

Disposición de archivos

1) Usando cp para crear fusión

Ahora queremos fusionar estos dos directorios en un tercer directorio, digamos «fusionado».
Lo más simple que puede hacer para lograr esto es copiar recursivamente los directorios como se muestra a continuación:

Copie directorios de forma recursiva para crear una nueva combinación

1.1 Problema con el comando cp y la alternativa

El problema con este enfoque es que los archivos creados dentro del directorio combinado son una copia de los archivos originales y no los archivos originales en sí mismos. Pero espere, (puede que se esté preguntando) ¿cuál es el problema si los archivos no son originales? Entonces, para responder a su pregunta, considere la situación en la que tiene una gran cantidad de archivos voluminosos. En ese caso, copiar todos los archivos puede llevar horas.

Ahora regresemos e intentemos lo mismo con el comando mv en lugar de cp.

Intenta fusionar con el comando mv

Los directorios no se fusionan. Entonces no podemos usar el comando mv para fusionar directorios como este.
Ahora, ¿cómo puede mantener los archivos originales dentro del directorio «combinado»?

2) La solución

El comando cp tiene una opción muy útil para sacarnos de esta situación. La opción -l o –link de cp aommand crea los enlaces físicos en lugar de copiar los archivos en sí. Intentemos con eso.

Antes de probar la opción de enlace duro al comando cp, imprimamos el número de inodo de los archivos originales.
El comando de árbol tiene la opción de imprimir los inodos con la opción –inodes:

Mostrar inodos de archivos originales

Ahora que tenemos los inodos enumerados aquí, podemos proceder a crear los enlaces duros con la opción –link al comando cp:

Fusionar directorios con enlaces físicos

2.1 Verifique los archivos:

Ahora que los archivos están copiados, verifiquemos si los inodos coinciden con los archivos originales:

Verificar inodos

2.2 Limpieza

Como puede ver, los archivos tienen los mismos inodos que los archivos originales. Ahora el problema está resuelto y tenemos los archivos originales dentro del directorio combinado. Ahora podemos limpiar eliminando los directorios dir1 y dir2.

Eliminar directorios originales
Leer también:

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar