파일이 언제 생성되었는지 알아야 합니다. 이 명령을 실행하려고 합니다 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은 완전히 다른 값으로 설정되는 경우가 많습니다.