ファイルの作成時間を知る必要があります。 stat filename
コマンドを実行しようとしました。しかし、私のfsはファイル作成時間をメタデータとして保存しません。
[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
しかし、私はこれを読んで site そして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]#
Ctimeとcrtimeは改ざんできません。atimeとmtimeは、ユーザープロセスがutime()
またはutimes()
(またはナノ秒の場合はutimensat()
)を使用して任意の値に設定できます。精度)アーカイブを抽出するときにtouch
が通常行うまたはtar
のようなシステムコール(ファイルの変更時間をアーカイブに保存されている時間に設定します(通常は過去) )。
あなたは同じことを達成することができます:
touch -t 201803070704.15 newfile
たとえば、crtimeとctimeは現在の時刻に設定されますが、mtimeとatimeは指定された時刻に設定されます。
使用しているFS)を明記する必要があります。
作成時間を取得しようとしています。しかし、あなたはそれを述べました
私のfsはファイル作成時間をメタデータとして保存しません
それが本当なら、あなたは何をしても作成時間を得ることはできません。ファイルシステムがそれを保存しない場合、他には何も保存されません!
タイムスタンプは非常に扱いにくい場合があり、必ずしもあなたが思っていることを意味するとは限りません。たとえば、tarまたはZipアーカイブを抽出する場合、mtimeフィールドは、アーカイブに含まれていたタイムスタンプ(過去のある時点)に設定されます。ただし、crtimeは、アーカイブを抽出した日時を反映します。
Crtimeは通常のプログラムでは変更されないため、mtimeが変更されても、crtimeは変更されません。
したがって、crtimeが正しい場合でも、mtimeは完全に異なるものに設定されることがよくあります。