웹에 흩어져있는이 네 가지 항목 사이의 관계에 대한 일반적인 혼란이 있다고 생각합니다. 나는 이것을 정리하고 싶었다.
- 있습니까 포크라는 같은 확장 된 속성 ? 그렇지 않은 경우 확장 된 속성은 무엇입니까?
- 는 IS 리소스 포크는 여전히 포크로 또는로 구현 확장 된 속성 ? 다른 방법으로 구현되면 어떻게됩니까?
- 메타 데이터 파일에 저장 (제작자, 수정 날짜 …) 가 언급 다른 세 사이의 모든 관계 용어 또는 오버랩된다. 예를 들어 확장 속성 은 파일에 저장된 추가 메타 데이터 쌍 (키 + 값) 입니다.
이 세 가지 질문, 특히 세 가지 질문과 관련하여이 네 가지가 서로 어떻게 관련되어 있는지 명확히 할 수있는 답변은 크게 감사하겠습니다.
답변
이러한 개념들 간의 관계가 복잡하고 시간이 지남에 따라 변화했다는 사실 때문에 혼란이 발생합니다. 현재 시스템에서 명명 된 포크와 확장 된 속성의 차이는 대부분 학문적입니다.
확장 된 속성의 경우 실제 데이터는 속성 데이터 레코드에 저장됩니다.
포크의 경우, 데이터가 포함 된 디스크 할당 블록 목록이 저장됩니다. 리소스 포크는 여전히 포크입니다.
기본 파일 시스템 메타 데이터는 속성 및 명명 된 포크 참조와 상관없이 파일 시스템 레코드 자체의 전용 요소에 저장됩니다.
답변
나는 이것에 대한 전문가는 아니지만, 무슨 일이 일어나고 있는지 이해하려고 조금 읽었습니다.
“혼란은 다음과 같은 사실에서 비롯됩니다.
- 이 개념들 간의 관계는 복잡하고
- 시간이 지남에 따라 바뀌었고
- 애플은 프로그램 레벨 API를 모두 구현했으며 ls 또는 cp와 같은 툴은 개념 간의 많은 차이점을 숨길 수있는 방법이다. “
AIUI, HFS + 카탈로그 파일에는 카탈로그 파일 레코드가 포함되어 있습니다. 카탈로그 파일 레코드에는 작성 날짜, 액세스 날짜 등과 같은 파일에 대한 일반적인 정보가 들어 있습니다. 카탈로그 파일 레코드에는 데이터 포크 및 리소스 포크의 위치와 크기에 대한 정보를 제공하는 두 가지 구조도 포함됩니다.
AIUI, HFS +에는 HFS에 해당 구조가없는 HFS Plus의 새로운 B- 트리 인 속성 파일 [위키 백과 HFS +에서 복사]도 있습니다. 속성 파일은 3 가지 다른 유형의 4KB 레코드를 저장할 수 있습니다. 인라인 데이터 속성 레코드, 포크 데이터 속성 레코드 및 확장 속성 레코드 인라인 데이터 속성 레코드는 레코드 자체에 들어갈 수있는 작은 속성을 저장합니다 포크 데이터 속성 레코드에는 더 큰 속성을 보유 할 수있는 최대 8 개의 범위에 대한 참조가 포함됩니다. 8 개의 익스텐트 레코드가 이미 사용 된 경우 포크 데이터 속성 레코드를 확장하는 데 사용됩니다. “
AIUI, 속성 파일 (인라인, 포크 데이터 또는 확장 속성)에 저장되거나 참조되는 데이터는 확장 속성이라고합니다.
그것들은 데이터 구조이므로 어떻게 사용됩니까?
운영 체제의 초기 버전 인 AIUI ( John Siracusa 가이 영역에서 일부 큰 변화가 있음을 나타내는 것으로 보이는 10.4 Tiger 이전 버전 )는 카탈로그 파일에서 데이터 포크와 리소스 포크를 가리 켰습니다.
AIUI, 10.4 Tiger에 도달하면 속성 파일이 모든 종류의 데이터를 저장하는 데 널리 사용됩니다.
10.4 이후에 모든 자원 포크가 속성 파일에서 지적 될 수 있습니다 (그러나 모르겠습니다). 즉, 첫 번째 질문에 대한 답변으로, 이름 지정된 포크는 자원 포크가 아니며 자원 포크가 카탈로그 파일에서 참조되지 않는 한 확장 된 속성이라고 말합니다.
구현 방식을 아는 문제는 이전 버전과의 호환성을 유지하고 특히 다른 버전에서 한 버전의 Mac OS로 작성된 파일 시스템에 대한 액세스를 지원하기 위해 서로 다른 것들과 혼합이 투명하게 지원되어야한다는 것입니다.
데이터가 실제로 유지되는 일반적인 터미널 명령 줄 도구로는 알 수 없습니다.
따라서 액세스 rsrc
하려면 카탈로그 파일의 Resource Fork에 액세스하고 있다고 제안 할 수 있습니다.
$ ls -l Icon^M/rsrc
-rwxr-xr-x 1 root admin 486 23 Jul 2004 Icon?/rsrc
그러나 구문은 Icon^M
디렉토리 아래의 파일처럼 보이지만 실제로는 그렇지 않습니다.
$ ls -lR Icon^M
-rwxr-xr-x@ 1 root admin 0 23 Jul 2004 Icon?
Apple은 Resource Forks에 대한 특별한 사례를 구현했습니다.
대신에 우리는
$ ls -l@
-rwxr-xr-x@ 1 root admin 0 23 Jul 2004 Icon?
com.apple.FinderInfo 32
com.apple.ResourceFork 486
이는 속성 파일에 액세스하고 있음을 나타냅니다. 그러나 다시 구현 ls
하면 Resource Forks에 특별한 경우가있을 수 있습니다.
John Siracusa는 여기서 ACL 목록이 ‘확장 속성’으로 저장되지만 특별히 마스크되어 있으므로에 표시되지 않음을 지적 xattr
합니다. xattr의 구현에는 특별한 경우 처리가 있습니다.
(이 특별한 경우 처리는 도구 코드 또는 도구가 액세스하는 기본 API 코드 일 수 있습니다.)
GregW, 만약 당신이 이것을 본다면, 내가 올바른 길을 따라 왔는지 아니면 절망적으로 혼란스러워하는지에 대해 더 전문적인 의견을 얻는 것이 좋을 것입니다.