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

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

예를 들어 누군가가 다음과 같이 쓴 것을 보았습니다.

기본적으로 rsync 프로그램은 파일의 크기와 타임 스탬프가 다른지 확인하기 만합니다. 어떤 파일이 더 새로운 지 상관하지 않고 다른 경우 덮어 쓰게됩니다. “–update”플래그를 rsync에 전달하면 소스의 파일보다 더 새로운 파일 인 경우 대상의 파일을 건너 뛸 수 있지만 동일한 유형의 파일 인 경우에만 가능합니다. 예를 들어 소스 파일이 일반 파일이고 대상이 심볼릭 링크 인 경우 타임 스탬프에 관계없이 대상 파일을 덮어 씁니다.

여기에있는 파일 형식은 pdf, jpg, htm, txt 등의 형식이 아닌 일반 파일 및 simlink만을 의미합니까?

댓글

답변

3 가지 종류의 “타임 스탬프”가 있습니다.

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

이 정보를 표시하려면 stat 를 사용할 수 있습니다. coreutils.

stat는 또한 몇 가지 더 장치, inode, 링크 등과 같은 정보.

이러한 종류의 정보는 파일 시스템 및 마운트 옵션에 크게 의존한다는 것을 기억하십시오. 예를 들어 noatime 옵션을 사용하여 파티션을 마운트하면 액세스 정보가 기록되지 않습니다.

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

touchcp -u와 함께 사용하면 편리 할 수 있습니다 ( “소스 파일이 대상 파일보다 최신이거나 대상 파일이없는 경우에만 복사”). 또는 빈 마커 파일 생성을 위해.

댓글

  • 감사합니다! rsync 명령의 경우 "에서는 ' 어떤 파일이 최신인지 상관하지 않습니다 ", 어떤 종류의 타임 스탬프가 " 최신 "을 의미합니다. 또한, 참고로 rsync가 신경 쓰는 파일 유형은 pdf, jpg, htm, txt 등과 같은 유형이 아닌 일반 파일 및 simlink만을 의미합니까?
  • 일반적으로 시간을 참조하십시오. 파일은 " 수정 된 " 타임 스탬프입니다. 예를 들어 ls -l에서 볼 수 있습니다. 그리고 파일 유형은 파일 대 심볼릭 링크 (또는 디렉토리 또는 장치와 같은 다른 유형의 파일)를 나타냅니다. 파일의 데이터 유형 (텍스트 대 jpeg 등)이 아닙니다 .
  • @Tim 그 맥락에서 it ' s 수정 된 타임 스탬프; rsync는 ' 파일 백업 여부를 결정할 때 소스 파일이 있는지 확인하지 않는다고 ' 기존 백업보다 최근에 수정되었습니다 (백업 프로그램에서 일반적으로 사용됨). 파일의 크기가 다르거 나 수정 시간이 다른지 확인하고 백업 할 경우 백업합니다.
  • 파일이 처음 생성 된시기를 어떻게 알 수 있습니까? 이 정보가 어딘가에 유지되거나 업데이트에서 손실됩니까? 즉, 파일이 존재하는 기간입니다 ..?
  • stat (2) 매뉴얼 페이지는 타임 스탬프가 변경되었습니다.

Answer

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 as I “m on ext4 file system).

statx 지원

Kernel 4.11부터 새로운 statx 시스템 호출 부터 Y2038 또는 네트워크에 대한 더 나은 지원 기능이 추가되었습니다. 또한 btime 또는 출생 시간 (생성 시간) 액세스와 같은 몇 가지 추가 기능을 제공합니다. ext4에 대한 지원은 동일한 커널 릴리스 4.11에 있어야합니다.

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

다가오는 glibc는이 인터페이스를 쿼리하는 함수 호출을 제공 할 것입니다 ( glibc statx 지원에 대한 Phoronix 뉴스 ). 따라서 곧 사용자 공간에서이 기능에 대한 지원을 기대할 수 있습니다.

댓글

  • Windows에서 파일을 생성 할 때 btime이 그대로 유지되는지 아십니까 (Creation 시간)이 mtime처럼 ext4로 이동하고 그 반대의 경우도 마찬가지입니까?
  • @paradroid 죄송합니다. 답을 모르겠습니다. NTFS에서 ext4로 파일을 복사 할 때 Linux에서 의미하는 경우 생성 시간을 지원하는 경우 NTFS 드라이버를 살펴 봐야합니다. Windows에서 의미하는 경우 Windows 용 ext4 드라이버를 찾아야합니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다