생성 시간 예외

생성 시간 예외

파일이 언제 생성되었는지 알아야 합니다. 이 명령을 실행하려고 합니다 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()touchtar

다음을 통해 동일한 결과를 얻을 수 있습니다.

touch -t 201803070704.15 newfile

예를 들어, crtime 및 ctime은 현재 시간으로 설정되지만 mtime 및 atime은 지정된 시간으로 설정됩니다.

답변2

어떤 FS를 사용하고 있는지 표시해야 합니다.

생성 시간을 얻으려고합니다. 하지만 당신은 이미 말했어요

내 파일 시스템은 파일 생성 시간을 메타데이터로 저장하지 않습니다.

이것이 사실이라면, 아무리 해도 생성 시간을 얻을 수 없습니다. 파일 시스템이 이를 저장하지 않으면 다른 어떤 것도 저장하지 않습니다!

타임스탬프는 까다로울 수 있으며 항상 그것이 의미한다고 생각하는 것을 의미하지는 않습니다. 예를 들어 tar 또는 zip 아카이브를 추출하는 경우 mtime 필드는 아카이브에 포함된 타임스탬프(과거 어느 시점)로 설정됩니다. 그러나 crtime은 아카이브를 추출한 시간/날짜를 반영합니다.

일반 프로그램은 crtime을 수정하지 않으므로 mtime을 변경해도 crtime은 변경되지 않습니다.

따라서 crtime이 정확하더라도 mtime은 완전히 다른 값으로 설정되는 경우가 많습니다.

관련 정보