2010-12-15 15:45:40 +0000 2010-12-15 15:45:40 +0000
81
81

Copier un répertoire sur 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 ?

Réponses (3)

117
117
117
2010-12-15 15:49:02 +0000
cp -rf /source/path/ /destination/path/

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

-f = forcé, si un fichier de destination existant ne peut être ouvert, le supprimer et réessayer

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

Vous pouvez utiliser le joker * pour copier tous les fichiers du répertoire si vous en avez besoin.

11
11
11
2010-12-15 16:07:16 +0000

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

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

Pourquoi diable feriez-vous cela ? Parce que le goudron a une compréhension assez sophistiquée des liens à la fois durs et symboliques.

Voulez-vous copier pour remplacer les liens symboliques existants par un lien 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 comporter deux copies des données ou une seule ?

Décisions, décisions. Le goudron a des paramètres par défaut raisonnables, mais vous permet d'être très précis à ce sujet.

9
9
9
2010-12-15 19:54:18 +0000

J'aime

cp -axv source dest

Rsync est un autre bon outil pour ce

rsync -va source dest