tar 파일에 ._ * 파일 이름을 넣지 않도록 Mac tar 가져 오기 [중복]


46

가능한 중복 :
왜 OS X의 tarball에 ._foo와 같은 파일을 얻습니까?

Mac에서 autoconf 스크립트를 만듭니다. tar가 실행될 때,이 모든 ._ foobar 이름을 아카이브에 넣습니다 .

libewf-20110312/borlandc/builder5/ewfacquire/._ewfacquire.bpf
libewf-20110312/borlandc/builder5/ewfacquire/ewfacquire.bpf
libewf-20110312/borlandc/builder5/ewfacquire/._ewfacquire.bpr
libewf-20110312/borlandc/builder5/ewfacquire/ewfacquire.bpr

이제 Apple HFS 파일 시스템은 파일 속성을 ._ foobar 이름 에 넣어 다른 Mac 시스템에서 복원 할 수 있습니다. 그러나 나는 그들을 원하지 않습니다 --- 그들은 나를 위해 쓰레기입니다. 그들을 억제하는 방법이 있습니까?



2
@geekosaur unix.SE의 사용자가 포기하고 잘못된 답변을 수락했습니다.
Daniel Beck

에 대한 관련 질문 SU 질문도 있습니다 제대로 추출 ._*(예 : 아카이브에서 파일을 .__init__.py) 동일한 솔루션을 사용합니다.
Chris Johnsen

답변:


69

다른 질문에 대한 답변 , 당신은 (를 포함하여 시스템이 제공하는 프로그램의 여러 방지하기 위해 문서화 (?) 환경 변수 COPYFILE_DISABLE 설정할 수 있습니다 타르 에 특별한 의미를 부여에서) ._*아카이브 멤버를. 특히 다음과 같은 사항을 방지 할 수 있습니다.

  • ._*아카이브 구성원에 확장 속성 데이터 (리소스 포크 포함) 저장
    (즉, Mac OS X에서 생성되었지만 다른 시스템에서 사용하기위한 아카이브는 "폴 루트"하지 않음)

  • 같은 이름의 아카이브 멤버에서 확장 된 속성 또는 자원을 추출하려고합니다 ._*
    (즉 ._*, 다른 시스템의 아카이브에서 아카이브 멤버를 잘못 해석하지 마십시오 ).

환경 변수에 사용하는 값은 중요하지 않습니다 (빈 문자열 일 수도 있음). 같은 값 0이며 false기능을 다시 활성화하지 않습니다. 중요한 것은 변수가 설정되어 있는지 여부입니다 (기능을 다시 활성화하려면 변수를 "설정 해제"해야 함).

Bourne 스타일 쉘 ( sh , ksh , bash , zsh 등)의 기능을 활용하여 명령에 추가 환경 변수를 추가 함으로써 개별 명령에이 변수를 사용할 수 있습니다 .

COPYFILE_DISABLE=1 tar cf new.tar …

문제가 자주 발생하지 않으면 쉘의 초기화 파일 중 하나에서이 변수를 설정하고 내보낼 수 있습니다.

# turn off special handling of ._* files in tar, etc.
COPYFILE_DISABLE=1; export COPYFILE_DISABLE

필요한 경우 개별 명령에 대한 변수를 설정 해제 할 수 있습니다.

(unset COPYFILE_DISABLE; tar cf somefile.tar …)

이 Mac OS X 10.6 시스템에서 다음 명령은 모두 COPYFILE_DISABLE에 대해 알고있는 것 같습니다.

  • /usr/bin/tar(에 대한 심볼릭 링크 bsdtar)
  • /usr/bin/bsdtar
  • /usr/bin/gnutar
  • /bin/pax

COPYFILE_DISABLE은 Mac OS X 10.5에서 시작되었습니다. 10.4를 지원해야하는 경우 동일한 방식으로 작동하는 COPY_EXTENDED_ATTRIBUTES_DISABLE이 있습니다.


와. 내가 찾던 것. 감사. 내 autoconf 파일은 훨씬 깨끗합니다.
vy32

0

전문가는 아니지만 약간의 인터넷 검색으로 http://www.ofzenandcomputing.com/zanswers/3422를 발견했습니다.

그리고 이것은 : http://hintsforums.macworld.com/archive/index.php/t-28703.html

두 번째 명령은 스크립트에 통합 될 수있는 것처럼 보입니다. 리소스 포크 파일을 만들 수는 없지만 나중에 자동으로 삭제할 수 있습니다.

편집 : 나는 이것이 나쁜 결과를 초래할 수 있다고 언급 했어야 할 책임이 있습니다.


1
스크립트는 로컬 디스크의 파일에서 리소스 포크를 제거합니다. 일반적으로 특정 파일의 관련 응용 프로그램 변경과 같은 목적을 수행하므로 큰 경고가 발생합니다.
Daniel Beck

스크립트가 도움이되지 않습니다. tar 아카이브가 아닌 디스크에서 파일을 제거합니다. 디스크에 리소스 파일이없는 것으로 나타났습니다. 그러나 그들은 보관소에 보관되고 있습니다. zip 파일과 달리 tar 아카이브에서 파일을 제거 할 수는 없습니다.
vy32

(bah, timeouts) 실제로, tarBSD libarchive기반의 것 (Mac OS X 포함)을 거의 사용하지 않는다면 신뢰할 수는 없지만; GNU tar를 설치하는 것이 좋습니다. (그러나 고통 스럽습니다. 모든 것을 나열한 다음 명령 행에 해당 이름을 전달해야한다고 생각합니다.) 또한 리소스 포크는 기술적으로 디스크에 있지만 HFS +에서는 확장 된 속성에 저장됩니다. ._파일은 확장 된 속성을 지원하지 않는 장소에서 리소스 포크를 저장 OS X의 방법입니다.
geekosaur

0

자신의 컴파일을 시도 tar하거나 가능한 경우 Macports 또는 Fink에서 설치해 보십시오 (Homebrew에없는 경우). "운이 좋으면"OS X 메타 데이터를 모르고 해당 파일을 만드는 것을 건너 뛰어야합니다.


downvote에 대한 설명을 부탁드립니다. 감사합니다.
Daniel Beck
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.