none
ファイルの「アクセス日時」が更新される操作は? RRS feed

  • 質問

  • お世話になります。

    下記内容について情報をいただければ幸いです。

    現在、FSRMのファイル管理タスクで、「最終アクセス日時が1年以上前のファイルは移動する」というような

    タスクを作成しようかと思っています。

    使用していないファイルは削除して、ディスク容量を節約したい、というのが狙いです。

    「使用していないファイル」の定義づけですが、更新されなくてもファイルを開けば使用している、と見なそうと

    思っています。

    それで、「最終アクセス日時が1年以上前のファイル」を移動というタスクを作成してみたのですが、

    ファイルを開いただけではアクセス日時が更新されていないことに気付きました。

    上書き保存や、ファイルの属性をいじればアクセス日時も更新されますが、ファイルを開いただけでは

    更新されませんでした。

    XPの端末では、ファイルを開いただけでアクセス日時が更新されました。

    7、2008では、ファイルを開いただけではアクセス日時が更新されません。

    これは仕様でしょうか?

    とすると、7、2008で「ファイルのアクセス日時のみ」が更新される操作はどういうものがあるのでしょうか?

    ※Windows2008では、デフォルトでファイルのアクセス日時が更新されないため、以下コマンドを使用し更新されるようにしています。

    fsutil behavior set disablelastaccess 0

    なにか情報をご存じの方いらっしゃればよろしくお願いします。

    2012年5月10日 5:34

回答

  • 最後にアクセスしてからただ数日経過しただけなのか、それとも、アクセスしてから数日経過後にもう一度アクセスしたのでしょうか?

    あと、アクセスは何でどうアクセスしているのでしょう? もしアプリケーションが、アクセス日時を更新しないよう指定してアクセスしていれば、更新されないので。

    • 回答としてマーク パルマ 2012年5月18日 7:36
    2012年5月18日 0:40

すべての返信

  • 仕様かどうかについては、Vista で既定が無効になったようです。

    更新される操作については、技術的には、ファイル ハンドルを開いただけでなく実際に読み書きが発生した時のようですが、

    一般ユーザーから見れば、ファイルを開いたつもりのない操作でも更新されてしまうようです。(エクスプローラが単にファイルからアイコンを取得しただけのときとか)

    詳しくはこちら:

    http://blogs.msdn.com/b/oldnewthing/archive/2011/10/10/10222560.aspx

    2012年5月11日 5:14
  • 回答ありがとうございます。

    ファイルへのアクセス方法はいろいろあると思いますが、

    ユーザーがファイルを開いただけで、アクセス日時が更新されるようにしたいです。

    2008ではできないのでしょうか? なにか設定すればできるようになるのでしょうか?

    現状だと、ファイルの更新を伴う操作をしないとアクセス日時が更新されません。

    この場合、ファイルの更新日時も当然更新されるので、アクセス日時の存在意義は?と考えてしまいます。

    FSRMのファイル管理タスクで、

    「アクセス日時」で有効期限を設定できますが、これは事実上アクセス日時というよりも「更新日時」ということでしょうか?

    お分かりになる方回答お願いいたします。


    • 編集済み パルマ 2012年5月15日 0:53
    2012年5月15日 0:52
  • チャブーンです。

    Windows Server 2008 R2やWindows 7では、この動作は既定で無効になっていて、NtfsDisableLastAccessUpdateレジストリ値で変更できるはずです。こまかいところは、したのページで。

    http://technet.microsoft.com/en-us/library/cc959914.aspx

    [追記]
    こちらのページのほうが、わかりやすいですかね?MSとは無関係な情報ではありますけれど。

    http://news.mynavi.jp/column/windows/079/index.html


    2012年5月15日 1:26
    モデレータ
  • Vista 以降でも、すでにご使用の fsutil behavior set disablelastaccess 0 を設定すれば、たとえばワードパッドでテキスト ファイルを開いただけで(保存しなくても)更新されます。実際確認しました。

    ただもともと(XP 以前から)、パフォーマンス上の理由から、このアクセス日時というものは、すべてのアクセスごとに逐一アップデートされるものではないと思います。

    <q>NTFS typically updates a file’s attribute on disk if the current Last Access Time in memory differs by more than an hour from the Last Access Time stored on disk, or when all in-memory references to that file are gone, whichever is more recent. For example, if a file’s current Last Access Time is 1:00 P.M., and you read the file at 1:30 P.M., NTFS does not update the Last Access Time. If you read the file again at 2:00 P.M., NTFS updates the Last Access Time in the file’s attribute to reflect 2:00 P.M. because the file’s attribute shows 1:00 P.M. and the in-memory Last Access Time shows 2:00 P.M.</q>

    http://technet.microsoft.com/ja-jp/library/cc781134%28WS.10%29.aspx

    2012年5月15日 2:24
  • 回答ありがとうございましす。

    NtfsDisableLastAccessUpdate = 0 になっていることは確認しています。

    アクセス日時がアクセスごとに逐一アップデートされない、ということですが、

    すでにアクセスしてから数日経過していますが更新されません。

    7、2008R2で実験しましたが、どちらも更新されませんでした。

    どなたかご存知の方ご教授お願いします。

    2012年5月18日 0:00
  • 最後にアクセスしてからただ数日経過しただけなのか、それとも、アクセスしてから数日経過後にもう一度アクセスしたのでしょうか?

    あと、アクセスは何でどうアクセスしているのでしょう? もしアプリケーションが、アクセス日時を更新しないよう指定してアクセスしていれば、更新されないので。

    • 回答としてマーク パルマ 2012年5月18日 7:36
    2012年5月18日 0:40
  • ・アクセスして数日経過して確認

    ・アクセスして数日経過してもう一度アクセス

    両方試しました。

    アクセスは、エクスプローラ上でファイルを開いて、閉じるという操作です。

    2012年5月18日 2:24
  • エクスプローラから何のアプリケーションで開いているのでしょうか?
    2012年5月18日 2:31
  • 失礼しました。

    試していたのは拡張子(txt)のファイルをメモ帳で開いていました。

    メモ帳は、アクセス日時が更新されないのでしょうか?

    いろいろなアプリケーションで試してみたいと思います。

    2012年5月18日 2:47
  • こちらはメモ帳では確認してませんが、メモ帳は ReadFile などではなくファイル マッピングで読むので、特殊だろうと思います。
    2012年5月18日 3:41
  • HomeClose様

    確認した結果、アプリケーションによって更新されるものされないものがありました。

    (テキストエディタ系、画像ソフト系は更新されない。Officeソフト系は更新されました。)

    更新されるものとされないものがある状態でタスクを作成するのは、不都合が生じそう

    なのであきらめますが、貴重な情報をいたけたのでありがとうございました。

    回答をつけさせていただきます。

    2012年5月18日 7:36