답변:
OS X의 tar는 AppleDouble 형식을 사용하여 확장 된 속성 및 ACL을 저장합니다.
$ touch file1 file2 file3
$ xattr -w key value file1
$ chmod +a 'admin allow delete' file2
$ ls -le@ *
-rw-r--r--@ 1 lauri staff 0 May 25 07:09 file1
key 5
-rw-r--r--+ 1 lauri staff 0 May 25 07:09 file2
0: group:admin allow delete
-rw-r--r-- 1 lauri staff 0 May 25 07:09 file3
$ tar -cf 1.tar *
$ tar -tf 1.tar
./._file1
file1
./._file2
file2
file3
OS X의 tar는 또한 ._ 멤버를 기본 형식으로 다시 변환하는 방법을 알고 있지만 일반적으로 다른 플랫폼에서 아카이브를 추출 할 때 ._ 파일이 유지됩니다. COPYFILE_DISABLE을 일부 값으로 설정하여 메타 데이터를 포함하지 않도록 tar에 지시 할 수 있습니다.
$ COPYFILE_DISABLE=1 tar -cf 2.tar file*
$ tar -tf 2.tar
file1
file2
file3
man copyfile
ls -l@
확장 된 속성의 키와 크기를 표시하고 ls -le
ACL을 인쇄합니다xattr -l
확장 된 속성의 키와 값을 나열합니다.xattr -c
모든 확장 된 속성을 지 웁니다 (-d는 단독으로 사용할 수 없습니다)chmod -N
ACL을 삭제합니다확장 된 속성으로 저장된 정보 :
env COPYFILE_DISABLE tar -cf archive.tar my_folder/
.
cat
또는 type
적어도, 안에 뭐가 볼 수 있습니다. 그리고 일반적으로 거기에 수동으로 입력 한 간단한 텍스트입니다. 나는 백업을 위해 그것을 버리지 않을 것이지만, 당신이 무언가를 크로스 플랫폼으로 배포하고 싶거나 특별히 실수로 거기에 있다면 그것을 배포하는 것은 쓰레기 일 수 있습니다. 그것들을 남기는 옵션을 말하는 것만으로도 꽤 유효합니다.
현재 bsdtar 3.0.3 - libarchive 3.0.3
(아마도 이전)에 대한 새로운 옵션이있다 bsdtar
라고 명령 --disable-copyfile
의 생성 억제 ._
파일을.
# on Mac OS X
# /usr/bin/tar -> bsdtar
ls -l /usr/bin/tar
# from man bsdtar
--disable-copyfile
Mac OS X specific. Disable the use of copyfile(3).
bsdtar 2.8.3 - libarchive 2.8.3
의 10.7.5
는 --disable-copyfile
그럼에도 불구하고 문서화하지만 사용할 수 없습니다.
._
다른 답변에서 언급 한 파일은 리소스 포크입니다. 그러나 다음을 사용할 때 제거하는 더 좋은 방법이 있습니다 tar
.
export COPYFILE_DISABLE=true
tar cvf foo.tar foo
dot_clean
이러한 파일을 정리 하는 유틸리티 도 있습니다 (일반적으로 외부 저장소에 사용되는 것 같습니다).
다음은 해당 파일을 제거하기위한 Python 스크립트입니다. 인기있는 모든 OS에서 작동합니다.
철저히 테스트 하지 않았 으므로 자신의 책임하에 사용하십시오!
import os
import os.path
def dot_clean(folder):
files = os.listdir(folder)
for file in files:
full_name = folder + "/" + file
if os.path.isdir(full_name):
dot_clean(full_name)
elif file.startswith("._"):
os.remove(full_name)
dot_clean('.')
마침표 문자 "."는 Mac 플랫폼에서 숨겨진 파일 표시기로 사용됩니다. Windows에서는 "$"문자입니다. 어쨌든 ._foo 파일에는 OS X 관련 정보가 포함되어 있으므로 삭제하지 않는 것이 좋습니다. 다른 시스템에서는이를 무시해야합니다. 그렇지 않으면 여기에서 누군가 "."로 시작하는 파일과 폴더를 숨기는 스크립트를 제공 할 수 있습니다.