Comment puis-je copier récursivement des fichiers sans écraser les autorisations existantes?

9

Lorsque je copie des fichiers d'un répertoire à un autre, les autorisations de répertoire sont réinitialisées (par exemple: de 0755 à 0775), ce qui provoque des problèmes, me forçant à revenir en arrière et à réinitialiser manuellement les autorisations de répertoire. Je fais actuellementcp -r /source/directory /destination/directory

Je veux copier tous les fichiers et les nouveaux répertoires, mais pas remplacer les autorisations des répertoires existants.

Eva
la source

Réponses:

5

Pour conserver les liens que vous pouvez utiliser cp( page de manuel pour cp ) avec le -ddrapeau, qui est équivalent à --no-dereference --preserve=links.

Pour combiner cela avec les indicateurs -pet, -Rvous pouvez utiliser l'indicateur d'archive -a.

Val
la source
7

Ajouter un indicateur -p

cp -pR /source/dir /dest/dir

De man cp:

-p     same as --preserve=mode,ownership,timestamps
vfbsilva
la source
2

Mon ~/.bashrca été modifié pour contenir

alias cp='cp -i --preserve=all'

Cela signifie que lorsque j'utilise cp, il demandera également avant d'écraser ( -i), et préservera tout (c'est-à-dire le mode, la propriété, les horodatages; et si possible des attributs supplémentaires: contexte, liens, xattr).

Vous pouvez toujours le remplacer par juste modeau lieu de allsi vous le souhaitez, mais j'aime bien avoir cet alias pour changer les valeurs par défaut de cp.

Sparhawk
la source