81 votes

Copier un répertoire sous Unix

Comment puis-je copier une structure de répertoire, dir1, vers dir2, (avec tous les sous-répertoires) sur Unix en utilisant la fenêtre du terminal ?

2 votes

"cp -r /dir1 /dir2 " Est-ce correct ?

0 votes

Oui, c'est exact. Vous pouvez choisir l'une des réponses comme solution.

117voto

qroberts Points 4999
cp -rf /source/path/ /destination/path/

-r = récursif, copie tous les sous-répertoires

-f = force, si un fichier de destination existant ne peut pas être ouvert, supprimez-le et essayez à nouveau

Note Vous devez être prudent lorsque vous utilisez le -f car il écrasera de force tout ce vers quoi vous copiez. Merci à @Nifle pour cette suggestion.

Vous pouvez utiliser le caractère générique * pour copier tous les fichiers du répertoire si vous en avez besoin.

11 votes

Je ne suis pas d'accord avec le fait qu'il faille utiliser l'option f drapeau. -f if an existing destination file cannot be opened, remove it and try again

0 votes

Personnellement, j'utilise toujours l'option -f. Ce n'est pas une bonne pratique, donc vous avez peut-être raison.

0 votes

Si vous savez ce qu'il fait et que vous savez ce que vous faites, tout va bien. Mais dans ce cas, avec un utilisateur inexpérimenté, il pourrait ne pas convenir.

11voto

spong Points 875

Alors que le cp -R Les réponses sont justes (BTW le cas du drapeau sur BSD doit être capital, les deux sont supportés sur linux), il y a une vieille incantation impliquant du goudron :

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

Pourquoi diable ferais-tu ça ? Parce que le goudron a une compréhension assez sophistiquée liens à la fois durs et symboliques.

Voulez-vous que votre copie remplace les liens symboliques existants par des liens ayant le même texte ? Ou avec des liens vers la même cible (en ajustant les chemins relatifs pour compenser) ? Ou avec des copies bit à bit de la cible ?

Si deux fichiers de l'original sont liés en dur, la nouvelle structure doit-elle avoir deux copies des données ou une seule ?

Des décisions, des décisions. Tar a des valeurs par défaut raisonnables, mais vous permet d'être très spécifique à ce sujet.

9voto

Carlos Garcia Points 319

J'aime

cp -axv source dest

Rsync est un autre bon outil pour cela.

rsync -va source dest

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