Horário de nascimento é a hora em que o arquivo foi criado no sistema de arquivos, também conhecido como o tempo de criação do arquivo ( crtime
no EXTFS). Note que isto não é definido pelo POSIX; apenas o último tempo de acesso ( atime
), o tempo da última modificação ( mtime
) e o tempo de alteração do inode ( ctime
) são obrigatórios pelo POSIX.
IIRC, Linux ainda não fornece nenhuma interface para obter a hora de nascimento, existe uma proposta para xstat()
e fxstat()
, ainda a ser implementado.
Como @muru observou, a nova abordagem é statx()
, que é mesclado no kernel principal recentemente. Assim, qualquer ferramenta de espaço de usuário (modificada) pode aproveitar isso (a estrutura statx
agora, veja abaixo) em qualquer kernel recente.
struct statx {
__u32 stx_mask;
__u32 stx_blksize;
__u64 stx_attributes;
__u32 stx_nlink;
__u32 stx_uid;
__u32 stx_gid;
__u16 stx_mode;
__u16 __spare0[1];
__u64 stx_ino;
__u64 stx_size;
__u64 stx_blocks;
__u64 __spare1[1];
struct statx_timestamp stx_atime;
struct statx_timestamp stx_btime;
struct statx_timestamp stx_ctime;
struct statx_timestamp stx_mtime;
__u32 stx_rdev_major;
__u32 stx_rdev_minor;
__u32 stx_dev_major;
__u32 stx_dev_minor;
__u64 __spare2[14];
};
Aqui stx_btime
é o horário de criação do arquivo.
Nesse meio tempo, stat
está mostrando a ausência dos campos (ou valores vazios) st_birthtime
/ st_birthtimesec
retornados pela chamada stat()
, na stat
estrutura:
struct stat {
dev_t st_dev; /* ID of device containing file */
ino_t st_ino; /* inode number */
mode_t st_mode; /* protection *
nlink_t st_nlink; /* number of hard links */
uid_t st_uid; /* user ID of owner */
gid_t st_gid; /* group ID of owner */
dev_t st_rdev; /* device ID (if special file) */
off_t st_size; /* total size, in bytes */
blksize_t st_blksize; /* blocksize for filesystem I/O */
blkcnt_t st_blocks; /* number of 512B blocks allocated */
time_t st_atime; /* time of last access */
time_t st_mtime; /* time of last modification */
time_t st_ctime; /* time of last status change */
};
Existem alguns truques com a solicitação de depuração no nível do sistema de arquivos para obter as informações de criação dos metadados do FS. para EXTFS:
debugfs -R 'stat /path/to/file' /dev/sda1
assumindo que o FS do arquivo em questão está na partição /dev/sda1
. Você pode extrair o valor de crtime
para obter a hora de criação do arquivo.