.DS_Store とは?消してよいのか、何が記録されているのか
.DS_Store は、Mac の Finder がフォルダ1つ分の表示設定 —— アイコンの位置、表示形式、ウィンドウの大きさ —— を保存したファイルです。自動で作られ、消して構いませんが、Finder がそのフォルダで見たファイル名を全部記録しているため、Mac の外に出たときに問題になります。
.ds_store
このサイトで開く なぜ開けないのか
- 開くためのファイルではありません。Finder が黙って読み書きするだけで、.DS_Store を文書として開くアプリは無く、Windows では変な名前の不明なファイルに見えます。
- テキストではなくバイナリのデータベースです。エディタで開くと、読めないバイトの間にファイル名の断片が見えます。名前は本物で、その周りは Finder の記録を格納した B ツリーです。
- フォルダに付いてきます。Mac でフォルダをコピーしたり ZIP にしたりすると .DS_Store も一緒に運ばれ、Web サーバーにアップロードしたり Git にコミットしたりすると、他のファイルと一緒に公開されます。
開き方
何が記録されているか見る
- 1 Mac なら Finder で Command + Shift + .(ピリオド)を押して隠しファイルを表示します。Windows なら「表示」→「隠しファイル」。ファイル名はちょうど .DS_Store です。
- 2 このサイトのビューアにドロップします。記録されているファイル・フォルダ名と、Finder がそれぞれに保存した属性が一覧になります。
- 3 ファイルはどこにも送信されません。中身を確かめたいのは「見せたくない名前が入っているかもしれない」からで、それを外に送るのは筋が通らないからです。
消す・Git に入れない
- 1 削除します。Mac 上では次にフォルダを開いたときに Finder が作り直しますが、それ以外の場所では消えたままです。
- 2 Git リポジトリなら、.gitignore に「.DS_Store」を追加し、git rm --cached .DS_Store(入れ子になっているなら -r 付き)を実行してコミット・push します。
- 3 Mac 上の全リポジトリで無視するには、git config --global core.excludesfile ~/.gitignore_global を設定し、そのファイルに .DS_Store を書きます。
Mac にネットワークドライブへ書かせない
- 1 ターミナルで defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true を実行し、ログアウトして入り直します。以後 Finder はネットワークボリュームに .DS_Store を作りません(ローカルのフォルダには作ります)。
- 2 USB ドライブに対しては defaults write com.apple.desktopservices DSDontWriteUSBStores -bool true です。
入っているもの・入っていないもの
ファイル名、アイコンの位置、表示設定、ときに Spotlight コメント、版によってはサイズや日付が入ります。ファイルの中身、パスワード、アカウント情報は入っていません。問題なのは一覧そのもので、Web サーバー上の .DS_Store は「公開するつもりの無かったディレクトリ一覧」です。
Windows の人がしょっちゅう見る理由
Mac の人が共有ドライブで開いたフォルダには、すべてこのファイルができます。Windows 側には無害で削除して構いませんが、Mac 側で上の設定をしない限り、また作られます。