Skip to content

バックアップとリストア ​

Dagu はすべての状態をファイルに保存します。そのため、バックアップとはそれらのファイルのコピーです。データベースのダンプは必要ありません。

バックアップの対象 ​

以下のパスは DAGU_HOME からの相対パスです。DAGU_HOME を設定していない場合、設定と DAG は ~/.config/dagu に、data/ と logs/ は ~/.local/share/dagu にあります。使用中のパスは dagu config で確認できます。

パス内容バックアップ
config.yaml、base.yaml、calendars/設定、DAG の共通デフォルト、ビジネスカレンダー必須
dags/DAG 定義と Wiki必須(すべて Git で管理している場合を除く)
data/auth/暗号鍵とサインイントークンのシークレット必須。シークレットとして扱ってください。
data/secrets/暗号化されたシークレット必須
data/users/、data/apikeys/、data/webhooks/、data/workspaces/ユーザー、API キー、Webhook、ワークスペース必須
data/license/サーバー ID とライセンス必須。これがないと、サーバーは新規として登録され、ライセンス枠をもう 1 つ使用します。
data/scheduler/スケジュールの状態(locks/ を除く)キャッチアップに必須
data/ のその他のファイル実行履歴、キュー、アーティファクト、通知設定推奨
logs/実行ログ保持ポリシーの要件に応じて
logs/admin/audit/監査ログ保持ポリシーの要件に応じて

次のパスはバックアップから除外してください。これらは、リストア後には存在しないプロセスに関する情報です。

  • data/proc/
  • data/service-registry/
  • data/scheduler/locks/
  • data/cache/

暗号鍵を保管してください

シークレットなど Dagu が暗号化する値は、data/auth/encryption_key の鍵、または DAGU_ENCRYPTION_KEY が設定されている場合はその鍵でのみ読み取れます。鍵が存在しない場合、Dagu は新しい鍵を生成し、古い値は読み取れなくなります。バックアップは、保護対象のシークレットと同等に慎重に保管してください。

バックアップの手順 ​

整合性のあるコピーを取得するには、先に Dagu を停止します。この例では DAGU_HOME=/srv/dagu としています。

bash
sudo systemctl stop dagu-scheduler dagu-server

sudo tar -C /srv -czf /backup/dagu-$(date +%F).tar.gz \
  --exclude='dagu/data/proc' \
  --exclude='dagu/data/service-registry' \
  --exclude='dagu/data/scheduler/locks' \
  --exclude='dagu/data/cache' \
  dagu

sudo systemctl start dagu-scheduler dagu-server

停止せずにバックアップするには、LVM、ZFS、または NFS ファイラーを使用して、ボリュームのアトミックなスナップショットを取得してください。稼働中のシステムからファイルをコピーすると、あるファイルは変更前、関連するファイルは変更後の状態でコピーされることがあります。

アクティブ/スタンバイのペアでは、両方のホストで Dagu を停止してください。停止しないと、コピー中にもう一方のホストが書き込みを続けます。

リストアの手順 ​

  1. すべてのホストで Dagu を停止します。

  2. ファイルを同じ絶対パスにリストアします。データディレクトリは各スロットの実行 ID の一部です。そのため、パスが異なると、スロットに新しい ID が割り当てられます。

    bash
    sudo tar -C /srv -xzf /backup/dagu-2026-11-09.tar.gz
    sudo chown -R dagu:dagu /srv/dagu
  3. catchup_window を設定している DAG を確認します。スケジューラが起動すると、これらの DAG は、バックアップ以降に実行されなかったスロットを、各 DAG のウィンドウの範囲でリプレイします。先に dagu server を起動し、実行してはならない DAG を一時停止してください。

  4. スケジューラを起動します。

  5. 結果を確認します。

    bash
    dagu history --limit 5
    curl -s http://localhost:8090/health # dagu scheduler only, not start-all

    暗号鍵がリストアされたことを確認するため、シークレットを使用する DAG を開いて実行してください。

バックアップの取得時に進行中だった実行のステータスは、実行中になっています。Dagu はそのプロセスが存在しないことを検出し、失敗としてマークします。

バックアップのテスト ​

妥当性を説明できる周期で別のホストにリストアし、シークレットを使用するワークフローを 1 つ実行してください。リストアを試していないバックアップは、仮定にすぎません。

Dagu is open source under the GNU General Public License v3.0.