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.