2009-07-15 8 views
11

Il GNU/Linux version of cp ha un bel --update bandiera:Come emulare il comportamento di 'cp --update' su Mac OS X?

-u, --update solo copia quando il file di origine è più recente del file di destinazione o quando il file di destinazione non è presente

Lo Mac OS X version of cp manca questo flag.

Qual è il modo migliore per ottenere il comportamento di cp --update utilizzando i programmi della riga di comando del sistema incorporato? Voglio evitare di installare strumenti aggiuntivi (inclusa la versione GNU di cp).

risposta

16

rsync ha un'opzione -u/--update che funziona proprio come GNU cp:

$ rsync -u src dest 
4

guardare anche altre opzioni di rsync, che sono probabilmente quello che realmente vuole:

-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.