파일 시스템 타임스탬프 정밀도 결정

파일 시스템 타임스탬프 정밀도 결정

파일 타임스탬프 정밀도는 EXT3의 경우 1초, UFS의 경우 1마이크로초, EXT4의 경우 1나노초로 제한됩니다(적어도 경험상). 파일 시스템 정보에만 기초하여 이를 확인할 수 있는 방법이 있습니까?

내가 생각할 수 있는 대안은 모든 단위 테스트를 몇 초로 제한하거나(지금 내가 하고 있는 작업) touch여러 파일을 제한하고 stat -c %x.

답변1

내가 아는 한, 이 정보는 어디에도 저장되지 않습니다. 파일 시스템으로 인코딩됩니다. 그러나 파일 시스템 목록과 해당 정밀도를 수동으로 생성할 수 있습니다. 나는 case파일 시스템 목록에 대해 파일 시스템 ID를 테스트하기 위해 명령문을 사용할 것입니다 . 정확도가 1초 미만인 예제가 거의 없으므로 기본값을 1로 설정하면 됩니다.

온라인에서 읽은 내용에 따르면 이전 버전의 FAT와 현재 버전의 zip은 2초의 타임스탬프 정밀도를 사용합니다. 하지만 사실을 확인하는 것이 좋습니다.

다음 명령을 사용하여 파일의 파일 시스템 ID를 얻을 수 있습니다.

stat -f --format="%t" $file

답변2

일반적으로 사용할 수 있습니다상태 파일 시스템또는경로 구성, 그러나 해당 정보를 찾는 방법을 지원하지 않는 것 같습니다.

분명히 그런 기능은논의 중미래 POSIX 표준

또한 경로별 타임스탬프 세분성을 반환하기 위해 경로 구성 개선을 위해 일부 aardvark를 보관할 것입니다.

불행하게도 현재로서는 OS별 방식이라 할지라도 이를 수행할 수 있는 깔끔한 방법이 없습니다.


파일 시스템 목록을 작성하고 해당 시스템이 1초 미만의 해상도를 지원하는지 여부를 확인하려는 시도는 위험합니다. 예를 들어, ext4inode가 256바이트인 경우 나노초 해상도가 지원되는 것으로 보이지만 inode가 128바이트인 경우에는 지원되지 않습니다.

포괄적이고 정확한 목록을 작성하는 것은 어렵고 루트 액세스가 필요할 수 있으며 내일 변경될 수 있습니다. 나에게는 그것이 stat몇 번 달리는 것보다 더 어렵게 들린다.

답변3

방금 파일 데이터베이스에 대한 계측을 구현했습니다. 먼저 파일의 타임스탬프를 1234밀리초로 설정한 다음 다시 읽어서 1234(최소 밀리초 정확도)인지 1000(초 정확도)인지 확인했습니다. 지금까지 내가 배운 것은 다음과 같습니다.

  • XFS 및 EXT3: 초정밀도
  • EXT4: 밀리초 정밀도
  • NTFS: 100ns 정밀도(좋아요, 문서에서 얻었습니다...)

답변4

BTRFS(기본 파일 시스템)를 사용하는 Linux Fedora 35의 경우 정밀도는 다음과 같습니다.

stat test1.txt

Access: 2021-11-25 19:48:58.254916839 +0000
Modify: 2021-11-22 09:54:48.694107073 +0000
Change: 2021-11-22 09:54:48.698107163 +0000
 Birth: 2021-11-22 09:54:48.694107073 +0000

하지만 이 값이 얼마나 정확한지는 불분명합니다.

관련 정보