Robust support for metadata in file operations
Currently, many tools cannot be relied upon to preserve file system metadata (such as timestamps, permissions, and xattrs). For example, many FUSE file system drivers only save timestamps to 1 s resolution, even when both FUSE and the file system itself support nanosecond timestamps. Metadata support is generally poorly documented, so for applications that rely on the metadata, careful experimentation is now needed to ensure it is preserved. This blueprint will provide guidelines to ensure that all programs provide end-to-end support for (and sensible defaults for) preserving metadata when performing file operations across filesystems.
Some tools for checking:
* jacksum (http://
* ls --full-time shows times in full nanosecond resolution
* mtree, from FreeBSD
Sensible defaults: programs should preserve metadata by default, unless there is a compelling reason not to. Possible changes to make:
cp could have --preserve or --preserve=all by default (but since it's such a basic utility, could be scripts relying on current behavior?) (what about mv across filesystems?)
optipng: -preserve by default
jpegoptim: --preserve by default
firefox: downloads' timestamps saved from the HTTP header, like wget does
Many archiving programs don't save much metadata. Often this is an underlying limitation of the file format though, so often hard to change.