Vorrei copiare un set di file dalla directory A alla directory B, con l'avvertenza che se un file nella directory A è identico a un file nella directory B, quel file non dovrebbe essere copiato (e quindi il suo tempo di modifica non dovrebbe essere aggiornato). C'è un modo per farlo con gli strumenti esistenti, senza scrivere il mio script per farlo?
Per elaborare un po 'il mio caso d'uso: sto generando automaticamente un mucchio di .c
file in una directory temporanea (con un metodo che deve generarli tutti incondizionatamente), e quando li rigenero, vorrei solo copiare quelli che sono cambiati nella directory sorgente attuale, lasciando invariati quelli invariati (con i loro vecchi tempi di creazione) in modo che make
sappiano che non è necessario ricompilarli. ( .c
Tuttavia, non tutti i file generati sono file, quindi ho bisogno di fare confronti binari piuttosto che confronti di testo.)
(Come nota: questo è nato dalla domanda che ho posto su https://stackoverflow.com/questions/8981552/speeding-up-file-comparions-with-cmp-on-cygwin/8981762#8981762 , dove stavo provando per velocizzare il file di script che stavo usando per fare questa operazione, ma mi viene in mente che dovrei davvero chiedere se c'è un modo migliore per farlo che scrivere il mio script - specialmente da qualsiasi modo semplice di farlo in una shell lo script invocherà qualcosa di simile cmp
su ogni coppia di file e l'avvio di tutti quei processi richiede troppo tempo.)
rsync -avnc
o la strada lunga rsync --archive --verbose --dry-run --checksum
.
diff -qr dirA dirB
per vedere quali file sono unicidirA
edirB
ripetutamente.