Keep The Creation aka Birth Timestamp When Copying A File On A Mac In Python

NOTE: I'm not sure this is accurate. It looked like it when I first tested it, but I'm not sure now.

Leaving here until I can investigate further.

This is how you can make a copy of a file and maintain its "birth" time.

Note: I'm pretty sure you need XCode to get the `SetFile` command.



# this is the command to get the birth time of the inode
stat -f "%B" file_name
# and this is for the file modified time:
stat -f "%m" file_name

TODO: Formatting

```python3 import subprocess import time

def copy_file_keeping_creation_date(source_path, dest_path): # TODO: Add error handling in all this creation_time =['stat', '-f', '%B', src_path], stdout=subprocess. PIPE).stdout.decode('utf-8') date_string = time.strftime('%m/%d/%Y %H:%M:%S', time.localtime(int(creation_time))) copy2(src_path, dest_path) response =['SetFile', '-d', date_string, dest_path]) print(response) # TODO: Make a better response


- copy2 copies the most metadata of the possible python options, but still doesn't do the birth time. - `rsync -a` doesn't copy it either. - TODO: show examples from `stat` command - TODO: put in details about the four times available for files.


- -

TODO: Look at adding an answer to this one:

TODO: Look at this answer and see if there's something in that pathlib that can be used for finding the data instead of using `stat` -

TODO: Look at `cp -p` to see what it perserves. According to the comment on this answer ( that's what copy2 is supposed to do. Check it with `stat` and see if it keeps the birth timestamp.