bug con rsync che modifica le date di modifica anche con l'opzione -a

3

Ho testato rsync e ho trovato un bug strano quando copiavo file e cartelle da una partizione a un'altra:

Se faccio questo:

rsync -avE --delete '/Volumes/disk1/origin/' '/Volumes/disk2/destination/'

Copia / sincronizza correttamente.

La prossima volta che uso rsync per la stessa sincronizzazione, alcune date di modifica nei file (non nelle cartelle!) diventano errate (sono cambiate nella data e ora correnti), anche se ho usato -a in rsync comando che dovrebbe preservarlo.

La cosa più strana è che se lo rifaccio, le date che erano sbagliate sono corrette ora, il che significa che rsync sta cambiando le date di modifica ogni volta che viene eseguito, e quando cambia le date, è sempre al stessi file, non vedo un modello diverso da quello che riguarda solo i file e gli stessi file.

Che cosa sto facendo male e può essere corretto?

Questo è con OS X 10.9.5, usando il terminale, rsync 2.6.9

    
posta jackJoe 16.06.2015 - 17:29
fonte

1 risposta

1

Lasciatemi correggere il mio commento: un timestamp a 64 bit è composto da access-modification-change-birthtime .

Da man 2 stat le seguenti chiamate di sistema cambiano i rispettivi tempi.

I campi relativi al tempo di struct stat sono i seguenti:

 st_atime         Time when file data last accessed.  Changed by the mknod(2), utimes(2) and read(2) system calls.

 st_mtime         Time when file data last modified.  Changed by the mknod(2), utimes(2) and write(2) system calls.

 st_ctime         Time when file status was last changed (inode data modification).  Changed by the chmod(2), chown(2), link(2), mknod(2), rename(2),
                  unlink(2), utimes(2) and write(2) system calls.

 st_birthtime     Time of file creation. Only set once when the file is created. This field is only available in the 64 bit inode variants. On filesys-
                  tems where birthtime is not available, this field holds the ctime instead.

Strumenti come cp , ditto e pax possono conservare i metadati OS X quando vengono chiamati per copiare i file. Questi strumenti non conservano il tempo di nascita se il tempo di modifica è più recente del tempo di nascita del file originale. La data di nascita del nuovo file è impostata sull'ora di modifica del file originale.

Se si compila rsync con i file di file delle patch, crtimes, compressione hfs allora rsync può gestire i metadati di OS X e preservare il tempo di nascita del file originale sul nuovo file.

Quindi chiameresti rsync in questo modo.

rsync -avXN --delete SOURCE DESTINATION

Suggerisco di avere una lunga lettura del manuale rsync e di capire le opzioni che ho suggerito prima di tentare di applicarle.

    
risposta data 20.06.2015 - 14:39
fonte

Leggi altre domande sui tag