OS X 10.6.4에서 tar로 예기치 않은 파일이 나타남 추가 파일을 본 적이 있다고 생각하지 않습니다.

오늘 OS X에서 tar 파일을 포장하고 풀 때 다음과 같은 것을 보았습니다.

tar tzf ../tanuki-3.5.6.tar.gz
./._.
./
./._bin

나는 ‘.’로 시작하는 이러한 추가 파일을 본 적이 있다고 생각하지 않습니다. 전에. 파일을 x로 입력하면 ls -a가 파일을 표시하지 않습니다. 그들은 무엇인가?



답변

그들은 자원 포크입니다. Mac의 파일 시스템은 여러 개의 포크를 지원하며 일부 Mac 파일에는 데이터 포크와 리소스 포크가 있습니다. 대부분의 파일 시스템은 여러 개의 포크를 지원하지 않으므로 도구는 리소스 포크를 접두사가있는 별도의 파일로 분할합니다 ._.


답변

그 파일들 (또는 디렉토리들)이 .tar.gz 파일 내에 패키지 된 것 같습니다. 정상은 아니지만 모든 파일이 tar로 들어갈 수 있습니다.


답변

행동

문제를 명확하게하기 위해 다음 MWE는 현재 상황을 보여줍니다.

cas$ tar --version
bsdtar 2.6.2 - libarchive 2.6.2
cas$ mkdir o
cas$ touch o/a o/b
cas$ tar cv o > /dev/null
a ./._o
a o
a o/._a
a o/a
a o/._b
a o/b

mipadi가 말했듯이 각 파일과 디렉토리에는 동일한 디렉토리의 tar 파일에 ._ 파일이 추가되어 있습니다. 이 tar는 mactar라고 부르며 입력에서 ._로 시작하는 파일을 무시하여 충돌을 방지합니다.

mkdir p && touch p/._a p/._b
cas$ tar cv p p/._b > /dev/null
a ./._p
a p

p /._ a 파일의 존재는 tar에 의해 단순히 무시되며 p /._ b 파일도 CLI 호출에 명시 적으로 포함되어 있더라도 마찬가지입니다. 따라서 충돌이 발생하지 않습니다.

타르 제어

유닉스 배경 지식이 있다면이 행동에 대해 불만이있을 것입니다. mactar에는 예상되는 문서가 없습니다. man 페이지는 일반 Free BSD tar 용이며이 특질은 언급하지 않습니다.

그러나 환경 변수를 설정하여 메타 포크 용 파일 생성을 비활성화 할 수 있습니다 export COPYFILE_DISABLE=true.

역사

타이밍에 대해서는 명확하지 않지만 OSX는 일반 Free BSD tar로 시작한 다음 Apple은 mactar의 조상 인 tar_hfs라는 추가 유틸리티를 배포했으며 Leopard에서는 /usr/bin/tarmactar로 변경되었다고 생각 합니다.


답변