Suppongo che tu parli del sistema operativo unix. Da Wikipedia ( stat () ):
stat() is a Unix system call that returns file attributes about an inode. The semantics of stat() vary between operating systems. As an example, the Unix command ls uses it to retrieve information on (among many others):
- atime: time of last access (
ls -lu
),
- mtime: time of last modification (
ls -l
), and
- ctime: time of last status change (
ls -lc
).
Da man 2 stat
:
The field st_mtime
is changed by file modifications, for example, by mknod(2)
, truncate(2)
, utime(2)
and write(2)
(of more than zero bytes). Moreover, st_mtime
of a directory is changed by the creation or deletion of files in that directory. The st_mtime
field is not changed for changes in owner, group, hard link count, or mode.
Ciò significa che l'ultima modifica è impostata su un file quando:
Il file - viene creato (
mknod
)
- il file viene troncato (
truncate
)
- il tempo di modifica è stato modificato esplicitamente (
utime
)
- uno o più byte di dati sono stati scritti in un file (
write
) - che include casi in cui gli stessi dati sono stati scritti due volte e nulla è stato effettivamente modificato
Sono non sicuro se è un elenco completo.
Come mtime
su una directory:
- Cambia quando crei, sposti o cancelli un file o una directory che è figlio immediato di questa directory. Euristica semplice:
mtime
di una directory cambia quando l'output di ls
(solo comando semplice, nessuna ricorsione o eventuali parametri aggiuntivi) cambia.
- Non cambia quando si modifica solo il contenuto di qualsiasi file all'interno (indipendentemente da quanto profondamente annidato) o si fa qualcosa all'interno delle sue sottodirectory. Nessuna propagazione.
Mi chiedo se la memorizzazione dei dati che hai citato in un DB possa essere di qualche aiuto - è già memorizzata in un file system, che è un database da solo, e tutti gli strumenti per interrogarlo sono già lì .