Quote:
Originally Posted by
bakunin
In UNIX every file has not one but several timestamps. There is:
- creation time
- modification time
- access time
and they are all set independently.
After having some time think this over i'd like to make some clarifications but, first off, thanks goes
RudiC and
drl for pointing it out to me that what i wrote was misleading, especially for the beginner. So, here it goes:
As i said, every file has several timestamps which stand for different things. But first, let us clarifiy what a "file" is in UNIX: a file is - obviously - a bunch of data stored on a "filesystem". There are (other than in Windows) different filesystems to choose from but it comes down to basically store the data somewhere in an organised form. But then there is a second aspect of this because we also need "meta data" - data about the data stored this way - to really make use of it. We i.e. need a "filename" by which we can address it. Notice that the files name is NOT part of the file - it is part of the set of descriptive items stored
about the file.
So, we have the "file" and we have its "meta data". In UNIX filesystems these meta data are stored in "inodes". Inodes have a structured, record-like format which can (and does) vary across filesystems but within the same filesystem they are uniform. The different timestamps i talked about are located in these inodes.
I will skip (if you are interested - ask explicitly) the intrinsics of the inode (there is a lot - filesystem tuning, links, rights management, ...) and concentrate on the timestamps of a file. Always keep in mind, though, that slight differences might occur across different filesystems. I will mostly forego these differences to give you an overall picture first. You may tell us which filesystem you have so we can add details to this picture in a follow-up:
There are three timestamps which are common throughout all filesystems:
- Modify - the last time the files data was modified
This basically covers creation as well as modification. Some filesystems, as i said, have a separate creation time, but - as i learned, thanks to RudiC - most have not. This timestamp is also referred to as "mtime".
- Access - the last time the file was read
This is set whenever the files data where accessed. Notice that a command like ls (list directory, the analogon to dir in Windows) will not access the files data, but only its meta data. Every access to the data, though, includes an access to the meta data because even the location - where the data can be found - is part of the meta data. This is also referred to as "atime".
- Change - the last time meta data of the file was changed
From what i said it should be obvious by now that the meta data can be changed without changing the data itself. What such an operation might look like, though, is perhaps more difficult to envision, so here is an example: the access rights to the file are also stored in the inode. Therefore, when you change the access rights only the meta data are changed, not the data itself. This will reflect in only this timestamp being changed. This timestamp is also called "ctime".
Thanks again to RudiC and drl for their valuable input in this.
I hope this helps.
bakunin