2011-03-23 13 views
5

Uso un generatore di sito Web statico che genera tutti i file nel sito Web in ciascuna esecuzione. Dopo aver generato i file, utilizzo rsync per copiare il contenuto in posizione.Come rendere rsync preservare data e ora dei file immutati

Per consentire una migliore memorizzazione nella cache, vorrei che rsync non modifichi il timestamp di quei file nella destinazione che non sono stati modificati. È possibile?

MODIFICA: per rendere chiaro, i timestamp di tutti i file di origine sono sempre più recenti dei timestamp dei file di destinazione.

risposta

9

L'opzione -c sembra fare ciò che voglio. La pena delle prestazioni non è un problema nel mio caso.

+0

-t sarà meglio nel tuo caso – Pungs

+0

Non credo, perché i timestamp dei file sorgente sono sempre più recenti di quelli dei file di destinazione anche se il contenuto dei file non è cambiato. –

+2

L'opzione -c funziona. Una cosa da notare però: se non vuoi che i tempi di modifica cambino, assicurati di non usare l'opzione -a, poiché invoca silenziosamente -t, che significa "preservare i tempi di modifica", cioè "sovrascrivere i tempi di modifica di i file remoti con i tempi di modifica dei file locali. " – ishmael

0

Hai provato le flag -t e -E?

MODIFICA: Uh ... o il timestamp dei file di origine viene modificato ogni volta che si rigenera il sito Web, anche se i file non sono stati modificati?

+0

Sì, il timestamp del file di origine viene sempre modificato in "now". –

+0

In tal caso, provare a usare --size-only in modo che salti i nuovi file (supponendo che abbiano le stesse dimensioni) ... è un po 'pericoloso, ma può avere conseguenze non intenzionali. Usarlo in combinazione con -c è un po 'meglio, ma è lento. – MarcB