Lab Q_Q-Box →

テック & ツール

MacでZIP圧縮すると .DS_Store が入る理由と削除方法

2026-02-15

Macで作ったZIPをWindows側で開くと、送った覚えのない .DS_Store が見えることがあります。Macでは隠れているので、自分の画面では気づきにくい種類のファイルです。

「いただいたデータの中に、.DS_Store という謎のファイルが入っています。これって怪しいファイルですか?開けません」

.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! では、その順番で処理できます。

共有前の ZIP を毎回手で整えているなら

.DS_Store__MACOSX を、
ドラッグ&ドロップで外してから ZIP を作れます。
共有前の手順をひとつに寄せたいときの、Pon!とZip!

macOS 15+ / 買い切り300円

よくある質問 (FAQ)

Q. .DS_Storeの生成自体を無効化できませんか?

A. ネットワークドライブに関しては以下のコマンドで抑制可能ですが、ローカルフォルダでの完全な無効化は推奨されていません

defaults write com.apple.desktopservices DSDontWriteNetworkStores true

MacのFinder機能(アイコン位置の記憶など)が動作しなくなるため、生成自体は許容し、共有するときだけ消す形になります。

Q. Gitの管理対象になって困っています。

A. プロジェクトのルートにある .gitignore ファイルに .DS_Store を記述してください。既にコミットされてしまった場合は git rm --cached .DS_Store でインデックスから外します。

.DS_Store は送る前に一度見る

.DS_Store はMacにとっては大切な設定ファイルですが、Windowsユーザーにとっては怪しく不要なファイルです。

共有前にフォルダを一度見て、圧縮後にZIPの中身も確認する。この順番なら、見慣れないファイルが残っていないかを自分で確かめられます。

手順を毎回手で回すにせよ別の方法にするにせよ、「見えないから入っていない」と思わず、一度ZIPの中身まで見てから送るほうが確実です。