Mac OSXの組み込みzipコンプレッサーでファイルを圧縮すると、抽出されたzip内に「__MACOSX」というタイトルのフォルダーが作成されます。
このフォルダが作成されないように設定を調整できますか、それともサードパーティの圧縮ツールを購入する必要がありますか?
更新:私は問題を解決するOSX用のフリーウェアアプリを見つけました:「YemuZip」
アップデート2:YemuZipはフリーウェアではなくなりました
Mac OSXの組み込みzipコンプレッサーでファイルを圧縮すると、抽出されたzip内に「__MACOSX」というタイトルのフォルダーが作成されます。
このフォルダが作成されないように設定を調整できますか、それともサードパーティの圧縮ツールを購入する必要がありますか?
更新:私は問題を解決するOSX用のフリーウェアアプリを見つけました:「YemuZip」
アップデート2:YemuZipはフリーウェアではなくなりました
回答:
この問題が発生したとき、コマンドラインから実行しました。
zip file.zip uncompressed
編集、多くの反対投票の後:私はしばらく前にこのオプションを使用していましたが、どこでそれを学んだのかわからないので、より良い説明はできません。クリスジョンソンの答えは正しいですが、私は削除しません。1つのコメントが言うように、OPがそれらをファイルなしで圧縮するので、圧縮ファイルからそれらを削除するのではなく、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
(2番目のパラメーターはオプション)
ターミナルで、圧縮するフォルダ内:
zip -r -X Archive.zip *
-Xの意味:「_MACOSX」や「._Filename」などの非表示のMacリソースファイルと.dsストアファイルを除外します
注:現在のフォルダと後続のフォルダツリーでのみ機能し、*
ワイルドカードが必要です。
-X
機能しません。.DS_Storeファイルを除外しません。アプリケーションで機能する理由*
は、「。」で始まらないワイルドカード一致ファイルであるzipのみを使用しているためです。ドットファイルを含むディレクトリで試してみてください。そうすれば、含まれていることがわかります。
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アーカイブのファイルそれがされていない場合ので、通常は、単一のディレクトリである必要があり、いくつかのアンアーカイビングUtilitesを(のようにunzip
して7z
ではなく、アーカイブユーティリティ、Unarchiver、unar
またはdtrx
)は、アーカイブが抽出されるとファイルが見つかり、ファイルを見つけるのが難しくなります。そのような複数のアーカイブが同時に抽出されると、どのファイルがどのアーカイブに属しているかを区別するのが難しくなります。
アーカイブユーティリティ__MACOSX
は、少なくとも1つのファイルに拡張属性、ファイルフラグ、リソースフォークなどのメタデータが含まれているアーカイブを作成する場合にのみ、ディレクトリを作成します。__MACOSX
ディレクトリは、そのファイル名で開始のAppleDoubleファイルが含まれている._
OS X固有のメタデータを格納するために使用されていることを。のzip
コマンドラインユーティリティの廃棄は、エイリアスファイル内の情報がリソースフォークに格納されているので、このようなタグなどのメタデータは、失われ、そのエイリアスが動作を停止していることも意味拡張属性、ファイルフラグ、およびリソースフォーク、などのメタデータ。
通常、OS X固有のメタデータを破棄できますが、メタデータファイルに含まれるものを確認するには、を使用できますxattr -l
。xattr
リソースフォークとファイルフラグも含まれます。これらは実際には拡張属性として保存されていなくても、拡張属性インターフェイスを介してアクセスできるためです。Archive Utilityとzip
コマンドラインユーティリティの両方がACLを破棄します。
できません。
しかし、あなたができることは、圧縮後にそれらの不要なフォルダを削除することです。コマンドラインzip
は異なる引数を取ります。1つ-d
は、正規表現に基づいてコンテンツを削除するためのものです。したがって、次のように使用できます。
zip -d filename.zip __MACOSX/\*
あなたが意味するかzip
、コマンドラインツールやFinderのcompressコマンドを?
についてzip
は、--data-fork
オプションを試すことができます。--no-extra
それでもうまくいかない場合は、を試してみてください。ただし、uid / gidやファイル時間など、価値のある他のファイルメタデータは無視されているようです。
FinderのCompressコマンドについては、その動作を制御するオプションがないと思います。単純なケースです。
もう1つのツール、およびFinderが実際に内部で使用するツールはditto
です。とともに-c -k
オプション、それはzipアーカイブを作成します。このツールを使用すると、あなたが試すことができ--norsrc
、--noextattr
、--noqtn
、--noacl
および/または単にオフのままに--sequesterRsrc
(manページによると、ために責任があるかもしれない、オプション__MACOSX
のサブディレクトリを)。ただし、おそらく存在しない--sequesterRsrc
ということは、AppleDouble形式を使用することを単に意味します。これは、1つの__MACOSX
ディレクトリの代わりに至る所に._ファイルを作成します。
既存の回答をすべて読んだ後、私にはより良い解決策があります。ワークフローを1回右クリックするだけですべてを実行できます。 NO追加のソフトウェア、NOは、コマンドラインに詰め込むと複雑NOを殻のトリックを。
自動化ワークフロー:
ステップ2:入力をパラメーターとして使用して、Shellコマンドを実行します。以下のコマンドをコピーします。
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