LINUX

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:

Layout delle directory di input

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

Disposizione file

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:

Copia le directory in modo ricorsivo per creare una nuova unione

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.

Prova a fondere con il comando mv

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:

Mostra l'inode dei file originali

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

Unisci directory con collegamenti fisici

2.1 Controllare i file:

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

Controlla gli inode

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.

Related Articles

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Back to top button
Close