파일 시스템 지원

파일 시스템 지원

내가 아는 것은 디렉토리 아래의 파일과 하위 디렉토리를 다르게 정렬하는 것뿐입니다 ls -t.ls -f

  • 파일의 타임스탬프, 수정 시간, 생성 시간의 차이점은 무엇입니까?
  • 명령을 통해 이 정보를 어떻게 얻고 변경할 수 있나요?
  • 사람들은 어떤 근거로 한 파일이 다른 파일보다 "최신"이라고 말합니까?
  • 어떤 정보 변경으로 인해 파일이 변경되지 않습니까?

예를 들어, 나는 누군가가 다음과 같이 쓰는 것을 보았습니다.

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

그런데 여기서 파일 형식은 pdf, jpg, htm, txt 등이 아닌 일반 파일과 simlink만 참조합니까?

답변1

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

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

이 정보를 표시하려면 다음을 사용할 수 있습니다.stat이것은 coreutils의 일부입니다.

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

이 정보는 파일 시스템 및 설치 옵션에 따라 크게 달라집니다. 예를 들어, noatime이 옵션을 사용하여 파티션을 마운트하면 액세스 정보가 기록되지 않습니다.

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

touch그리고 cp -u("원본 파일이 대상 파일보다 최신이거나 대상 파일이 누락된 경우에만 복사합니다.") 또는 빈 마크업 파일을 만드는 데 사용됩니다.

답변2

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
[...]

최신 stat 함수에 출생 필드가 있지만 출력이 잘못된 것 같습니다. debugfs를 통해 정보를 얻을 수 있습니다(crtime, 왜냐하면 저는 ext4 파일 시스템을 사용하고 있기 때문입니다).

통계적 지원

있다커널 4.11부터 새로운 statx 시스템 호출, 더 나은 지원 외에도2038년btime또는 출생 시간(생성 시간) 액세스 와 같은 몇 가지 추가 기능도 제공하는 네트워크 파일 시스템입니다 . ext4에 대한 지원은 동일한 커널 버전 4.11에 있어야 합니다.

이후 커널 버전에서 이 새로운 시스템 호출을 지원하기 위해 패치가 추가되었습니다(예: 커널 4.13의 BTRFS 및 F2FS, 4.14의 SMB3, 4.15의 GFS2, 4.16의 NFS 등).

시스템 호출이 래핑됩니다.GNU C 라이브러리 2.28 이상.

관련 정보