先日、Dropboxの同期が永遠に終わらないという状況に陥ってしまい解決に時間がかかってしまったので、その時の対処法を今回はメモしていきます。
まず、今回私が陥ったケースについて。
Mac Book Proの外付けSDカードにDropboxの同期フォルダを作成すると、同期が一生終わらない、という状況でした。
先にまず結論だけ書いておきますと、外付けSDをフォーマットし直すことで解決ができました。
どういう経緯で解決に至ったのかを以下でメモしていこうと思います。
同期が終わらなかった原因
同期がいつまで経っても終わらないことに気づき、なぜだろうと思って画面右上のツールバーにあるDropboxアイコンから状態を確認してみました。
すると、下の画像のようなエラーメッセージが表示がされており、「._」で始まる複数のファイルが何かのエラーで同期できていないことがわかりました。
*現在すでにエラーは修正済みであり、上の画像は適当に再現したものです。うろ覚えなので実際のエラーメッセージと少し異なるかもしれないです。
「._」から始まるファイルが原因だということはわかったのですが、このようなファイルは作成した記憶がありません。また、finderで隠しファイルの表示をオンにしてもこれらのファイルを見つけることはできませんでした。
ターミナルのls -a
コマンドでのみこれらのファイルを表示することができたのですが、どうやらSDカードに存在しているファイルの数だけ「._」ファイルが自動で複製されてしまっているようでした。
そして、これらはapple特有のファイル形式のため、Dropboxでは同期できないようです。
さらに、同期対象のディレクトリ内を最後まで検索し終わってもまた頭からファイルの検索を始めるようで、同期できないファイルがあると永遠に同期中になってしまっているようでした。
試した対処法
いくつか試してみた解決策をメモしておきます。もしかするとこれらで解決できるケースがあるかもしれないので。
Dropboxの同期設定を始めからやり直す
同期が終わらない場合、まずはこれを試してみましょう。これだけで直ったというケースも多くみられます。
しかし、私は何度やり直してもダメでした。笑
パーミッションの修正
「Dropbox 同期終わらない アクセス拒否」などで調べると、Dropbox公式サポートページがヒットします。
Dropbox が同期の途中で止まる、開かない、エラーが表示される
このページの、「権限エラー」という項目にかかれてある作業も試す価値はありそうです。
しかし、私のケースでは解決には至らず。(そもそもここに書かれているファイルが1つ存在しなかった)
._ファイルをターミナルから削除する
次に、「._」ファイルがあるからダメなわけで、これを削除するという対策をしてみました。
「._ 削除」などで調べるとたくさんの方が削除コマンドを掲載してくれていますので、そちらのコマンドを使って削除します。
私が使用したコマンドは以下。
find Dropbox同期ディレクトリへのパス ( -name ".DS_Store" -or -name "._*" ) -print -exec rm {} ";"
これをすることで、一旦は同期が終了し、解決できたように思えましたが、ファイルを追加したりする度に「._」が再生成されてしまうため、いちいちこのコマンドを実行しなくてはなりません。
.DS_Storeや「._」で始まるファイルを作らないようにするコマンドを実行
削除してもだめなら、そもそも作られないようにするしかありません。
調べてみると、そのためのコマンドが実際にありました。
defaults write com.apple.desktopservices DSDontWriteNetworkStores True
上記コマンドを実行。
しかし、ダメでした。
Mac内臓のHDD(SSD)にしか効かない?っぽくて、 SDカードやUSBデバイスには無関係のようです。
もう少し調べてみると、USBドライブ用のコマンドは見つかったのですが、私はSDカードだったため、こちらでも解決できませんでした。
defaults write com.apple.desktopservices DSDontWriteUSBStores -boolean true
USB接続の外付けドライブで私と同じような現象が発生している方は、もしかするとこちらのコマンドで解決するかもしれません。
最終解決方法:SDカードをフォーマットする
「._」から始まるファイルを作らないようにするしか解決方法はありませんでした。
ところが、調べていて分かったのですが、最近のMacではそもそもこれらのファイルは作られないみたいなんですよね。
え、じゃあなんでできるんだよ...とこれまたもう少し調べてみると、外付けドライブのフォーマット形式を「FAT」とかにしちゃっていると、Windowsとの互換性を考慮するために、「._」ファイルなどが作成されてしまうとの情報を発見。
iOSに合わせたフォーマット形式の「Mac OS拡張(ジャーナリング)」でフォーマットし直せば万事解決!とのこと。
なるほどこれか!と思い、「ディスクユーティリティ」アプリでフォーマット形式を確認してみると、
えぇ〜。
がっつり「Mac OS 拡張(ジャーナリング)」になっています。
しかし、もう他に手段が思いつきません。(この時点で諦めてDropboxに問い合わせしたのですが、やはりフォーマット形式の問題とのこと。)
なので、すでに「Mac OS 拡張(ジャーナリング)」のSDカードを、念のため、もう一度「Mac OS 拡張(ジャーナリング)」でフォーマットし直してみることに。
いざ、「消去」!
そして、もう一度Dropboxの同期設定を行い、ファイルを移動させ、同期を待つ....。
おおおおお! 終わった...やっと終わった!
この画面をどれだけ待ちわびたか。笑
ターミナルで確認してみると、もう「._」で始まるファイルは作成されないようになっていました。
やはりフォーマットの問題だったようです。
Sierraへのアップデートが原因だった?
なぜもともとフォーマット形式が「Mac OS 拡張(ジャーナリング)」だったのに不具合がおきていたのか。
これは推測でしかありませんが、おそらくmacOS X からmacOS High Sierraへアップロードしたことが原因なんじゃないかな〜と思っています。
おわりに
有料版のDropboxを契約して使い始めてすぐにこの状況に陥り、かなり苦戦してしまいましたがなんとか解決できました。諦めなくてよかった。
外付けのHDDやSDカードでDropboxを同期する場合、フォーマット形式に気をつけましょう。
ちなみに、なんでSDカード?って思っている方はいらっしゃるかもしれませんので紹介だけしておくと、Mac Bookの容量不足対策のため、専用SDカードがあるのです。
USBを使った外付けHDDだと持ち運ぶ時に不便だし、何よりUSBの差込口2つしかないのにそこで消費するのは辛いので、このSDカードはめちゃくちゃおすすめです。