How to preserve files original creation date?
Categories:
Preserving File Creation Dates During Transfers and Copies

Learn how to maintain the original creation and modification timestamps of files when moving, copying, or transferring them across different systems, especially using SSH.
When managing files, especially across different systems or during backups, it's often crucial to preserve their original creation and modification dates. Standard copy or transfer operations might update these timestamps to the time of the copy, which can lead to issues with version control, auditing, or simply losing valuable historical data. This article explores various methods, focusing on command-line tools like cp
, rsync
, and tar
with ssh
, to ensure file timestamps remain intact.
Understanding File Timestamps
Every file on a Unix-like system (Linux, macOS) has three primary timestamps:
- Access Time (atime): The last time the file's data was read.
- Modification Time (mtime): The last time the file's content was modified.
- Change Time (ctime): The last time the file's metadata (permissions, ownership, or content) was changed. This is updated by
mtime
changes as well.
When we talk about preserving the "creation date," we are typically referring to the mtime
(modification time) as the closest equivalent to a creation date that is consistently preserved across file system operations. True creation time (btime
or crtime
) is not universally supported or easily manipulated by standard tools across all file systems.
mtime
is often used as a proxy for creation date, be aware that some file systems (like ext4
on Linux or APFS
on macOS) do store a true creation timestamp (crtime
or btime
). However, standard tools like cp
or rsync
primarily focus on preserving mtime
and atime
.Preserving Timestamps with cp
The cp
command is fundamental for copying files locally. To preserve timestamps, you need to use specific options. The -p
option is the most common and preserves the modification time, access time, and file mode (permissions). For a more comprehensive preservation, including ownership and symbolic links, the -a
(archive) option is preferred, which is equivalent to -dR --preserve=all
.
cp -p source_file.txt destination_directory/
cp -a source_directory/ destination_directory/
Using cp
to preserve timestamps and other attributes.
Advanced Preservation with rsync
rsync
is a powerful utility for synchronizing files and directories, both locally and remotely. It's highly efficient as it only transfers the differences between source and destination. rsync
is excellent for preserving timestamps and other file attributes due to its comprehensive set of options.
# Local synchronization, preserving all attributes
rsync -av source_directory/ destination_directory/
# Remote synchronization via SSH, preserving all attributes
rsync -avz --rsh=ssh source_directory/ user@remote_host:/path/to/destination_directory/
Using rsync
for local and remote file synchronization with timestamp preservation.
-a
option in rsync
(archive mode) is a combination of -rlptgoD
. This includes preserving symbolic links, permissions, modification times, group, owner, and device files. The -v
option provides verbose output, and -z
enables compression during transfer, which is useful for remote operations.Using tar
and ssh
for Remote Transfers
For transferring entire directories over SSH while preserving all file attributes, including hard links and special files, tar
combined with ssh
is a robust solution. This method pipes the tar
archive directly over the SSH connection, avoiding intermediate files.

File transfer workflow using tar
and ssh
.
# From the source machine:
tar -cvpf - /path/to/source_directory | ssh user@remote_host 'cd /path/to/destination_directory && tar -xvpf -'
# Explanation of options:
# -c: Create an archive
# -v: Verbose output
# -p: Preserve permissions (and other attributes like mtime)
# -f -: Write to standard output (for piping)
# -x: Extract files from an archive
# -P: Preserve absolute pathnames (use with caution, or omit if not needed)
Transferring a directory via tar
and ssh
while preserving attributes.
tar -P
, be extremely careful as it preserves absolute paths. If /path/to/source_directory
is /home/user/data
, it will try to extract to /home/user/data
on the destination, potentially overwriting existing files. It's generally safer to cd
into the target directory on the remote host and use relative paths for tar
.Verifying Timestamps
After performing any file transfer or copy operation, it's good practice to verify that the timestamps have been preserved correctly. The ls -l
command is your friend here, as it displays the modification time (mtime
) of files and directories.
# Check modification time of a file
ls -l some_file.txt
# Check modification times recursively within a directory
ls -lR some_directory/
Verifying file modification times using ls -l
.
By understanding and correctly applying these commands, you can ensure that your file management operations respect the integrity of your data's historical timestamps, which is vital for many development, backup, and archival scenarios.