Mac OSX에서 내장 된 zip 압축기로 파일을 압축하면 압축이 풀린 zip에 "__MACOSX"라는 추가 폴더가 생성됩니다.
이 폴더가 생성되지 않도록 설정을 조정할 수 있습니까? 아니면 타사 압축 도구를 구입해야합니까?
업데이트 : 방금 내 문제를 해결하는 OSX 용 프리웨어 응용 프로그램을 찾았습니다. " YemuZip "
업데이트 2 : YemuZip은 더 이상 프리웨어가 아닙니다.
Mac OSX에서 내장 된 zip 압축기로 파일을 압축하면 압축이 풀린 zip에 "__MACOSX"라는 추가 폴더가 생성됩니다.
이 폴더가 생성되지 않도록 설정을 조정할 수 있습니까? 아니면 타사 압축 도구를 구입해야합니까?
업데이트 : 방금 내 문제를 해결하는 OSX 용 프리웨어 응용 프로그램을 찾았습니다. " YemuZip "
업데이트 2 : YemuZip은 더 이상 프리웨어가 아닙니다.
답변:
이 문제가 발생했을 때 명령 줄에서 수행했습니다.
zip file.zip uncompressed
많은 downvotes 후 EDIT : 나는 얼마 전에이 옵션을 사용하고 있었고 어디서 배웠는지 알지 못하므로 더 나은 설명을 줄 수 없습니다. 크리스 존슨의 대답 은 정확하지만 삭제하지는 않습니다. 한 의견에서 알 수 있듯이 압축 파일에서 파일을 제거하는 대신 파일없이 압축하므로 OP가 요구하는 내용이 더 정확합니다. 나도 기억하기 쉽다는 것을 알았습니다.
zip
타사 앱인 을 사용하여 파일을 생성하면 __MACOSX / 디렉토리가 처음에 생성되지 않습니다.
zip -rX file.zip uncompressed_directory
에 의해 사실 후에 고칠 수 있습니다 zip -d filename.zip __MACOSX/\*
zip -d filename.zip \*/.DS_Store
find ~ -type f -name '*.zip' -exec zip -d '{}' __MACOSX/\* \;
. 시작 지점을 대신 사용하십시오 ~
.
cleanzip(){ zip -d $1 $2 __MACOSX/\* \*/.DS_Store; }
. 사용법 : cleanzip file.zip
또는 cleanzip file.zip MORE_JUNK_FILES
(두 번째 매개 변수는 선택 사항 임)
터미널에서 압축하려는 폴더 내부 :
zip -r -X Archive.zip *
-X의 의미 : "_MACOSX"또는 "._Filename"과 같은 보이지 않는 Mac 리소스 파일과 .ds 저장 파일을 제외합니다.
참고 : 폴더 및 후속 폴더 트리에서만 작동하며 *
와일드 카드 가 있어야합니다 .
-X
하지 않습니다. .DS_Store 파일을 제외하지 않습니다. 응용 프로그램에서 작동하는 이유 *
는 "."으로 시작하지 않는 와일드 카드 일치 파일 인 압축 만하기 때문 입니다. 도트 파일이 포함 된 디렉토리에서 시도하면 포함 된 것을 볼 수 있습니다.
zip -r -X Archive.zip myfolder
. 폴더에서 작업 하면 여전히 .DS_Store 파일이 포함 된 zip 파일이 생성됩니다.
이 명령은 나를 위해 그것을했다 :
zip -r Target.zip Source -x "*.DS_Store"
Target.zip
작성할 zip 파일입니다. Source
압축 할 소스 파일 / 폴더입니다. 그리고 _x
매개 변수는 포함하지 않을 파일 / 폴더를 지정합니다. 어떤 이유로 든 위의 방법으로 작동하지 않으면 대신 시도하십시오.
zip -r Target.zip Source -x "*.DS_Store" -x "__MACOSX"
zip
명령 행 유틸리티는 생성하지 __MACOSX
디렉토리를, 그래서 첫 번째 조각은 작업을 수행하고, -x "__MACOSX"
일부는 필요하지 않습니다.
이 Automator Shell Script를 사용하여 문제를 해결하고 있습니다. 상황에 맞는 메뉴 항목으로 표시됩니다 (Finder에 표시되는 파일을 마우스 오른쪽 버튼으로 클릭).
while read -r p; do
zip -d "$p" __MACOSX/\* || true
zip -d "$p" \*/.DS_Store || true
done
zip -d "$p" __MACOSX/\* || true
당신의 대답에.
zip -r "$destFileName.zip" "$srcFileName" -x "*/\__MACOSX" -x "*/\.*"
-x "*/\__MACOSX"
: 언급 한대로 __MACOSX를 무시하십시오.-x "*/\.*"
: .DS_Store와 같은 숨겨진 파일은 무시하십시오.또한 Automator Service를 구축하여 Finder에서 쉽게 사용할 수 있습니다. 필요한 경우 자세한 내용을 보려면 아래 링크를 확인하십시오.
zip
명령 행 유틸리티는 생성 결코 __MACOSX
그냥이 같은 명령을 실행할 수 있도록, 디렉토리 :
zip directory.zip -x \*.DS_Store -r directory
아래 출력 a.zip
에서 zip
명령 줄 유틸리티로 만든 __MACOSX
디렉토리 에는 디렉토리가 없지만 a 2.zip
Finder에서 만든 디렉토리 는 포함되어 있습니다 .
$ touch a
$ xattr -w somekey somevalue a
$ zip a.zip a
adding: a (stored 0%)
$ unzip -l a.zip
Archive: a.zip
Length Date Time Name
-------- ---- ---- ----
0 01-02-16 20:29 a
-------- -------
0 1 file
$ unzip -l a\ 2.zip # I created `a 2.zip` from Finder before this
Archive: a 2.zip
Length Date Time Name
-------- ---- ---- ----
0 01-02-16 20:29 a
0 01-02-16 20:31 __MACOSX/
149 01-02-16 20:29 __MACOSX/._a
-------- -------
149 3 files
-x .DS_Store
.DS_Store
디렉토리 내의 파일 은 제외하지 않지만 제외 합니다 -x \*.DS_Store
.
여러 파일이있는 zip 아카이브의 최상위 레벨 파일은 일반적으로 단일 디렉토리 여야합니다. 그렇지 않은 경우 일부 아카이브 아카이브 유틸리티 ( unzip
및 7z
아카이브 유틸리티, 아카이브 해제 unar
, 또는dtrx
)을위한 포함하는 디렉토리를 생성하지 않는다 아카이브가 추출 될 때 파일이 생성되어 파일을 찾기가 어려워지며, 여러 개의 아카이브가 동시에 추출되는 경우 어떤 파일이 어떤 아카이브에 속하는지 알기가 어려울 수 있습니다.
아카이브 유틸리티 __MACOSX
는 하나 이상의 파일에 확장 된 속성, 파일 플래그 또는 리소스 포크와 같은 메타 데이터가 포함 된 아카이브를 만들 때만 디렉토리를 만듭니다. __MACOSX
디렉토리는 그 파일 이름 시작으로 Appledouble을 파일을 포함 ._
하는 OS X 고유의 메타 데이터를 저장하는 데 사용됩니다. zip
명령 행 유틸리티를 파기는 메타 데이터 등의 별칭 파일의 정보가 리소스 포크에 저장되기 때문에, 메타 데이터 등의 태그 분실, 그 별명이 작동을 멈출 것을 또한 의미 확장 속성, 파일 플래그 및 리소스 포크, 등.
일반적으로 OS X 관련 메타 데이터를 버릴 수 있지만 메타 데이터 파일에 포함 된 내용을 보려면을 사용할 수 있습니다 xattr -l
. xattr
또한 자원 포크 및 파일 플래그도 포함됩니다. 실제로 확장 속성으로 저장되지 않았더라도 확장 속성 인터페이스를 통해 액세스 할 수 있기 때문입니다. 아카이브 유틸리티와 zip
명령 행 유틸리티 는 모두 ACL을 삭제합니다.
당신은 의미합니까 zip
명령 줄 도구 또는 파인더의 압축 명령을?
의 경우 옵션을 zip
사용해 볼 수 --data-fork
있습니다. 그렇지 않으면 --no-extra
uid / gid 및 파일 시간과 같이 가치가있을 수있는 다른 파일 메타 데이터를 무시하는 것처럼 보이지만 시도 할 수 있습니다.
Finder 's Compress 명령의 경우 동작을 제어하는 옵션이 없다고 생각합니다. 간단한 경우입니다.
다른 도구 및 Finder가 실제로 후드에서 사용하는 도구는 ditto
입니다. 으로 -c -k
옵션, 그것은 우편 아카이브를 만듭니다. 이 도구를 사용하면 실험 할 수 --norsrc
, --noextattr
, --noqtn
, --noacl
및 / 또는 단순히 생략 할 --sequesterRsrc
(man 페이지에 따르면, 대한 책임이있을 수 옵션 __MACOSX
하위 디렉토리). 그러나 아마도 부재는 --sequesterRsrc
단순히 AppleDouble 형식을 사용하는 것을 의미합니다. AppleDouble은 하나의 __MACOSX
디렉토리 대신 ._ 파일을 생성합니다 .
기존의 모든 답변을 읽은 후에 더 나은 솔루션을 제공합니다. 한 번의 클릭으로 워크 플로를 통해 모든 작업을 수행 할 수 있습니다. NO 추가 소프트웨어는 어떠한 명령 줄 거즈와 복잡하지 NO의 쉘 트릭을.
자동화 작업 과정 :
2 단계 : 입력을 매개 변수로 사용하여 셸 명령 실행 아래 명령을 복사하십시오.
zip -d "$@" "__MACOSX/*" || true
zip -d "$@" "*/.DS_Store" || true
저장하면 완료됩니다! 폴더 또는 대량의 파일을 마우스 오른쪽 버튼으로 클릭하고 서비스 메뉴에서 워크 플로를 선택하십시오. 메타 데이터가없는 아카이브가 함께 생성됩니다.
이것은 명령으로 __MACOSX
파일을 압축 할 때 디렉토리를 피하는 방법입니다 tar
.
$ cd dir-you-want-to-archive
$ find . | xargs xattr -l # <- list all files with special xattr attributes
...
./conf/clamav: com.apple.quarantine: 0083;5a9018b1;Safari;9DCAFF33-C7F5-4848-9A87-5E061E5E2D55
./conf/global: com.apple.quarantine: 0083;5a9018b1;Safari;9DCAFF33-C7F5-4848-9A87-5E061E5E2D55
./conf/web_server: com.apple.quarantine: 0083;5a9018b1;Safari;9DCAFF33-C7F5-4848-9A87-5E061E5E2D55
먼저 속성을 삭제하십시오.
find . | xargs xattr -d com.apple.quarantine
find . | xargs xattr -l
다시 실행 하고 xattr 속성이있는 파일이 없는지 확인하십시오. 그럼 당신은 갈 수 있습니다 :
tar cjvf file.tar.bz2 dir