2009-07-15 9 views
11

Le GNU/Linux version of cp a un beau --update drapeau:Comment émuler le comportement 'cp --update' sous Mac OS X?

-u, --update copie uniquement lorsque le fichier source est plus récent que le fichier de destination ou lorsque le fichier de destination est manquant

Le Mac OS X version of cp n'a pas ce drapeau.

Quelle est la meilleure façon d'obtenir le comportement de cp --update en utilisant des programmes de ligne de commande système intégrés? Je veux éviter d'installer des outils supplémentaires (y compris la version GNU de cp).

Répondre

16

rsync a une option -u/--update qui fonctionne exactement comme GNU cp:

$ rsync -u src dest 
4

Regardez aussi les autres options de rsync, qui sont probablement ce que vous voulez réellement:

-l, --links     copy symlinks as symlinks 
    -H, --hard-links   preserve hard links 
    -p, --perms     preserve permissions 
     --executability   preserve executability 
    -o, --owner     preserve owner (super-user only) 
    -g, --group     preserve group 
     --devices    preserve device files (super-user only) 
     --specials    preserve special files 
    -D       same as --devices --specials 
    -t, --times     preserve times 

    -a, --archive 
      This is equivalent to -rlptgoD. It is a quick way of saying you want recursion 
      and want to preserve almost everything (with -H being a notable omission). The 
      only exception to the above equivalence is when --files-from is specified, in which 
      case -r is not implied. 

      Note that -a does not preserve hardlinks, because finding multiply-linked files is 
      expensive. You must separately specify -H.