.DS_Store とは?消してよいのか、何が記録されているのか

.DS_Store は、Mac の Finder がフォルダ1つ分の表示設定 —— アイコンの位置、表示形式、ウィンドウの大きさ —— を保存したファイルです。自動で作られ、消して構いませんが、Finder がそのフォルダで見たファイル名を全部記録しているため、Mac の外に出たときに問題になります。

.ds_store
このサイトで開く

なぜ開けないのか

  • 開くためのファイルではありません。Finder が黙って読み書きするだけで、.DS_Store を文書として開くアプリは無く、Windows では変な名前の不明なファイルに見えます。
  • テキストではなくバイナリのデータベースです。エディタで開くと、読めないバイトの間にファイル名の断片が見えます。名前は本物で、その周りは Finder の記録を格納した B ツリーです。
  • フォルダに付いてきます。Mac でフォルダをコピーしたり ZIP にしたりすると .DS_Store も一緒に運ばれ、Web サーバーにアップロードしたり Git にコミットしたりすると、他のファイルと一緒に公開されます。

開き方

何が記録されているか見る

  1. 1 Mac なら Finder で Command + Shift + .(ピリオド)を押して隠しファイルを表示します。Windows なら「表示」→「隠しファイル」。ファイル名はちょうど .DS_Store です。
  2. 2 このサイトのビューアにドロップします。記録されているファイル・フォルダ名と、Finder がそれぞれに保存した属性が一覧になります。
  3. 3 ファイルはどこにも送信されません。中身を確かめたいのは「見せたくない名前が入っているかもしれない」からで、それを外に送るのは筋が通らないからです。

消す・Git に入れない

  1. 1 削除します。Mac 上では次にフォルダを開いたときに Finder が作り直しますが、それ以外の場所では消えたままです。
  2. 2 Git リポジトリなら、.gitignore に「.DS_Store」を追加し、git rm --cached .DS_Store(入れ子になっているなら -r 付き)を実行してコミット・push します。
  3. 3 Mac 上の全リポジトリで無視するには、git config --global core.excludesfile ~/.gitignore_global を設定し、そのファイルに .DS_Store を書きます。

Mac にネットワークドライブへ書かせない

  1. 1 ターミナルで defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true を実行し、ログアウトして入り直します。以後 Finder はネットワークボリュームに .DS_Store を作りません(ローカルのフォルダには作ります)。
  2. 2 USB ドライブに対しては defaults write com.apple.desktopservices DSDontWriteUSBStores -bool true です。

入っているもの・入っていないもの

ファイル名、アイコンの位置、表示設定、ときに Spotlight コメント、版によってはサイズや日付が入ります。ファイルの中身、パスワード、アカウント情報は入っていません。問題なのは一覧そのもので、Web サーバー上の .DS_Store は「公開するつもりの無かったディレクトリ一覧」です。

Windows の人がしょっちゅう見る理由

Mac の人が共有ドライブで開いたフォルダには、すべてこのファイルができます。Windows 側には無害で削除して構いませんが、Mac 側で上の設定をしない限り、また作られます。

よくある質問

.DS_Store を消しても大丈夫ですか?
大丈夫です。失われるのはそのフォルダの Finder の表示設定だけで、Finder が作り直します。フォルダ内のファイルには影響しません。
.DS_Store にパスワードや個人情報は入っていますか?
認証情報は入っていません。入っているのはファイル名と Finder の設定です。ただしファイル名だけでも機密になり得ます。削除済みのファイルを含めて、そのフォルダに何があったかが分かるからです。
Web サイトに .DS_Store が置かれていました。問題ですか?
情報漏えいです。誰でもそのファイルをダウンロードして、そのディレクトリの全ファイル名 —— どのページからもリンクされていないものを含めて —— を読めます。ファイルを削除し、Web サーバーの設定でこの名前へのアクセスを塞いでください。
Windows で .DS_Store を開けますか?
Windows に標準の手段は無く、テキストエディタでは断片しか見えません。このサイトのビューアならブラウザ内で全部読めます。