Question Copier un répertoire sous Unix


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


65
2017-12-15 15:45


origine


"cp -r / dir1 / dir2" Est-ce exact? - Dinesh Kumar
Oui c'est correct. Vous voudrez peut-être marquer l'une des réponses comme solution. - qroberts


Réponses:


cp -rf /source/path/ /destination/path/

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

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

Remarque Vous devriez faire attention lorsque vous utilisez le -f flag car il écrasera avec force tout ce que 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 nécessaire.


92
2017-12-15 15:49



Je ne suis pas d'accord pour que vous utilisiez le f drapeau. -f if an existing destination file cannot be opened, remove it and try again - Nifle
Personnellement, j'utilise toujours le drapeau -f. N'est-ce pas une bonne pratique alors peut-être avez-vous raison? - qroberts
Si vous savez ce que vous faites et que vous savez ce que vous faites, tout va bien. Mais dans ce cas, avec un utilisateur inexpérimenté, cela pourrait ne pas convenir. - Nifle
@Nifle Oui, je comprends ce que vous dites. Juste que s'il le force, les chances de le faire sont meilleures que s'il ne le faisait pas. Tout dépend de ce que vous faites et de ce que vous comprenez. - qroberts
Si vous mettez une note dans votre réponse sur le -f flag utile si vous copiez <source> sur <dest> (comme pour écraser des choses dans <dest>), je le modifierai moi-même et je supprimerai ma réponse) - Nifle


Tandis que le cp -R les réponses sont correctes (si le cas du drapeau sur BSD doit être en majuscule, 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 tar a une compréhension assez sophistiquée de liens à la fois dur et symbolique.

Voulez-vous que vous copiez pour remplacer les liens symboliques existants par un autre qui a le même texte? Ou avec des liens vers la même cible (ajustement des chemins relatifs pour compenser)? Ou avec des copies binaires 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?

Ah, prendre des décisions. Tar a des défauts sensibles, mais vous permet d'être très précis à ce sujet.


8
2017-12-15 16:07





J'aime

cp -axv source dest

Rsync est un autre bon outil pour cela

rsync -va source dest


5
2017-12-15 19:54