Comment copier une arborescence de répertoires mais pas les fichiers sous Linux?

17

Je veux copier environ 200 répertoires et sous-répertoires d'un emplacement à un autre, mais je ne veux pas copier les milliers de fichiers dans ces répertoires. Je suis sous Linux.

Remarque: Je n'ai pas assez d'espace pour tout copier puis supprimer tous les fichiers.

Kyle West
la source

Réponses:

9
find some/dir -type d -print0 | rsync --files-from=/dev/stdin -0 ...
Ignacio Vazquez-Abrams
la source
5

Une autre approche est avec find et mkdir :

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

Assurez-vous simplement que TARGET existe déjà ou utilisez l'option -p de mkdir.

Panos Rontogiannis
la source
3

Vous pouvez également faire:

find inputdir -type d | cpio -pdumv destdir

Le pouvoir de la simplicité;)

Pilou
la source
1

De même, en utilisant (GNU) tar:

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

Vous n'avez pas vraiment besoin de la -print0ligne de commande find ou de la -0ligne de commande rsync, sauf si vous avez des noms de fichiers contenant des caractères de nouvelle ligne (ce qui est possible mais hautement improbable). Tar (et rsync et cpio) lisent les noms de fichiers ligne par ligne; l'utilisation d'un terminateur NULL est surtout utile avec xargs, qui lit normalement les noms de fichiers séparés par des espaces (et donc ne gère pas les fichiers / répertoires avec des espaces dans leurs noms sans -0).

larsks
la source
1
(cd /home/user/source/; find -type d -print0) | xargs -0 mkdir -p
SergioAraujo
la source
-1
cp -al 

Copierait tous les fichiers avec des liens durs. Même structure, mêmes autorisations. (Remarque: liens durs, donc pas de stockage perdu.)

SvennD
la source
Il n'est pas possible de créer des liens physiques au-delà des limites du système de fichiers
MountainX-for-Monica
C'est vrai, mais il n'a pas été dit que c'était à travers le système de fichiers ...
SvennD
-1

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

Cela entraînera les deux commandes à utiliser des valeurs nulles comme séparateurs au lieu d'espaces blancs. Notez que l'ordre des types -d et -print0 est important!

Ashish Karpe
la source
Ce n'est pas clair et semble incorrect. Il semble que le @sourceet @destinationsoient des indications pour le lecteur, mais cela ne peut tout de même pas fonctionner.
Law29