ファイルのタイムスタンプについて

Linuxでは、「ls」コマンドなどで表示されるファイル更新時刻のほかにアクセス時刻、ステータス更新時刻があります。それぞれの時刻について調べてみました。

ファイル更新時刻

「mtime」と呼ばれる時刻です。ファイルを編集した場合に更新されます。例えば、エディターでファイルを更新した場合には、この時刻が更新されます。「find」コマンドを使用して2日以内に更新したファイルを検索する場合は、「find . -mtime -3」、「ls」コマンドを使う場合は、「ls -l」とします。

アクセス時刻

「atime」と呼ばれる時刻です。ファイルにアクセスがあった場合に更新されます。例えば、「cat」コマンドで内容を確認したり、「grep」コマンドで検索の対象とした場合には、この時刻が更新されます。「find」コマンドを使用して2日以内にアクセスしたファイルを検索する場合は、「find . -atime -3」、「ls」コマンドを使う場合は、「ls -lu」とします。

ステータス更新時刻

「ctime」と呼ばれる時刻です。ファイルの状態を変更した場合に更新されます。ファイルの状態とは、ファイル名、ファイルサイズ、パーミッション、リンク数、オーナー、グループなどのことです。「find」コマンドを使用して2日以内にアクセスしたファイルを検索する場合は、「find . -ctime -3」、「ls」コマンドを使う場合は、「ls -lc」とします。

それぞれの時刻を含めたファイルステータスの確認

ファイルのステータスを確認するのに「stat」コマンドを使用します。このコマンドは、ファイルの詳細ステータスを表示します。inodeやファイルサイズ、オーナーやグループ、パーミッションなどの情報を表示するのですが、以下のように時刻情報も表示します。

user01@debian:~$ stat Testfile.txt
  File: `Testfile.txt'
  Size: 16              Blocks: 8          IO Block: 4096   通常ファイル
Device: 7500h/29952d    Inode: 114926      Links: 1
Access: (0666/-rw-rw-rw-)  Uid: ( 1000/  user01)   Gid: ( 1000/  user01)
Access: 2008-09-04 14:51:39.000000000 +0900
Modify: 2008-09-04 14:52:20.000000000 +0900
Change: 2008-09-04 14:52:20.000000000 +0900

下3行が時刻の情報で、Accessが、「atime」をModifyが、「mtime」をChangeが、「ctime」を表示しています。

タイムスタンプの変更

「touch」コマンドを使用してタイムスタンプを変更することができます。以下のステータスのファイルがあるとします。

user01@debian:~$ stat Test.txt
  File: `Test.txt'
  Size: 9               Blocks: 8          IO Block: 4096   通常ファイル
Device: 7500h/29952d    Inode: 119192      Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/  user01)   Gid: ( 1000/  user01)
Access: 2008-09-04 17:11:16.000000000 +0900
Modify: 2008-09-04 17:11:16.000000000 +0900
Change: 2008-09-04 17:11:16.000000000 +0900

このファイルのタイムスタンプを変更します。

user01@debian:~$ touch -t 199812052051.20 Test.txt
user01@debian:~$ stat Test.txt
  File: `Test.txt'
  Size: 9               Blocks: 8          IO Block: 4096   通常ファイル
Device: 7500h/29952d    Inode: 119192      Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/  user01)   Gid: ( 1000/  user01)
Access: 1998-12-05 20:51:20.000000000 +0900
Modify: 1998-12-05 20:51:20.000000000 +0900
Change: 2008-09-04 17:12:49.000000000 +0900

「touch」コマンドを「-t」オプションで実行するとアクセス時刻とファイル更新時刻が変更されます。また、ステータス変更時刻は、通常通り更新されます。時刻の指定には、「YYYYMMDDHHMI.SS」のフォーマットで指定します。分と秒の間に「.」を設定します。

アクセス時刻とファイル更新時刻を個別に変更したい場合は、オプションを追加します。アクセス時刻を変更する場合は、「-at」をファイル更新時刻を変更する場合は、「-mt」を設定します。

user01@debian:~$ touch -at 200809041713.01 Test.txt
user01@debian:~$ touch -mt 200809041714.10 Test.txt
user01@debian:~$ stat Test.txt
  File: `Test.txt'
  Size: 9               Blocks: 8          IO Block: 4096   通常ファイル
Device: 7500h/29952d    Inode: 119192      Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/  user01)   Gid: ( 1000/  user01)
Access: 2008-09-04 17:13:01.000000000 +0900
Modify: 2008-09-04 17:14:10.000000000 +0900
Change: 2008-09-04 17:28:13.000000000 +0900
スポンサーリンク







シェアする

  • このエントリーをはてなブックマークに追加

フォローする