touch -aオプション|アクセス時刻だけを変更する方法をやさしく解説
生徒
「Linuxでファイルの時間を変更するって聞いたんですけど、どんな意味なんですか?」
先生
「Linuxでは、ファイルが最後に読まれた時刻や更新された時刻が記録されています。それを変更することもできるんですよ。」
生徒
「その中でもアクセス時刻だけを変える方法ってあるんですか?」
先生
「それにはtouch -aというオプションを使います。実際に見てみましょう。」
1. アクセス時刻とは?
Linuxでは、ファイルには3つの時刻情報があります:
- アクセス時刻(atime):ファイルを最後に読んだ時刻
- 更新時刻(mtime):ファイルの内容を最後に変更した時刻
- 変更時刻(ctime):ファイルの情報(所有者やパーミッションなど)を変更した時刻
アクセス時刻は、ファイルの中身を「見ただけ」の場合でも更新されます。たとえば、catコマンドでファイルを読んだだけでも変わります。
2. touch -aの基本的な使い方
touch -aオプションは、ファイルのアクセス時刻だけを変更したいときに使います。通常のtouchコマンドは、アクセス時刻と更新時刻の両方を変えてしまいますが、-aを使えばアクセス時刻だけに限定できます。
touch -a sample.txt
このコマンドは、ファイル「sample.txt」のアクセス時刻だけを現在時刻に変更します。
3. アクセス時刻の確認方法
アクセス時刻を確認するには、statコマンドを使います。
stat sample.txt
File: sample.txt
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Access: 2025-09-16 10:00:00.000000000 +0900
Modify: 2025-09-15 09:30:00.000000000 +0900
Change: 2025-09-15 09:30:00.000000000 +0900
Accessの行が、アクセス時刻を示しています。
4. タイムスタンプを指定して変更する
アクセス時刻を任意の日時に設定したい場合は、-tオプションを組み合わせて使います。
touch -a -t 202509160900 sample.txt
この例では、「2025年9月16日9時00分」にアクセスしたことに変更されます。
タイムスタンプは「YYYYMMDDhhmm」の形式で指定します。
5. 更新時刻を変えずにアクセス時刻だけ変えるメリット
たとえば、あるファイルがいつ最終的に読まれたかだけを記録したい場合、更新時刻をそのまま残したいことがあります。そのようなときに-aオプションが便利です。
バックアップスクリプトやアクセスログのような仕組みにおいて、「読み取り操作があったことだけを記録したい」という場面に役立ちます。
6. 更新時刻(-m)との違いと使い分け
touchコマンドには、-mという更新時刻だけを変更するオプションもあります。
touch -m sample.txt
こちらはファイルの中身に変更があったかのように、更新時刻を上書きする操作です。
-aと-mは併用も可能で、その場合は両方の時刻が変わります。
touch -a -m sample.txt
7. 空ファイルに対するアクセス時刻だけの変更
中身が空っぽのファイルでも、アクセス時刻だけを変更することができます。
たとえばログファイルなどで、内容はそのままにして「読んだ記録」だけを残しておきたいときに使われます。
touch -a empty.log
8. アクセス時刻の変更が禁止されているケース
一部のLinux環境では、noatime(アクセス時刻を記録しない)マウントオプションが設定されていることがあります。その場合、ファイルを読んでもアクセス時刻が更新されません。
そのような環境でも、touch -aを使えば、明示的にアクセス時刻を変更することが可能です。
9. スクリプト内での活用例
touch -aは、シェルスクリプトの中でファイルのアクセス時刻を人工的にコントロールしたいときにも使われます。
たとえば、何らかの「読み取り済み」フラグとして利用する場合や、ログローテーションを手動で制御したいときに活用されます。
#!/bin/bash
touch -a -t 202509150000 /var/log/mylog.log
このように記述すれば、スクリプトで自動的にアクセス時刻を変更できます。