Come posso copiare un albero di directory ma non i file in Linux?


17

Voglio copiare circa 200 directory e sottodirectory da una posizione a un'altra, ma non voglio copiare le migliaia di file all'interno di quelle directory. Sono su Linux.

Nota: non ho abbastanza spazio per copiare tutto, quindi eliminare tutti i file.

Risposte:




5

Un altro approccio è con find e mkdir :

find SOURCE -type d -exec mkdir TARGET/{} \;

Assicurati solo che TARGET esista già o usa l'opzione -p di mkdir.


3

Puoi anche fare:

find inputdir -type d | cpio -pdumv destdir

Il potere della semplicità;)


1

Allo stesso modo, usando (GNU) tar:

find some/dir -type d -print |
tar --no-recursion -T- -c -p -f- |
(cd another/dir && tar -x -p -f-)

Non hai davvero bisogno di -print0 riga di comando trova o della -0riga di comando rsync a meno che tu non abbia nomi di file che contengono caratteri di nuova riga (che è possibile ma altamente improbabile). Tar (e rsync e cpio) leggono i nomi dei file riga per riga; usare un terminatore NULL è per lo più utile xargs, che normalmente legge nomi di file separati da spazi bianchi (e quindi non gestisce file / directory con spazi nei loro nomi senza -0).



-1
cp -al 

Copierei tutti i file con collegamenti reali. Stessa struttura, stesse autorizzazioni. (nota: collegamenti reali, quindi nessuna memoria persa.)


Non è possibile creare collegamenti fisici attraverso i confini del filesystem
MountainX-for-Monica

È vero, ma non è stato detto che fosse attraverso il filesystem ...
SvennD

-1

ls -d * / @source: find. -type d -print0> dirs.txt @destination: xargs -0 mkdir -p

Ciò farà sì che entrambi i comandi utilizzino i valori null come separatori anziché spazi bianchi. Notare che l'ordine di -type de -print0 è importante!


Questo non è chiaro e sembra errato. Sembra che le @sourcee @destinationsiano indicazioni per il lettore, ma anche così questo non può funzionare.
Legge
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.