it-swarm-ko.tech

타임 스탬프, 수정 시간 및 파일 생성 시간

나는 단지 ls -tls -f 디렉토리 아래에 파일과 하위 디렉토리를 다르게 정렬합니다.

  • 타임 스탬프, 수정 시간 및 파일 생성 시간의 차이점은 무엇입니까?
  • 명령으로 이러한 종류의 정보를 얻고 변경하는 방법?
  • 사람들은 어떤 종류의 정보가 파일이 다른 파일보다 "최신"이라고 말합니까?
  • 어떤 종류의 정보 변경으로 인해 파일이 달라지지 않습니까?

예를 들어, 나는 누군가가 쓴 것을 보았다 :

기본적으로 rsync 프로그램은 파일 크기와 타임 스탬프가 다른지 확인합니다. 어떤 파일이 최신인지 상관하지 않습니다. 파일이 다르면 덮어 씁니다. '--update'플래그를 rsync에 전달하면 소스의 파일보다 최신이지만 동일한 유형의 파일 인 경우에만 대상의 파일을 건너 뜁니다. 즉, 예를 들어 소스 파일이 일반 파일이고 대상이 심볼릭 링크 인 경우 타임 스탬프에 관계없이 대상 파일을 덮어 씁니다.

참고로 여기의 파일 형식은 일반 파일과 simlink 만 의미하며 pdf, jpg, htm, txt 등과 같은 형식은 아닙니까?

108
Tim

"타임 스탬프"에는 3 가지 종류가 있습니다.

  • 액세스-파일을 마지막으로 읽은 시간
  • 수정-파일을 마지막으로 수정 한 시간 (콘텐츠가 수정 된 시간)
  • 변경-파일의 메타 데이터가 마지막으로 변경된 시간 (예 : 권한)

이 정보를 표시하려면 coreutils의 일부인 stat 를 사용하십시오.

stat는 장치, inode, 링크 등과 같은 추가 정보도 표시합니다.

이러한 종류의 정보는 파일 시스템 및 마운트 옵션에 따라 크게 달라집니다. 예를 들어 noatime 옵션으로 파티션을 마운트하면 액세스 정보가 기록되지 않습니다.

타임 스탬프를 변경하는 유틸리티는 touch입니다. 변경할 타임 스탬프 (예 : 액세스 시간의 경우 -a, 수정 시간의 경우 -m)를 결정하고 지정된 새 타임 스탬프의 구문 분석에 영향을주는 몇 가지 인수가 있습니다. 보다 man touch 자세한 내용은.

touchcp -u ( "SOURCE 파일이 대상 파일보다 최신이거나 대상 파일이 누락 된 경우") 또는 비어있는 마커를 만들 때만 복사 파일.

146
echox

Echox의 대답은 유효하지만 파일 작성 시간에 관한 정보를 추가하고 싶습니다.

파일 시스템 지원

일부 파일 시스템은 생성 시간 (또는 출생 시간)과 관련하여 inode에서 추가 항목을 지원합니다. ext4가이 기능을 지원함JFS 및 BTRFS 임을 알고 있습니다.

그러나 대부분의 도구와 API는 아직이 추가 정보를 읽도록 업데이트되지 않았습니다. 그래서 심지어 거기에있을 수는 있지만 액세스 할 수 없습니다.

예를 들어 Ubuntu 12.04 LTS에서 오늘 만든 파일에 대해 다음을 얻습니다.

$ echo Just another test > /tmp/mytest
$ sleep 3
$ touch /tmp/mytest
$ sleep 2
$ cat /tmp/mytest > /dev/null
$ stat /tmp/mytest 
[...]
Access: 2012-06-05 13:33:44.279774711 +0200
Modify: 2012-06-05 13:33:34.611893317 +0200
Change: 2012-06-05 13:33:34.611893317 +0200
 Birth: -
$ Sudo debugfs -R 'stat /tmp/mytest' /dev/sda1
[...]
 ctime: 0x4fcdee8e:91e30114 -- Tue Jun  5 13:33:34 2012
 atime: 0x4fcdee98:42b417dc -- Tue Jun  5 13:33:44 2012
 mtime: 0x4fcdee8e:91e30114 -- Tue Jun  5 13:33:34 2012
crtime: 0x4fcdee46:01258f1c -- Tue Jun  5 13:32:22 2012
[...]

출력이 올바르지 않은 것처럼 보이지만 최신 통계 기능에 출생 필드가 있음을 알 수 있습니다. 그리고 debugfs를 통해 정보를 얻을 수 있습니다 (ext4 파일 시스템을 사용하면서 crtime).

스탁스 지원

Y2038 또는 네트워크 파일 시스템의 향상된 지원 외에도 커널 4.11부터 새로운 statx 시스템 호출 가 있으므로 btime 또는 출생 시간 ( 생성 시간) 액세스. ext4에 대한 지원은 동일한 커널 릴리스 4.11에 있어야합니다.

이후 커널 릴리스에서이 새로운 syscall에 대한 지원을 추가하기위한 패치가 있습니다. 커널 4.13의 BTRFS 및 F2FS, 4.14의 SMB3, 4.15의 GFS2, 4.16의 NFS 등.

앞으로 나올 glibc는이 인터페이스를 쿼리하기위한 함수 호출을 제공 할 것입니다 ( glibc statx 지원에 대한 포로 닉스 뉴스 참조). 따라서 사용자 공간에서이 기능을 곧 지원할 수 있습니다.

38
Huygens