ファイルがいつ作成されたかを知る必要があります。このコマンドを実行しようとしていますstat filename
。しかし、私のファイルシステムはファイル作成時間をメタデータとして保存しません。
[root@s1 XYZ]# stat ./px/cd/78/cd78eholuefekgpz6c0snn5oaayypnloqxgfivszd5d.mxp
File: `./px/cd/78/cd78eholuefekgpz6c0snn5oaayypnloqxgfivszd5d.mxp'
Size: 16241 Blocks: 32 IO Block: 4096 regular file
Device: fd02h/64770d Inode: 129108489 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 509/ UNKNOWN) Gid: ( 509/ UNKNOWN)
Access: 2018-03-07 12:28:31.000000000 +0200
Modify: 2018-03-07 07:04:15.000000000 +0200
Change: 2018-03-07 12:28:31.468075157 +0200
ところで私はこれを読んだ。場所そしてdebugfsコマンドを使用してください。 crtime(生成時間)を表示します。ただし、表示された生成時間は修正時間よりも長くなります(更新済み)。何が問題なの?
[root@s1 XYZ]# ls -i ./px/cd/78/cd78eholuefekgpz6c0snn5oaayypnloqxgfivszd5d.mxp
129108489 ./px/cd/78/cd78eholuefekgpz6c0snn5oaayypnloqxgfivszd5d.mxp
[root@s1 XYZ]# df -T ./px/cd/78/cd78eholuefekgpz6c0snn5oaayypnloqxgfivszd5d.mxp
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/mapper/datavg-datalv ext4 5986257120 5645927428 36483732 100% /data
[root@s1 fcs_backup]# debugfs -R 'stat <129108489>' /dev/mapper/datavg-datalv
debugfs 1.41.12 (17-May-2010)
Inode: 129108489 Type: regular Mode: 0644 Flags: 0x80000
Generation: 3953510053 Version: 0x00000000:00000001
User: 509 Group: 509 Size: 16241
File ACL: 0 Directory ACL: 0
Links: 1 Blockcount: 32
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x5a9fbecf:6f990a54 -- Wed Mar 7 12:28:31 2018
atime: 0x5a9fbecf:00000000 -- Wed Mar 7 12:28:31 2018
mtime: 0x5a9f72cf:00000000 -- Wed Mar 7 07:04:15 2018
crtime: 0x5a9fbecf:6f990a54 -- Wed Mar 7 12:28:31 2018
Size of extra inode fields: 28
EXTENTS:
(0-3): 516503300-516503303
編集済み ファイルが開いていません。私も同じように走った。
[root@s1 XYZ]# stat ./px/cd/78/cd78eholuefekgpz6c0snn5oaayypnloqxgfivszd5d.mxp
File: `./px/cd/78/cd78eholuefekgpz6c0snn5oaayypnloqxgfivszd5d.mxp'
Size: 16241 Blocks: 32 IO Block: 4096 regular file
Device: fd02h/64770d Inode: 129108489 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 509/ UNKNOWN) Gid: ( 509/ UNKNOWN)
Access: 2018-03-07 12:28:31.000000000 +0200
Modify: 2018-03-07 07:04:15.000000000 +0200
Change: 2018-03-07 12:28:31.468075157 +0200
[root@s1 XYZ]# debugfs -R 'stat <129108489>' /dev/mapper/datavg-datalv
debugfs 1.41.12 (17-May-2010)
Inode: 129108489 Type: regular Mode: 0644 Flags: 0x80000
Generation: 3953510053 Version: 0x00000000:00000001
User: 509 Group: 509 Size: 16241
File ACL: 0 Directory ACL: 0
Links: 1 Blockcount: 32
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x5a9fbecf:6f990a54 -- Wed Mar 7 12:28:31 2018
atime: 0x5a9fbecf:00000000 -- Wed Mar 7 12:28:31 2018
mtime: 0x5a9f72cf:00000000 -- Wed Mar 7 07:04:15 2018
crtime: 0x5a9fbecf:6f990a54 -- Wed Mar 7 12:28:31 2018
Size of extra inode fields: 28
EXTENTS:
(0-3): 516503300-516503303
[root@s1 XYZ]# lsof ./px/cd/78/cd78eholuefekgpz6c0snn5oaayypnloqxgfivszd5d.mxp
[root@s1 XYZ]#
答え1
ctimeとcrtimeは変調できず、atimeとmtimeは通常行われているように、ユーザープロセスまたは(またはナノ秒精度)システムコールまたはアーカイブを抽出するutime()
ときutimes()
(ファイルを(以前は通常はそうでした))に保存されたアーカイブファイルです。utimensat()
touch
tar
次の方法で同じ結果が得られます。
touch -t 201803070704.15 newfile
たとえば、crtime と ctime は現在時刻に設定されますが、mtime および atime は指定された時刻に設定されます。
答え2
どのFSを使用しているかを表示する必要があります。
作成時間を取得しようとしています。しかし、あなたはすでに言いました。
私のファイルシステムはファイル作成時間をメタデータとして保存しません。
これが真であれば、いくらでも生成時間を得ることはできません。ファイルシステムがそれを保存しない限り、他のものは保存しません!
タイムスタンプは難しいかもしれませんが、必ずしもそれが意味すると思うことを意味するわけではありません。たとえば、tarまたはzipアーカイブを抽出すると、mtimeフィールドはアーカイブに含まれるタイムスタンプ(過去のある時点)に設定されます。ただし、crtimeはアーカイブを抽出した時間/日付を反映します。
通常のプログラムはcrtimeを変更しないので、mtimeを変更してもcrtimeは変更されません。
そのため、crtimeが正しい場合でも、mtimeはまったく異なる値に設定されることがよくあります。