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 ?
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 ?
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.
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.
J'aime
cp -axv source dest
Rsync est un autre bon outil pour ce
rsync -va source dest