2012-04-16 5 views
3

유닉스가 파일 생성 시간을 저장하지 않는 이유를 anybvody가 알 수 있습니까? 수정 시간, 변경 시간 및 액세스 시간은 저장하지만 생성 시간은 저장하지 않으므로 큰 부담이됩니까? 특별한 이유가 있습니까?유닉스에서의 파일 생성 시간

또는 일부 언어 (프로그래밍 언어)를 사용하고 있으며 일부 시스템 호출을 통해 파일 생성 시간을 얻을 수 있습니까?

+2

소유자 (그룹 모드 등)와 같은 inode-data가 변경되지 않으면 "ctime"필드 (있을 경우)를 사용할 수 있습니다. –

답변

5

필자는 그 정보가 파일 시스템 자체의 제한 사항을 저장하는 inode의 책임이라는 것을 믿습니다. 빠른 인터넷 검색 결과 ext4 파일 시스템이 해당 파일 속성에 대한 저장소를 inode에 추가 한 것으로 나타났습니다.

ext4 timestamps

1

WhiteboardDev으로 노트, 많은 현대 파일 시스템 저장 파일 생성 시간을, 그러나 세부 사항에 액세스하는 방법은 다양하므로 표준이 아니다.

구체적인 이유는 기본적으로 역사적입니다. 실제로 이었습니다. 많은 API가 처음 정의되었을 때 70 년대에 너무 많은 조각의 메타 데이터를 저장하는 부담이있었습니다. 파일을 수정하면

+0

안녕하세요 스티븐은 제작 날짜를 얻는 데 사용 된 여러 가지 방법으로 링크를 해 주실 수 있습니까? 나는 현재 그들에 대한 검색을하고있다. 편집 : 아 @ 그 @ jlliagre 그들을 나열하는 것이 사실입니까? http://stackoverflow.com/a/10172234/1828637 – Noitidart

1

합계가 수정 변경 st_ctime 를 반환합니다 (그것은 ... 현재의 파일 시스템은 항상이 부담 때문에 것을 "마지막 액세스 시간을"업데이트하지 않는 것이 주목할 필요) 또는 소유자는 그 기원 변화의 변경입니다 그래서 모든 베팅은 NT 그 안에 다시 작성, 당신은 완전히 파일을 휴지통으로이 관해서 신뢰할 명령 쉘과 생성 시간 내에 전체의/ 도스가

관련된 메타 데이터를 변경하지 않습니다 내용에 꺼져 유닉스에있는 파일은 원래 생성 시간을 보장하지 않지만 최신 버전의 생성 시간을 보존합니다. 파일 버전을 변경해야하는 경우 버전을 외부 또는 내부에서 명시 적으로 지정해야합니다.

st_ctime 필드는 쓰기 또는 inode 정보 (소유자, 그룹, 링크 수, 모드 등)을 설정하여 변경됩니다.

 struct stat { 
      dev_t  st_dev;  /* ID of device containing file */ 
      ino_t  st_ino;  /* inode number */ 
      mode_t st_mode; /* protection */ 
      nlink_t st_nlink; /* number of hard links */ 
      uid_t  st_uid;  /* user ID of owner */ 
      gid_t  st_gid;  /* group ID of owner */ 
      dev_t  st_rdev; /* device ID (if special file) */ 
      off_t  st_size; /* total size, in bytes */ 
      blksize_t st_blksize; /* blocksize for file system I/O */ 
      blkcnt_t st_blocks; /* number of 512B blocks allocated */ 
      time_t st_atime; /* time of last access */ 
      time_t st_mtime; /* time of last modification */ 
      time_t st_ctime; /* time of last status change */ 
     }; 
+0

Hi Paddy, '마지막 상태 변경 시간'인 'st_ctime'이 출산 시간을 얻을 수있는 확실한 방법이라고 생각하십니까? – Noitidart

2

생성 시간을 저장하지 않는 주된 이유 유닉스는 파일의 생성 날짜로 설정해야하는지의 표준 정의가 없기 때문에이 정보가 논란이다.

사람들이 데이터를 만들 때 (예 : JPEG 사진을 촬영 한 경우)이 생성 시간을 나타내므로 파일을 복사하거나 백업에서 복원 할 때 보존해야하는 사람들이 있습니다. 다른 한편으로, 어떤 사람들은 파일 시스템 객체 (예 : inode)가 생성되는 시간이기 때문에이 생성 시간을 선호합니다.

전자는 완료되면 보통 파일 내부에 나타납니다 (예 : EXIF).

  • UFS2/st_birthtime
  • ZFS/crtime
  • EXT4/crtime
  • btrfs를을/OTIME
  • HFS +/: 후자

    최근 파일 시스템이 제공하는 무엇인가?

참고이 생성 시간을 저장하는 데 사용되는 필드의 이름을 지정하는 데 동의하지 않습니다.

+0

안녕하세요 jilliagre 공유에 대한 감사합니다! 이 게시물 이후 2 년이 지났습니다. HFS +에 대한 방법을 알고 있고 배웠던 다른 파일 시스템이 있다면 새로운 정보로 업데이트 할 수 있을지 궁금합니다. 고맙습니다!! – Noitidart