WEBの開発を行っている時に、会社内では開発員が複数いる場合、共有のサーバーを立ち上げる場合が多いと思いますが、その中にMacでアクセスした時に勝手に作成される「.DS_Store」というファイルが大量に作られている事が気になってました。
「.DS_Store」ファイルについて
「Desktop Services Store」の略だそうです。
基本的には、windowsの「Thumbs.db」や「windows.ini」と同じで、OS、が利用するそのフォルダ内の情報を格納する隠しファイルです。
開発員の人は、「隠しファイルを表示」設定にしている人が多いので、こういった勝手に作られる系のファイルは目に入ってきます。
一番マズいのは、本番サーバーにディレクトリをアップした場合、FTPソフトを使ってアップすると、隠しファイルも同時にアップされてしまいます。
だいたいのFTPソフトの場合、表示設定をしていなくても、隠しファイルが見えるようになるので、ゴミファイルがアップされる事になってしまいます。
アバウトなWEBサイトであれば問題ないと思いますが、厳密にファイル管理を行っている場合はよろしくないでしょうね。
「.DS_Store」ファイルを作成されないようにする
これは非常に簡単で、「ターミナル」を開き、以下のコマンドで「.DS_Store」ファイルが作られない設定に変更できます。
※これから下の情報は、自己責任でお願いします。OSバージョンやモジュール、ソフトウェアのバージョンが変わった場合に不具合がでるかもしれないので、バックアップを取った上で操作することをオススメします。
$ defaults write com.apple.desktopservices DSDontWriteNetworkStores true
# Finderの再起動
$ killall Finder
※finderの再起動はコンピュータの「再起動」でもいいです。
ちなみに、元に戻す(デフォルト状態)には、以下のコマンドで設定できます。
$ defaults write com.apple.desktopservices DSDontWriteNetworkStores false
# Finderの再起動
$ killall Finder
本家ページでも説明があります。
https://support.apple.com/ja-jp/HT1629
注意点も含めて読んでおいてください。
「.DS_Store」が作られなくなった時のデメリット
もちろん、この「.DS_Dtore」ファイルは完全なゴミファイルで悪者という訳ではなく、存在に意味もあります。
GUI-OSの役割として、Macは「Finder」、Windowsでは「Explorer」といういわゆるGUIの見た目の機能にあたる部分で、特定のファイルやフォルダに対して、フォルダを開いてサクサク操作できるのは、PCのスペックがいいという事もありますが、1つのフォルダ内に大量のファイルが存在していた場合などは、表示が遅くなる場合があります。
これは、OSがファイル1つ1つにアクセスして、そのファイルの容量やタイプなどを判別しているために、そのフォルダにアクセスする度に操作が遅い状態になります。
こういった遅くなる現象を解消するために、一度読み取ったフォルダ内の情報を一時的に「.DS_Store」ファイルに格納しておく事で、いわゆるキャッシュファイルを作ることで、フォルダのアクセスを軽くすることが可能になります。
ということで、この隠しファイルを削除してしまうと、OS操作が遅くなるという事が想定されます。
「.DS_Store」ファイルの一括削除
サーバーにアップされてしまったファイルや、mac端末内のファイルを手作業で削除するのは、非常に時間がかかると思います。
購入したばかりで、フォルダ数が少ない場合は問題ないと思いますが、1ヶ月ぐらい使用すると、もう手作業では削除できない状態になると思います。
そんな時、ターミナルで以下のコマンドで一発削除できるのでお試しください。
$ find / -name ".DS_Store" | xargs rm
フリーソフトで対応してみる
こういった事を解消してくれるフリーソフトがあったので、試してみた。
Asepsis
http://asepsis.binaryage.com/
「.DS_Dtore」ファイルを特定の領域で作成して管理してくれる便利なソフトです。
かなり理想的な感じなのだが、インストール時にOSの再起動が必要になるぐらいOSに変更を加えているソフトのようなので、アップデート時などのタイミングでOSが立ち上がらなくなった事が過去にあったようです。
こちらのブログで記述されてました。
http://beadored.com/ds_store-asepsis/
僕の環境でインストールした状態では問題なく動いているので、あまりビビることはなく、タイムマシンでバックアップの設定を怠らないようにすればいいでしょう。
MacForkCleaner
http://www.vector.co.jp/soft/mac/util/se485623.html
「.DS_Store」ファイルを削除してくれるだけのソフトです。
コマンドたたくだけでいいので、わざわざソフトを入れる必要はないと思います。
TotalFinder
http://totalfinder.binaryage.com/
機能の中で「.DS_Store」ファイルを作らないという設定があるようですが、設定ファイルが作られないので、今回の件はあまり意味がないですね。
機能拡張を拡張するこのソフトの機能については、今度紹介したいと思います。
まとめ
「.DS_Store」は使用者にはゴミフィアルにしか思えない
「.DS_Store」はOSがにとっては必要なファイル
「.DS_Store」を除外する事で、使用感が損なわれる可能性がある。
「Asepsis」アプリを使うことで、機能はそのままで、OSの必要なファイルが作成される。
とりあえず、便利ソフトを使って解決になりましたが、このフリーソフトウェアを作った人が神という事ですね。
細かい事ですが、WEB開発の妨げになることを除外するこういった気付きは必要な事だと思うので、めんどくさいと思わずに、環境改善していきましょう。
find . -name ".DS_Store" -print -exec rm {} ";"
$ find . -iregex ‘\./.*\.ds_store’ -print0 | xargs -0 rm -v