
第24回でバックアップの仕組みを作ったとき、「これで安心だ」と思いました。
VPS の SQLite データベースを rclone と OneDrive で自動バックアップする方法
でも少し経ってから、ふと気づいたことがあります。 バックアップファイルが OneDrive に保存されているのは確認できている。 では、実際に壊れたとき、私はそれを VPS に戻すことができるのか。
手順を一度も試していないバックアップは、「たぶん復元できる」という希望にすぎません。 この記事では、OneDrive に保存した SQLite データベースを VPS に安全に復元する手順を、実際に試した流れで記録します。
ここで実際にバックアップから復元できれば、今後のサイト運営上も安心できるはずです。
復元が必要になるのはどんなとき
今回の対象は、閲覧数カウンターのデータが入った views.db です。
このデータベースが壊れたり消えたりするケースとして、主に3つを想定しています。
一つには DB の破損です。 VPS のディスクやメモリの問題、あるいは PM2 を止めずに強制再起動したときなどに、書き込み中のデータが中途半端な状態になることがあります。
二つ目は 誤操作による削除です。
作業中に rm コマンドを間違えて実行してしまうことは、誰にでも起こり得ます。
三つ目は VPS の再構築です。 VPS を丸ごと作り直すことになったとき、データベースのデータも新しいサーバーに持ち込む必要があります。
どのケースでも、復元の手順は基本的に同じです。
復元前にやること
復元は「今ある DB ファイルを上書きする」作業です。 作業ミスがあると復元したファイルも使い物にならなくなるため、最初に今の DB を別の名前でコピーしておきます。
bashcp ~/example-blog/data/views.db ~/example-blog/data/views.db.before-restore
これで復元作業に失敗しても、.before-restore というファイルが手元に残ります。
次に PM2 を止めます。 Next.js が動いたまま DB ファイルを差し替えると、書き込み競合が起きてデータが壊れる可能性があります。
bashpm2 stop all
PM2 を止めている間、サイトへのアクセスは一時的に止まりますが、作業自体は数分で終わります。
OneDrive のバックアップファイルを確認する
まず OneDrive に何日分のバックアップがあるかを確認します。
bashrclone lsf onedrive:VPS-Backup/db
実行すると、保存されているファイルの一覧が表示されます。
views_20260515.db
views_20260516.db
views_20260517.db
views_20260518.db
views_20260519.db
views_20260520.db
views_20260521.db
ファイル名は views_YYYYMMDD.db という形式になっているので、どの日付のファイルを使うかをここで決めます。
基本的には最新の日付のファイルを選べば問題ありません。
VPS が動いている場合の復元手順
ダウンロード先のディレクトリを用意して、OneDrive からファイルを取得します。
bashmkdir -p ~/example-blog/data/restore rclone copy onedrive:VPS-Backup/db/views_20260521.db ~/example-blog/data/restore/
rclone copy は指定したファイル1つをダウンロードします。
sync ではなく copy を使うのは、ローカルにある他のファイルを意図せず削除しないためです。
ダウンロードできたら、整合性を確認します。
bashsqlite3 ~/example-blog/data/restore/views_20260521.db "PRAGMA integrity_check;"
ok と表示されれば、ファイルは正常です。
ここで ok 以外が表示された場合は、別の日付のファイルを試してください。
整合性が確認できたら、本番の DB ファイルを置き換えます。
bashcp ~/example-blog/data/restore/views_20260521.db ~/example-blog/data/views.db
最後に PM2 を再起動します。
bashpm2 start all
サイトにアクセスして、閲覧数が正常に表示されていれば復元完了です。
VPS を新規で立ち上げた場合の追加手順
VPS を再構築した場合、rclone の設定も含めて一から用意する必要があります。 rclone のインストールと OneDrive への認証設定は第24回と同じ手順で行います。 設定が完了したら、上記と同じ手順で復元できます。
新規 VPS の場合、~/example-blog/data/ ディレクトリが存在しないこともあります。
その場合はディレクトリを先に作成してください。
bashmkdir -p ~/example-blog/data
復元後の確認ポイント
復元が完了したら、以下の2点を確認しておくと安心です。
ひとつは PM2 のプロセス状態です。
bashpm2 list
online と表示されていれば Next.js は正常に動いています。
もうひとつは サイト上での閲覧数の表示です。
ブラウザで記事ページを開き、閲覧数が表示されているかを目視で確認します。
0 になっていたり、表示されていない場合は、DB ファイルのパスが正しいかを確認してください。
復元テストを習慣にする理由
今回初めて復元の手順を通しで試して、気づいたことがあります。
手順自体はそれほど難しくありません。 でも「知っている」と「実際にできる」の間には、思っていたより大きな差があります。
障害が起きてから初めて手順を調べるのと、事前に一度通しで動かしておくのとでは、焦り方が全然違います。
半年に一度でいいので、バックアップファイルを実際にダウンロードして整合性チェックをかけてみる。 それだけでも「このバックアップは使える」という確認になります。 バックアップの価値は、ファイルが存在することではなく、必要なときに使えることにあります。





