テック & ツール
MacでZIP圧縮すると .DS_Store が入る理由と削除方法
Macで作ったZIPをWindows側で開くと、送った覚えのない .DS_Store が見えることがあります。Macでは隠れているので、自分の画面では気づきにくい種類のファイルです。
.DS_Store は不正なファイルではありません。Finderがフォルダの見え方を覚えるために作る、Mac側の設定ファイルです。
ただ、共有相手にとって必要なファイルでもありません。とくにWindows側では「何のために入っているのか分からないファイル」として見えてしまいます。
ここでは、なぜ入るのか、手で消すならどこを見るのか、ZIPを渡す前にどこで止まるのかを順に見ます。
.DS_Store の正体とは?
.DS_Store(Desktop Services Store)は、macOSのFinderが自動的に生成する隠しファイルです。
このファイルには、フォルダごとの表示設定が保存されています。
- アイコンの並び順
- ウィンドウのサイズ
- 背景の設定
Macを使っているときは、同じフォルダを開いたときに前回の並びや表示を戻せますが、隠しファイルなので普段は見えません。
しかし、Windowsなどの他のOSでは隠しファイルとして扱われないことがあり、ZIPを解凍した瞬間に表に出てきます。
共有前に手で処理する方法
自分で確認しながら進めるなら、圧縮前に不要ファイルを消し、圧縮後にZIPの中身を見る流れのほうが追いやすいです。
zip コマンドで除外する
圧縮時に .DS_Store を除外し、余計な属性も持ち込まないようにするなら次の形が使えます。
zip -r -X output.zip target_folder -x "*.DS_Store" -r: 再帰的にディレクトリを圧縮-X: リソースフォーク(__MACOSXなど)を除外-x "*.DS_Store": .DS_Storeファイルを除外
dot_clean は何をするか
よく dot_clean が紹介されますが、これは主に ._ ファイルの整理に使うコマンドです。.DS_Store を消すことが主目的ではありません。
dot_clean -m target_folder ._ファイル名 は減らせますが、.DS_Store 自体はFinderの操作で再生成されることがあります。._ と .DS_Store は別々に見たほうが追いやすいです。
find で消す
圧縮前にフォルダの中から .DS_Store をまとめて消すなら、find のほうが直接的です。
find . -name ".DS_Store" -delete ※誤って必要なファイルを消さないよう、実行ディレクトリには十分注意してください。
ZIP の中身を確認する
圧縮後のZIPの中身をリスト表示して確認します。
zipinfo output.zip | grep .DS_Store 何も表示されなければ成功です。
毎回確認するなら見る場所はここ
手作業で進めるときは、少なくとも次の3点を見ておくと見落としが出にくくなります。
- 圧縮前のフォルダに
.DS_Storeが残っていないか zip -r -Xで余計な属性を持ち込んでいないか- できあがったZIPの中に、想定外のファイル名が残っていないか
毎回手でやるのが面倒なら
圧縮前の除外からZIP作成まで、毎回同じ流れで処理したいなら、同じ操作を打ち直さずに済む形にしておくと、前処理からそのまま ZIP を作れます。Pon!とZip! では、その順番で処理できます。
よくある質問 (FAQ)
- Q. .DS_Storeの生成自体を無効化できませんか?
-
A. ネットワークドライブに関しては以下のコマンドで抑制可能ですが、ローカルフォルダでの完全な無効化は推奨されていません。
defaults write com.apple.desktopservices DSDontWriteNetworkStores trueMacのFinder機能(アイコン位置の記憶など)が動作しなくなるため、生成自体は許容し、共有するときだけ消す形になります。
- Q. Gitの管理対象になって困っています。
-
A. プロジェクトのルートにある
.gitignoreファイルに.DS_Storeを記述してください。既にコミットされてしまった場合はgit rm --cached .DS_Storeでインデックスから外します。
.DS_Store は送る前に一度見る
.DS_Store はMacにとっては大切な設定ファイルですが、Windowsユーザーにとっては怪しく不要なファイルです。
共有前にフォルダを一度見て、圧縮後にZIPの中身も確認する。この順番なら、見慣れないファイルが残っていないかを自分で確かめられます。
手順を毎回手で回すにせよ別の方法にするにせよ、「見えないから入っていない」と思わず、一度ZIPの中身まで見てから送るほうが確実です。