phpbar.de logo

Mailinglisten-Archive

[php] Datum wann die Datei erzeugt wurde ?

[php] Datum wann die Datei erzeugt wurde ?

Kristian =?iso-8859-1?Q?K=F6hntopp?= kk_(at)_netuse.de
Thu, 12 Aug 1999 16:13:36 +0200


Norbert Pfeiffer wrote:
> Dies wuerde bedeuten, dass die 'change time' den Zeugungszeitpunkt
> anzeigt, falls nicht nachtraeglich jemand die Rechte aendert ?

/usr/include/linux/ext2_fs.h:
   214  /*
   215   * Structure of an inode on the disk
   216   */
   217  struct ext2_inode {
   218          __u16   i_mode;         /* File mode */
   219          __u16   i_uid;          /* Owner Uid */
   220          __u32   i_size;         /* Size in bytes */
   221          __u32   i_atime;        /* Access time */
   222          __u32   i_ctime;        /* Creation time */
   223          __u32   i_mtime;        /* Modification time */
   224          __u32   i_dtime;        /* Deletion Time */
   225          __u16   i_gid;          /* Group Id */
   226          __u16   i_links_count;  /* Links count */
   227          __u32   i_blocks;       /* Blocks count */
   228          __u32   i_flags;        /* File flags */
...
   240          __u32   i_block[EXT2_N_BLOCKS];/* Pointers to blocks */
   241          __u32   i_version;      /* File version (for NFS) */
   242          __u32   i_file_acl;     /* File ACL */
   243          __u32   i_dir_acl;      /* Directory ACL */
...

Eigenschaften einer Datei sind (in Linux) also mode, uid (Owner),
Größe, gid (Gruppe), Link Count, Flags (chattr-Flags) und erweiterte
Zugriffsrechte.

Wenn Du genau wissen möchtest, unter welchen Bedingungen genau was
aktualisiert wird, dann mußt Du in /usr/src/linux/fs und /usr/src/linux/fs/ext2
einmal nach ctime suchen. Da bekommt man vergleichsweise schnell den
Überblick, was was passiert.

Ein Beispiel:

kk_(at)_land:/usr/src/linux/fs/ext2 > grep ctime *
file.c: /* POSIX: mtime/ctime may not change for 0 count */
file.c: inode->i_ctime = inode->i_mtime = CURRENT_TIME;

Und in file.c dann:

   154  static ssize_t ext2_file_write (struct file * filp, const char * buf,
   155                                  size_t count, loff_t *ppos)
   156  {
...
   308          inode->i_ctime = inode->i_mtime = CURRENT_TIME;
...

Wenn also in eine Datei geschrieben wird, wird die ctime und die
mtime aktualisiert (womit dann Deine Bemerkung oben auch gleich
entkräftet wird: Es reicht, an eine Datei anzuhängen oder sie
sonstwie zu beschreiben und die ctime ändert sich).

Wenn man die ganzen i_ctime = CURRENT_TIME durchgeht, bekommt man
so eine vollständige Liste der Bedingungen, unter denen die ctime
geändert wird.

Kristian

-- 
Kristian Köhntopp, NetUSE Kommunikationstechnologie GmbH
Siemenswall, D-24107 Kiel, Germany, +49 431 386 436 00
Using PHP3? See our web development library at
http://phplib.shonline.de/ (GPL)


php::bar PHP Wiki   -   Listenarchive