Copie d'un fichier uniquement lorsqu'il est plus récent que la destination

36

Comment copier un fichier sous Linux uniquement lorsque le fichier copié est plus récent que la version de destination?

Si le fichier à destination est plus récent, je souhaite que la copie du fichier ne se poursuive pas.

Eli
la source

Réponses:

17

Utiliser rsync

rsync --progress -r -u /from/one/* /to/another/directory
gnod
la source
3
Juste pour être complet: -rsignifie une opération récursive dans les sous-répertoires et -upour conserver les fichiers les plus récents à destination (= mise à jour). --progressaffiche les informations de progression pendant le fonctionnement.
Jörg Gottschlich
6

Vous ne dites pas quel shell vous utilisez, donc je vais supposer ksh:

if [[ file1 -nt file2 ]]; then cp file1 file2; fi
Kusalananda
la source
N'est-ce pas bash le plus courant?
Rob
1
@Rob, oui. Cela fonctionne aussi en bash, évidemment. Je n'avais tout simplement pas bash (ou toute boîte Linux standard) à portée de main quand je l'ai écrit.
Kusalananda
4

yes|cp -ruv /from/* /to/.
oui - Répondez oui à toutes les questions.
r -
U récursif - mise à jour
v - Progression

fonctionne comme xargs .

Je ne sais pas comment l'expliquer académiquement.

Comment forcer cp à écraser sans confirmation

Felippe Silvestre
la source
1
C'est un peu cryptique. Pouvez-vous développer votre réponse pour être un peu plus explicite, peut-être inclure un exemple? Merci. de l'avis
fixer1234
oui -> Répondez oui à toutes les questions.
Felippe Silvestre