14 votes

Comment puis-je utiliser cp pour copier un répertoire mais ignorer un certain sous-répertoire sous Linux ?

En raison d'un problème de disque dur, j'essaie de déplacer une partition d'un disque dur à un autre. Je suis les étapes suivantes http://www.ibm.com/developerworks/library/l-partplan.html article pour le faire. Dans la partie copie, je voudrais ignorer un sous-répertoire particulier. Comment puis-je y parvenir en gardant à l'esprit que, lors de la copie, je dois conserver mon groupe de propriétaires et l'horodatage. Il y a environ 700 Go de données qui doivent être copiées si je n'ignore pas un sous-répertoire particulier.

17voto

aceraspires3user Points 33

rsync -ax --exclude [relative path to directory to exclude] /path/from /path/to

Vous pouvez vouloir (ou non) utiliser --del également. Consultez la page du manuel.

2voto

Brad Points 11

Normalement, j'utilise cpio comme suit,

cd source_dir; find . -depth | cpio -pdmv dest_dir

Et comme il s'agit d'un pipeline, vous pouvez placer un "filtre de soustraction" au milieu.

cd sourcedir; find . -depth | grep -v exclude_dir | cpio -pdmv dest_dir

ou vous pouvez le faire en plusieurs étapes,

cd source_dir; find . -depth > files.lst
gedit files.lst  # (take out the offending directory and files and save back to files.lst)
cpio -pdmv dest_dir < files.lst

Bien sûr, je testerais d'abord sur quelque chose de plus petit, mais vous voyez l'idée.

0voto

Mike Houston Points 4320

Vous pourriez écrire un simple bash script avec une boucle pour ignorer le certain chemin que vous ne voulez pas copier et copier le reste. Une autre solution pourrait être d'utiliser des expressions régulières. Vous pouvez vous documenter sur les scripts bash ici : -> http://tldp.org/LDP/Bash-Beginners-Guide/html/Bash-Beginners-Guide.html Tutoriel Regex ici -> http://www.regular-expressions.info/

0voto

Ash Points 2914

Pouvez-vous déplacer temporairement ( mv ) le grand sous-répertoire vers un autre emplacement, faire la copie, puis restaurer le sous-répertoire ? Je ne vois pas d'option directe dans cp pour le faire.

0voto

Chochos Points 3364

Une solution plutôt moche mais... pourquoi ne pas simplement copier tout ce qui se trouve dans le répertoire de manière non récursive, puis copier les répertoires individuels de manière récursive ?

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X