chrome プロファイル壊れたときの直し方|macOSで失うものを最小にする
Chromeを起動した直後に「プロファイルを正しく開くことができませんでした」という警告が出る。OKを押せば普通に使えて、見た目はいつもと変わらない。それでも次に起動すると同じ箱がまた出る。ここで「chrome プロファイル壊れた」と調べる人の多くは、放っておいてよいものか判断できずに止まっている。
結論としては、放置してよい表示ではない。この警告は、Chromeがプロファイルのフォルダを最後まで読めなかったか、書き戻せなかったことを意味する。つまりこのセッションでやった変更の一部は、次の起動には残らない。どこが失敗しているのかを見分け、失うものが少ない順に手を入れれば、多くは数分で終わる。順番を飛ばすと、消さなくてよかったブックマークまで巻き込むことになる。
この警告が実際に伝えていること
Chromeのプロファイルは1つの巨大なデータベースではなく、フォルダである。macOSでは~/Library/Application Support/Google/Chromeの下にあり、最初のプロファイルはDefault、あとから作ったものはProfile 1のような名前のフォルダに入る。中身はJSONの設定ファイル、いくつかのSQLiteのデータベース、そして大量のキャッシュで構成されている。
起動時、Chromeはこのフォルダを読み、いくつかの値をすぐに書き戻す。その読み書きのどれかが失敗したときにこの警告が出る。文面は同じでも、原因の形は主に3つある。設定ファイルが途中で切れているか壊れている場合。これは強制終了、電源断、書き込み中にディスクが満杯になったときに起きる。次に、SQLiteのファイルのどれかが壊れている場合。このときブラウザ自体は動き続け、そのファイルが支えていた機能だけが黙って止まる。3つ目は、フォルダを読めるが書けない場合で、バックアップからの復元、別の機械からの移行、一度別のユーザー権限で起動したあとに起こる。
見落とされやすい4つ目の原因もある。2つのプロセスが同じフォルダを取り合っている場合である。プロファイルのフォルダをiCloud DriveやDropboxの同期対象に置いた場合や、別のChromium系アプリを同じデータ領域に向けた場合に起きる。Chromeはこれを防ぐために目印のファイルを作るが、異常終了で古い目印が残ると、次の起動でこの警告になる。データ領域の直下にあるSingletonLock、SingletonCookie、SingletonSocketという3つのシンボリックリンクがそれにあたる。
Your profile could not be opened correctly. Some features may be unavailable. Please check that the profile exists and you have permission to read and write its contents.
出典: Google Chrome が起動時に表示するダイアログの原文
消す前に、どのファイルが何を持っているかを知る
検索して出てくる手順の多くは「プロファイルのフォルダごと消す」と書いている。雨漏りを直すために建物を壊すようなもので、確かに漏りは止まる。実際にはファイルは役割ごとに分かれているので、壊れたところだけ作り直して残りを守れる。
| プロファイル内のファイル | 持っているもの | 消したときに失うもの |
|---|---|---|
| Preferences | 設定、起動時のページ、拡張機能の一覧、サイトごとの許可 | 設定が初期値に戻る。拡張機能自体は残る |
| Secure Preferences | 改ざん検出付きの設定の写し | 検索エンジンとホームページの指定 |
| Bookmarks と Bookmarks.bak | ブックマークの木構造と1つ前の写し | ブックマーク。同期か.bakがあれば戻せる |
| History | 閲覧履歴、アドレス欄の候補 | 履歴と入力補完 |
| Web Data | 自動入力、保存したカード、検索エンジン | フォームの自動入力 |
| Login Data | 保存したパスワード(暗号化済み) | パスワード。同期していれば戻せる |
| Cookies | ログイン状態を保つCookie | すべてのサイトからログアウト |
| Local State(1つ上の階層) | プロファイルの目録、機械単位の設定 | プロファイルの名前と並び順のみ |
復旧を考えるうえで押さえておきたい点が1つある。保存したパスワードは、ログインキーチェーンの「Chrome Safe Storage」という項目に入っている鍵で暗号化されている。Login Dataだけを別のMacに持っていっても復号できない。パスワードはGoogleアカウントの同期から戻すか、戻らないかのどちらかになる。
失うものが少ない順に試す
上から順に試し、警告が消えた時点で止める。
Chromeを完全に終了させる
最後のウィンドウを閉じただけでは終了していない。メニューから終了したうえで、アクティビティモニタを開いてChromeで検索する。本体より長く残ったヘルパープロセスが目印のファイルを掴んだままだと、次の起動はもう居ないプロセスを指す目印を読むことになる。残っていればその場で終了させるか、ターミナルでpkill -x "Google Chrome"を実行する。Macごと再起動すればより確実で、考えることも少ない。ファイルに手を付けるのはこのあとにする。長い調査に発展した事例のかなりの割合が、この段階で解決している。
空き容量と置き場所を確かめる
ディスクに空きがない状態では書き込みが途中で切れ、切れた書き込みがそのままこの警告になる。df -h /を実行して空き容量の列を見る。Macでは、Finderが表示する空き容量よりも実際に使える量が小さいことがある。スナップショットがまだ解放されていない領域を押さえているためである。
あわせて、プロファイルのフォルダが~/Library/Application Supportの下にあり、iCloud DriveやDropboxの同期対象に移されていないかを確認する。同期の常駐プログラムは、Chromeが開いている最中のファイルを差し替えることがある。移してあったなら元の場所に戻し、目印のファイルはChromeに作り直させる。
設定ファイルを退避する
Chromeを完全に終了した状態で、該当するプロファイルのフォルダ内のPreferencesをPreferences.oldに改名する。次の起動でChromeが新しいものを書き出す。設定は初期値に戻るが、ブックマーク、履歴、パスワード、Cookieは別のファイルなので影響を受けない。これで警告が消えたなら原因は設定ファイルだったことになる。退避したものは1週間ほど置いてから捨てるとよい。
静かに壊れるデータベースを作り直す
まだ出るなら次はWeb Dataを疑う。これとWeb Data-journalを改名して起動し直す。失うのは自動入力の内容だけである。それでも消えないならHistoryに同じことをする。削除ではなく改名にしておくと、見当違いのファイルに手を付けた場合に戻せる。
プロファイルの目録を作り直す
存在しないプロファイルの名前が警告に出るときや、どのプロファイルでも同じ警告が出るときは、原因が1つ上の階層にある。Chromeを終了し、プロファイルの中ではなくChromeフォルダ直下のLocal Stateを改名する。起動時に目録が作り直される。失うのはプロファイルの表示名と並び順だけで、中身のフォルダには触れないため、あとから名前を付け直せばよい。
新しいプロファイルに移してデータを戻す
ここまでで直らない場合は、新しいプロファイルを作って同じGoogleアカウントでログインする。同期を有効にしていたなら、ブックマーク、パスワード、履歴、拡張機能、開いていたタブが戻る。一度もログインしていなかった場合は、先に古いフォルダからBookmarksとBookmarks.bakを取り出しておく。
Bookmarks.bakは、前回正常に起動したときの写しである。どちらも中身はJSONなので、テキストエディタで開けば木構造が無事かどうかを取り込む前に確かめられる。戻し方はChromeを終了して現在のBookmarksをどけ、控えのほうを同じ名前にするだけである。ただし次に正常起動した時点で控えは上書きされるので、試す前に両方を別の場所へ複製しておく。古いフォルダは削除せず、改名して1か月は残しておくほうが安全である。
何度も再発するときに疑うところ
一度壊れて直したプロファイルは、たいていそのまま安定する。数週間おきに再発するなら、壊し続けている構造的な原因がある。
最も多いのは強制終了である。Chromeは設定を遅延させて書き込むため、固まったときにプロセスを落とすと、書きかけのファイルが残る。次に多いのがディスクの空き不足で、3つ目がバックアップと移行の道具になる。ホームフォルダを別のユーザーとして復元すると、いま存在しないアカウントが所有者のままのファイルが残り、読めるのに置き換えられない状態になる。OSの更新の直後から出はじめた場合も権限の変化を疑い、フォルダの所有者をls -ldで確かめてから消す判断をする。
もう1つ、ブラウザに近い道具を複数動かしている人だけに起きる原因がある。--user-data-dirを指定してChromiumを起動する道具は、その指定先をChrome本体が使っているフォルダに向けた瞬間にプロファイルを壊す。サイト専用ブラウザや自動化の仕組みが該当する。テストの枠組みは特に注意が必要で、ログイン済みの状態を使い回すために実際のプロファイルを指す設定が既定になっているものがある。ブラウザを疑う前に、Webページを開く道具の起動引数を見ておきたい。
拡張機能もこの一覧に入るが、世間で言われるほど上位ではない。拡張機能が設定ファイルを直接壊すことはない。ただしページを開くたびに大きなデータを書くものは、ディスクが逼迫しているときに書き込みが失敗する確率を上げる。何かを入れた数日後から出はじめたなら、1週間止めてみるのが安上がりな確認になる。
1つのプロファイルに全部を入れておく危うさ
手順の下に、構造の話が1つある。仕事のアカウントをすべて1つのプロファイルに入れていると、ファイルが1つ壊れただけで、メールもチャットも書類も案件管理も同時に止まる。復旧そのものは難しくないが、止まるのが朝いちばんの1日分としてまとめて来る。
作業を別々の環境に分けておくと、この失敗の大きさが変わる。Webアプリごとに窓と保存領域が分かれていれば、設定ファイルが1つ壊れても影響はそのサービスだけにとどまり、直している間も残りは動く。アプリごとに独立したワークスペースは本来、注意を配る先を整理するための仕組みだが、副産物として壊れたときの範囲を狭める。どこまで分かれるのかはできることにまとめられており、毎日使っているサービスがその形で開けるかは使えるアプリで確かめられる。作業単位で窓をまとめ直す考え方はワークスペースで説明されている。
一方で、割に合うかどうかは頻度で決まる。管理するアプリが増え、ログインをやり直し、移行に半日かかる。警告が一度出ただけなら、この記事の手順で直して様子を見るほうが早い。同じプロファイルが2回壊れたなら、次に壊れたときに何がまとめて止まるのかを一度書き出してみるだけでも、分けるべきかどうかの判断材料になる。
よくある質問
Preferencesを消すとブックマークやパスワードも消えますか?
消えません。ブックマークはBookmarks、パスワードはLogin Data、履歴はHistoryという別のファイルに入っているためです。Preferencesを外すと設定、起動時のページ、サイトごとの許可が初期値に戻るだけです。削除ではなく改名にしておけば、見当違いだった場合に元へ戻せます。
警告は出るのに普通に使えています。放置してよいですか?
放置しないほうがよい状態です。この警告は読み書きのどれかが失敗したことを意味するので、そのセッションでの変更が終了時に保存されない可能性があります。動いているから問題ないのではなく、保存が信用できない状態だと考えて、まずChromeを完全に終了して起動し直してください。
新しいプロファイルを作れば同期で全部戻りますか?
同期を有効にしていたアカウントなら、ブックマーク、履歴、パスワード、拡張機能、開いていたタブ、設定が戻ります。一度もログインしていなかったプロファイルの内容や、ダウンロードしたファイルのようなローカルのデータは戻りません。頼る前に同期の設定画面で何が対象になっているかを確認してください。
バックアップのためにChromeのフォルダをiCloud Driveに置いてもよいですか?
おすすめできません。同期の常駐プログラムがブラウザの開いているファイルを差し替えるため、この警告の原因になり、長い目ではSQLiteのデータベースを壊す要因にもなります。バックアップはTime Machineのようなディスク単位で動く仕組みに任せ、フォルダはChromeが想定している場所に置いたままにしてください。