J'ai besoin de copier un dossier / home / user d'un disque dur à un autre. Il a 100 000 fichiers et une taille d'environ 10G.
j'utilise
cp -r /origin /destination
parfois je reçois des erreurs en raison de liens rompus, d'autorisations, etc. Je corrige donc l'erreur et je dois recommencer la copie.
Je me demande comment pourrais-je dire à la commande "cp", une fois qu'il essaie de copier à nouveau, de ne pas copier à nouveau les fichiers s'ils existent dans le dossier de destination.
Réponses:
cp -R -u -p /source /destination
Le drapeau
-u
( ou--update
) fait juste ceci:Depuis la page de manuel de cp:
la source
yes n | cp -i /source/* /destination 2>/dev/null
Utilisez simplement
cp -n <source> <dest>
.Depuis la page de manuel :
la source
rsync -aq /src /dest
En plus de copier uniquement les fichiers les plus récents, il ne copiera même les parties les plus récentes des fichiers que si le fichier a changé. Il est destiné à copier sur des liens réseau où vous souhaitez minimiser la quantité de données - mais il fonctionne également très bien localement.
la source
Recherchez l'option "-u" pour la
cp
commande.la source
Toutes les réponses ci-dessus sont correctes mais si vous le faites récursivement,
tu devrais faire:
la source
Vous devez copier en tant que root pour conserver les autorisations / la propriété
Regardez aussi rsync
la source
Solution POSIX
Autres réponses utilisent
-u
ou-n
options decp
. Aucun de ces éléments n'est requis par POSIX ; nirsync
d'une autre réponse encore; niyes
utilisé dans l'un des commentaires.Nous pouvons toujours reproduire
yes n
avec unewhile
boucle. Cela conduit à la solution POSIX suivante:la source
Utilisation
cp -rn <sourcedirname>/. <destdirname>
Le commutateur r rend la copie récursive sur les répertoires.
Le commutateur n (version longue sans clobber) garantit que les fichiers existants ne sont jamais écrasés.
Le '
/.
' après le sourcedirname garantit qu'il ne deviendra pas un sous-répertoire sous le destdirname au lieu que tout le contenu du premier soit copié dans le second.la source