2012-04-16 12 views
3

UNIXがファイル作成時間を保存しない理由をanybvodyから教えてもらえますか? 変更時間、変更時間、アクセス時間は保存するが作成時間は保存しないと大きな負担ですか? 具体的な理由はありますか?Unixでのファイル作成時間

または何らかの言語(任意のプログラミング言語)を使用していますか?システムコールによっては、ファイルの作成に時間がかかることがありますか?

+2

iode-data(所有者、グループモードなど)が変更されていない場合は、「ctime」フィールド(存在する場合)を使用できます。 –

答えて

5

このような情報は、inodeが格納する責任があるため、ファイルシステム自体の制限であると考えています。すばやいグーグルで、ext4ファイルシステムがそのファイル属性のストレージをinodeに追加したことが判明しました。

ext4 timestamps

1

WhiteboardDevとしてノート、多くの近代的なファイルシステムストアファイルの作成時間を行うが、詳細へのアクセス方法が異なりますので、それは標準ではありません。

具体的な理由は基本的には歴史的です。実際にでした。これらのAPIの多くが最初に定義されたとき、70年代にあまりにも多くのメタデータを格納する負担がありました。ファイルが変更されたり、それの所有者は、それが産地の変更による変更された後

+0

こんにちはStephenこんにちは、あなたは作成日を取得するために使用されるさまざまな方法にリンクしてください、それは本当に素晴らしいでしょう!私は現在、それらの検索を行っています。編集:ああ@jlliagreそれらが記載されていると思うこれは本当ですか? http://stackoverflow.com/a/10172234/1828637 – Noitidart

1

statに修正変更ファイルのst_ctime を返します(これは... ことが負担であるため、現在のファイルシステムは、常に「最終アクセス時刻」を更新しないことは注目に値します)ので、すべてのベットはNT /オフ内容に ドスあるあなたは、コマンドシェル内での全体でそれを書き換え、完全にファイルをゴミ箱できるよう、この点で信頼性が低いと作成時間

関連するメタデータを変更しません。 unixのファイルでは、元の作成時間は保証されませんが、最新バージョンの作成時間は保持されます。ファイルをバージョンアップする必要がある場合は、バージョンを外部または内部で明示的に指定する必要があります。

フィールドst_ctimeは、書き込みまたはinode情報 (所有者、グループ、リンクカウント、モードなど)によって変更されます。

 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 file system 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 */ 
     }; 
+0

こんにちはパディー、あなたは 'st_ctime'、' '最後のステータス変更の時間' 'が、生まれつきの時間を得るための信頼できる方法だと言っていますか? – Noitidart

2

Unixが作成時間を保存しない主な理由は、ファイル作成日を設定する必要があるという標準的な定義がないため、この情報は議論の余地があります。

この作成時間は、データが作成された時間(たとえば、JPEG写真が撮影された時間)を表すために、ファイルがバックアップからコピーまたは復元されたときに保存されることを望みます。一方、他の人は、この作成時間をファイルシステムオブジェクト(例えば:inode)が作成される時間にすることを好みます。

前者は通常、ファイル内に表示されます(例:EXIF)。

後者は、最近のファイルシステムが提供するものである:

  • UFS2/st_birthtime
  • ZFS/crtime
  • Ext4の/ crtime
  • のbtrfs/OTIME
  • HFS + /?

メモこの作成時刻の保存に使用されるフィールドには名前を付けることに同意しません。

+0

こんにちはjilliagreこれは共有のための素晴らしいありがとう!この投稿から数年たって、HFS +のメソッドを知っていて、学んだ他のファイルシステムがあるような新しい情報で更新できるかどうか疑問に思っていましたか?ありがとうございました!! – Noitidart

関連する問題