当ページの概要

前頁で、Paperless-Ngxのエクスポート、インポート機能を説明しました。その機能は有用ではあるものの、物理故障などに対応できないため、別ディスクでのバックアップとリカバリを行う方法を今回説明していきます。
なお、Paperless-Ngxの章では以下を扱っています。
バックアップ#2 dockerの機能を利用した復旧
バックアップ
papeless-Ngxをインストールしているのは、私の場合USB接続している1TBのSSDです。dockerなどを意識せず、まずはこのドライブ全体のバックアップを履歴差分バックアップ形式で取得しています。以下のページを参考にしてください。

echo && echo ■月次_履歴差分BACKUP開始SSD1T■ && rm -rf /srv/dev-disk-by-uuid-d0b89369-9f9d-4eeb-8adc-5ed45f83397b/SSD1T_BK/temporary ; echo && rsync -avh --link-dest=../latest /srv/dev-disk-by-uuid-aa62e7de-257e-4428-8794-b7745ddfc706/ /srv/dev-disk-by-uuid-d0b89369-9f9d-4eeb-8adc-5ed45f83397b/SSD1T_BK/temporary && echo && mv -v /srv/dev-disk-by-uuid-d0b89369-9f9d-4eeb-8adc-5ed45f83397b/SSD1T_BK/latest "/srv/dev-disk-by-uuid-d0b89369-9f9d-4eeb-8adc-5ed45f83397b/SSD1T_BK/backup-$(date +%Y%m%d-%H%M%S)" && echo && mv -v /srv/dev-disk-by-uuid-d0b89369-9f9d-4eeb-8adc-5ed45f83397b/SSD1T_BK/temporary /srv/dev-disk-by-uuid-d0b89369-9f9d-4eeb-8adc-5ed45f83397b/SSD1T_BK/latest && echo && echo ■月次_履歴差分SSD1T終了
コマンドの解説はここではふれないので、以下を参考にしてください。
SSD1Tの中身を確認すると、このようなトップレベルのディレクトリ構造になっています。これらのうち、「docker」を復旧させるのがつぎの手順になります。

リカバリ

まず、テストの準備としてPaperless-Ngx内部のデータをゴミ箱も含めて全消しします。

次に、二つとも、composeサービスは止めておきます(サービス>compose>files より)
次に、スケジュールタスクにリカバリコマンドを実装します。

sudo cp -RT -a -f /srv/dev-disk-by-uuid-d0b89369-9f9d-4eeb-8adc-5ed45f83397b/SSD1T_BK/backup-20250220-181714/docker /srv/dev-disk-by-uuid-aa62e7de-257e-4428-8794-b7745ddfc706/docker
コードの説明に入る前にポイントが2点あります。

ユーザはrootでないといけません。dockerファイルの復旧に支障がでるようです。sshでroot権限で入れる場合はsshのコマンドライン実行でもよいかと思いますが、私の場合はrootがどうしてもログインできなかったので、omvのタスク上でroot権限で処理させるようにしています。

タグに「please_edit_backup-“YYYYMMDD-HHMMSS”」とつけておきましょう。実際コマンドを発行するときにそこだけ直さないといけません(上のコードの太字斜体部分)
コマンドの解説です。
sudo cp -RT -a -f (バックアップしたdockerイメージが格納されているディスク)/backup-(最新の日付)-(最新の時刻)/docker (復旧させるバックアップ元ディスク)/docker

スケジュールタスク上で実行します。成功すると、END OF LINEと表示されます。

サービス>Compose>設定>Rsstart Docker を選択してください。

Statusが「UP」になっていることを確認します。

データが復旧できていることを確認します。
まとめと次回予告

安心してPaperless-Ngxの利用ができるようになりました!これでEvernoteに余分なお金を払う心配もなくなって一安心です。Paperless-Ngxはいったん終了し、次にデジタルフォトストレージの活用について記載していきます。おもいでばこと同じ機能をOpenMediavalutでどのように構築実装していくかを記載します。