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.
linux
command-line-interface
rsync
copy
Kyle West
la source
la source
rsync -a --include='*/' --exclude='*' ${source} ${destination}
.la source
Une autre approche est avec find et mkdir :
Assurez-vous simplement que TARGET existe déjà ou utilisez l'option -p de mkdir.
la source
Vous pouvez également faire:
Le pouvoir de la simplicité;)
la source
De même, en utilisant (GNU) tar:
Vous n'avez pas vraiment besoin de la
-print0
ligne de commande find ou de la-0
ligne 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 avecxargs
, 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
).la source
la source
Copierait tous les fichiers avec des liens durs. Même structure, mêmes autorisations. (Remarque: liens durs, donc pas de stockage perdu.)
la source
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!
la source
@source
et@destination
soient des indications pour le lecteur, mais cela ne peut tout de même pas fonctionner.