2010-12-15 15:45:40 +0000 2010-12-15 15:45:40 +0000
81
81

Copiare una directory su Unix

Come posso copiare una struttura di directory, dir1, in dir2, (con tutte le sottodirectory) su Unix usando la finestra del terminale?

Risposte (3)

117
117
117
2010-12-15 15:49:02 +0000
cp -rf /source/path/ /destination/path/

-r = ricorsivo, copia tutte le sottodirectory

-f = forza, se un file di destinazione esistente non può essere aperto, rimuovilo e riprova

Nota Dovresti fare attenzione quando usi il flag -f perché sovrascriverà forzatamente qualsiasi cosa in cui copi. Ringrazia @Nifle per questo suggerimento.

Potresti voler usare il carattere jolly * per copiare tutti i file nella directory se ne hai bisogno.

11
11
11
2010-12-15 16:07:16 +0000

Mentre le risposte cp -R sono giuste (BTW il caso della bandiera su BSD deve essere maiuscolo, entrambi sono supportati su linux), c'è un vecchio incantesimo che coinvolge tar :

$ tar cf - . | (cd DIR; tar xf - )

Perché diavolo dovresti farlo? Perché tar ha una comprensione abbastanza sofisticata dei link sia hard che simbolici.

Vuoi che la tua copia sostituisca i link simbolici esistenti con uno che ha lo stesso testo? O con collegamenti alla stessa destinazione (aggiustando i percorsi relativi per compensare)? O con copie bitwise della destinazione?

Se due file nell'originale sono hard linked, la nuova struttura dovrebbe avere due copie dei dati o solo una?

Decisioni, decisioni. Tar ha dei valori predefiniti ragionevoli, ma ti permette di essere molto specifico al riguardo.

9
9
9
2010-12-15 19:54:18 +0000

Mi piace

cp -axv source dest

Rsync è un altro buon strumento per questo

rsync -va source dest