Come unire alberi di directory in Linux usando il comando cp
Come unire due alberi di directory dall’aspetto simile in una terza directory?. Consideriamo il seguente esempio per comprendere il problema.
Supponiamo che due directory dir1 e dir2 abbiano 3 sottodirectory a, b e c in ciascuna di esse. Il layout della directory è il seguente:

Queste directory a, bec contengono alcuni file. L’output del comando tree illustrerà meglio:

1) Utilizzo di cp per creare join
Ora vogliamo unire queste due directory in una terza directory, diciamo “unita”.
La cosa più semplice che puoi fare per raggiungere questo obiettivo è copiare in modo ricorsivo le directory come di seguito:

1.1 Problema con comando cp e alternativa
Il problema con questo approccio è che i file creati nella directory combinata sono copie dei file originali e non i file originali stessi. Ma aspetta, (potresti chiedere) qual è il grosso problema se i file non sono originali? Quindi, per rispondere alla tua domanda, considera la situazione in cui hai un gran numero di file di grandi dimensioni. In questo caso, la copia di tutti i file può richiedere ore.
Ora torniamo indietro e proviamo la stessa cosa con il comando mv invece di cp.

Le directory non vengono unite. Quindi non possiamo usare il comando mv per unire directory come questa.
Ora, come puoi mantenere i file originali nella directory “combinata”?
2) La soluzione
Il comando cp ha un’opzione molto utile per tirarci fuori da questa situazione. L’opzione -l o –link per cp aommand crea gli hard link invece di copiare i file stessi. Proviamo questo.
Prima di provare l’opzione hard link al comando cp, stampiamo il numero di inode dei file originali.
Il comando tree ha l’opzione per stampare gli inode con l’opzione –inodes:

Ora che abbiamo gli inode elencati qui, possiamo procedere all’hardlinking con l’opzione –link al comando cp:

2.1 Controllare i file:
Ora i file sono copiati, controlliamo se gli inode corrispondono ai file originali:

2.2 Pulizia
Come puoi vedere, i file hanno gli stessi inode dei file originali. Ora il problema è risolto e abbiamo i file originali nella directory combinata. Ora possiamo ripulire rimuovendo le directory dir1 e dir2.
Grazie per aver letto. Qui abbiamo imparato a unire due alberi di directory dall’aspetto simile in una terza directory.