接続トラブルシューティング · Clash 技術ブログ

Clash Verge Revの再起動後にProfilesが消えた場合の復元とバックアップ

Clash Verge Rev v2.5.2 の再起動後にサブスクリプション、Profile、または Merge/Script の設定が消えた場合は、まず書き込みを止め、ローカルバックアップから復元します。本記事では、症状の見分け方、復元、検証、安定版との境界を説明します。

  • Clash Verge Rev
  • Profile
  • 設定の消失
  • ローカルバックアップ
  • v2.5.2
目次

同じ Profile クリーンアップ異常かをまず確認する

本記事で扱うのは、次の明確な症状だけです。Clash Verge Rev v2.5.2 に既存のサブスクリプション、ローカル Profile、またはグローバル Merge/Script があり、通常終了、シャットダウン、または再起動後に再び開くと、設定一覧に少数の項目しか残らず、既存のオーバーライドも空のテンプレートに戻っていることがあります。

公式 issue #7577 では、macOS の起動時に 32 個の Profile ファイルのうち 30 個が削除されたと報告されています。issue #7804 では、Fedora を通常どおりシャットダウンした後の次回起動時に 20 個中 18 個のファイルが削除され、その後のコメントには Windows と macOS での報告もあります。いずれも、サブスクリプションサービスがすべてのノードを同時に消したのではなく、起動時の孤立ファイルのクリーンアップを示しています。

まずアプリのログを開き、Removed file、Profile 文件清理完成、および一度の起動で異常に多い削除ファイル数が記録されていないか確認します。ディスク上に Profile が残っていてプロキシ画面だけが空なら、先にコアとの通信を確認します。ファイルは存在するものの Invalid YAML が出る場合は、形式またはフィールドを修正します。一つのサブスクリプションだけ更新に失敗し、他の Profile が残っている場合も、アプリ全体のバックアップをそのまま復元しないでください。

次の四つの兆候がすべてそろった場合に限り、本記事の手順を使う

確認項目この記事の対象一致しない場合
クライアントのバージョンClash Verge Rev v2.5.2 またはそのコードを基にしたビルド実際のバージョンの Release と issue に沿って調査する
消失した範囲複数のサブスクリプション、ローカル Profile、または Merge/Script が同時に消失一つのサブスクリプションだけなら、先にレスポンスと更新ログを確認
発生したタイミング終了、シャットダウン、または再起動後の初回起動編集直後に消えた場合は、保存や検証のエラーを確認
ログ上の証拠Removed file、またはクリーンアップ完了と異常な削除件数証拠がない場合はまずログを保存し、誤削除と断定しない

復元前にアプリのデータディレクトリ全体を保存する

バックアップを復元すると、アーカイブ内の config.yaml、verge.yaml、profiles.yaml と profiles ディレクトリがアプリのデータディレクトリへ書き戻されます。まず、現在のディレクトリ全体と clash-verge-rev-backup サブディレクトリを別の場所へコピーしてください。

現在のディレクトリがすでに不完全に見えても、先にコピーを残してください。誤ったバックアップを選んだり、古い設定で新しい変更を上書きしたりした場合に、元の状態へ戻せます。

通常インストールでは、データは一般にシステムのデータディレクトリ内にある io.github.clash-verge-rev.clash-verge-rev フォルダーへ保存されます。ポータブル版では、プログラムの隣にある .config ディレクトリへ保存されます。不明な場合は、クライアント設定のアプリディレクトリを開く項目を基準にし、似た名前のフォルダーを推測で削除しないでください。

一般的なアプリデータの保存場所

システム通常インストールで一般的な場所
Windows%APPDATA%\io.github.clash-verge-rev.clash-verge-rev
macOS~/Library/Application Support/io.github.clash-verge-rev.clash-verge-rev
Linux$XDG_DATA_HOME/io.github.clash-verge-rev.clash-verge-rev。未設定の場合は通常 ~/.local/share 配下
ポータブル版プログラムディレクトリ/.config/io.github.clash-verge-rev.clash-verge-rev

復元前に必ず保存するもの

  • アプリのデータディレクトリ全体の読み取り専用コピー
  • clash-verge-rev-backup 内にある既存のすべての ZIP
  • logs ディレクトリと、異常発生時の latest.log
  • 現在も残っている profiles.yaml、profiles ディレクトリ、Merge.yaml、Script.js
  • 元のサブスクリプション URL、またはサービス提供元の再インポート画面

まず最新の完全なローカルバックアップを探す

Clash Verge Rev v2.5.2 のローカルバックアップは、アプリのデータディレクトリ内にある clash-verge-rev-backup に保存されます。自動バックアップのファイル名には -auto-scheduled、-auto-merge、-auto-script が付くことがあります。

issue #7804 の報告者は、三日前の auto-script ZIP からグローバルスクリプトを復元できました。

公式の v2.5.2 バックアップ実装では、profiles ディレクトリ、config.yaml、verge.yaml、任意の DNS 設定、profiles.yaml が同じ ZIP に格納されます。

ZIP を開けるというだけで復元しないでください。先にコピーを作り、アーカイブ内に profiles.yaml と profiles/ の両方があることを確認してから、障害発生前のうち最も新しい時点を選びます。

障害発生前の完全な ZIP がある

内蔵のバックアップ履歴からの復元を優先し、ZIP のコピーも残す。

auto-script または auto-merge の ZIP しかない

日時と内容を確認する。単一スクリプトだけでなく、完全な設定一式が含まれている場合がある。

ZIP に profiles.yaml がない、または開けない

稼働中のディレクトリには書き込まず、古いバックアップまたは元のサブスクリプションから再構築する。

ZIP が一つもない

残っている profiles ファイルを保存し、元の情報源ごとに再構築する。

クライアントを開ける場合は、バックアップ履歴から復元する

システムプロキシと TUN をオフにしたまま、設定の「バックアップ設定」を開き、「ローカルバックアップ」で「履歴を表示」を選びます。障害発生前のバックアップを見つけ、まずエクスポートボタンで別名保存してから、復元をクリックして確認します。公式画面では、復元完了後にアプリが再起動します。

ZIP を別の場所へ移している場合は、先に「バックアップをインポート」でコピーをローカルバックアップ一覧へ追加し、履歴から復元します。ZIP を実行中のアプリディレクトリへ直接展開しないでください。内蔵の復元機能は書き込み後に config、profiles、画面設定を再読み込みしますが、手動で上書きするとディスク上のファイルとメモリ上の状態が一致しなくなりやすいためです。

内蔵の復元手順

  1. トラフィック引き受けのスイッチをオフにする

    先に TUN とシステムプロキシをオフにし、復元に失敗しても端末が直接接続できる状態を確認する。

  2. バックアップ履歴を開く

    設定 → バックアップ設定 → ローカルバックアップ → 履歴を表示 を開く。

  3. 唯一のコピーを書き出す

    復元する ZIP をアプリのデータディレクトリ外へ別名保存する。

  4. 障害発生前のバックアップを選ぶ

    ファイル名の日時を確認し、障害発生後の空設定のバックアップは使わない。

  5. 復元を確定し、再起動を待つ

    復元中にプロセスを強制終了しない。再起動後は、プロキシを有効にする前に Profile を確認する。

完全なバックアップがない場合は、保存元ごとに再構築する

利用できる ZIP がない場合、profiles.yaml の参照を推測で作ったり、ランダムなファイル名を勝手に変更したりしないでください。保存してあるサブスクリプション URL からリモート Profile を再インポートします。ローカルで作成した設定は、障害発生前にコピーした profiles ファイルを一つずつ確認し、新しいローカル Profile を作成して内容を貼り付け、クライアントにインデックス関係を再生成させます。

グローバル Merge.yaml と Script.js の古いコピーが残っている場合は、まずオフラインのコピー同士を比較してから、クライアントのグローバル拡張編集画面から復元します。バックアップに古い内容がない場合に限り書き直してください。公開スクリーンショットから、鍵や内部ドメインが含まれる可能性のある完全なルールを推測して復元しないでください。

サブスクリプション URL も失われた場合は、ブラウザー履歴、公開ログ、他人の設定から token をつなぎ合わせるのではなく、元のサービス提供元から再取得またはリセットしてください。一つの情報源を復元するたびに状態を保存し、すべてを一度にインポートしてどの手順で問題が起きたか分からなくなるのを防ぎます。

内容の入手元に応じて復元方法を選ぶ

失われた内容優先する入手元復元方法
リモートサブスクリプション元のサービス提供元のアカウントまたは保存済み URL再インポートし、ノード数と更新日時を確認
ローカル Profile保存済み YAML またはアプリディレクトリのコピー新しいローカル設定を作成して内容をインポートし、検証
Merge/Script障害発生前の ZIP またはオフラインコピーグローバル拡張画面から復元して保存
ランダム名の断片的なファイルだけが残っているコピーしておいた profiles ディレクトリ一つずつ内容を確認し、インデックスを直接上書きしない

復元後に Profile、オーバーライド、実際の接続を検証する

アプリの再起動後も、すぐには TUN を有効にしないでください。Profile の数、名前、種類、現在選択中の項目を確認し、Merge と Script をそれぞれ開いて、重要なルールが空のテンプレートになっていないことを確認します。リモートサブスクリプションは手動更新でき、ローカル Profile は設定チェックを通る必要があります。

次に、動作確認済みのノードを一つに固定し、システムプロキシだけを有効にして実際の HTTPS リクエストを一度行い、接続履歴でドメイン、ルール、アウトバウンドを確認します。最後にアプリを完全終了してもう一度開き、Profile 数とログを再確認します。二回目の起動でも異常な削除がなければ、復元は安定したと判断できます。

復元完了の基準

  • サブスクリプションとローカル Profile の数、名前、種類がバックアップ時の状態と一致する
  • Merge.yaml と Script.js の重要な内容が残っており、保存できる
  • 現在の Profile が設定チェックを通り、Mihomo を起動できる
  • 固定したノードで実際の HTTPS リクエストが完了し、接続履歴に想定どおりのアウトバウンドが表示される
  • 完全終了後に再起動しても Profile が残っている
  • 新しいログに異常な Removed file または大量削除の記録がない

復元に失敗したら、保存しておいた元の状態に戻す

復元後にアプリが起動しない、Profile 数がさらに減った、または新しい設定の検証に失敗する場合は、まずアプリを終了し、複数の ZIP を続けて試さないでください。今回の復元後のアプリデータディレクトリを別名保存してから、最初に保存した元の状態のコピーを使って変更前に戻します。

端末ではまず TUN とシステムプロキシをオフのままにします。ロールバック後もクライアントを使えない場合は、いったん起動せず、ログ、バックアップ ZIP、ディレクトリのコピーを保存し、公式 issue に、機密情報を除いたバージョン、システム、削除件数、最初のエラーを報告します。設定を直すために仮想ネットワークアダプターをアンインストールしたり、システムネットワーク全体をリセットしたり、アプリデータをすべて削除したりしないでください。

失敗時のロールバック

  1. これ以上書き込まない

    Clash Verge Rev を完全終了し、関連プロセスが終了したことを確認する。

  2. 失敗後の状態を保存する

    復元後のディレクトリとログを別名保存し、どのファイルが失敗の原因か比較できるようにする。

  3. 元の状態に戻す

    復元前に保存したディレクトリ全体のコピーを使用し、正体不明の二つ目の ZIP を混ぜない。

  4. 直接接続のまま対応を待つ

    システムプロキシまたは TUN を有効にせず、機密情報を除いた証拠を添えて公式へ報告する。

修正は開発ブランチに取り込まれたが、安定版には未収録

2026年9月2日、メンテナーは issue #7804 で、コミット 44f6f6e によって信頼できないクリーンアップ処理を削除したことを確認し、問題をクローズしました。このコミットのタイトルは「preserve files until explicit deletion」で、起動時の cleanup_orphaned_files 呼び出しと自動削除の実装一式をコードから直接削除しています。

2026年9月3日時点で、公式 Releases の最新安定版は引き続き 2026年7月19日公開の v2.5.2 であり、リリースノートにはこの後の修正が含まれていません。そのため、「issue がクローズされた」を「v2.5.2 で修正済み」と書き換えることはできず、回避だけを目的に日常使用の端末を開発ビルドへ切り替えるべきでもありません。

安全な進め方は、まずバックアップと復元を済ませ、不必要な再起動を減らし、44f6f6e を明記した安定版が公式に公開されるまで待つことです。新しい安定版の公開後も現在のバックアップを残し、Release を確認してから、完全終了、再起動、実際の接続による回帰確認を一度行います。

今後は自動バックアップと外部コピーの両方を残す

復元後は、バックアップ設定で定期ローカルバックアップを有効にし、「重要な変更時に自動バックアップ」も有効のままにします。v2.5.2 の実装では、予定時刻とグローバル Merge/Script の変更後にアーカイブが作成され、自動アーカイブは最大 20 個保持されます。この上限があるため、ローカルディレクトリは永続的な履歴保管庫ではありません。

さらに、検証済みの ZIP を少なくとも一つアプリデータディレクトリ外へエクスポートするか、自分で管理する WebDAV を設定します。サブスクリプションのオーバーライドを大きく変更するとき、クライアントを移行するとき、アップグレード前には、手動でバックアップを一つ作成してエクスポートします。復元テストは、ロールバック用コピーがある場合に限って実施してください。

長期保護チェックリスト

  • 定期ローカルバックアップが有効で、変更頻度に合う間隔になっている
  • 重要な変更時の自動バックアップが有効になっている
  • 最新の ZIP を一つ、アプリデータディレクトリ外へエクスポート済み
  • アーカイブに profiles.yaml と profiles/ が含まれていることを確認済み
  • サブスクリプション URL、Profile、バックアップを公開共有しない
  • アップグレード前に、安定版 Release が 44f6f6e または後続の同等修正を明記しているか確認する

参考資料