atimes+ctimes patch

Madhu enometh at
Mon Mar 16 12:27:18 UTC 2020

schilytools star has the ability to restore ctimes from tarfiles. This
is useful when restoring filesystems as root in single user mode, and
I thought I'd like rsync to do the same.

I started working off the rsync-patches/atimes.diff patch but noticed
that this patch is buggy and presently does not work. (It fails to set
the atime and it fails to set the mtime too).  Even if this is fixed
that patch does not provide for setting nanosecond times.

The way nanosecond mtimes are presently handled is clunky and I am
looking for advice on how to proceed:

- would one want to use the st_ctim, st_atim st_mtim - struct timespec
  structures in struct stat - when available.

If the code to handle nanosecond times for mtime is cleaned up it
could be reused consistently for the ctime and atimes and [1] in

It would be possible to produce a new patch which incorporated new
options atimes (-U --atimes) and (-W --ctimes) - with the caveat that
-W has to be run as root and messes with the system clock, and maybe
support --ctimes --atimes only st_ctim, etc. is available)

If anyone has already done this work or thought about it (or can point
to another project which has done this) I'd be glad for advice.

[1] and possibly birthtimes (by setting the clock before a creat but
that is too ugly even for me to contemplate)

More information about the rsync mailing list