DeadManPing
Docs

Backup Dead Man Switch: Never Miss a Failed Backup

Backup failed at 3 AM — how do you know?
Dead man switch. One curl line. Your backup logic stays the same.

14-day free trial · No credit card required

The Problem: Backup Failures Go Undetected

Most backups don't fail loudly.
They succeed… incorrectly.

empty backup file

zero bytes

outdated backup

backup didn't run

And no alert fires. Until it's too late.

Solution: Dead Man Switch for Backups

DeadManPing doesn't run your backups. Your cron does. DeadManPing only observes if the ping arrived.

After each successful backup, your script pings a monitoring service. If the ping doesn't arrive within the expected interval, you get an alert. It's independent of your backup infrastructure, so it works with any backup method.

Important: The curl command must be inside your backup script, not in the cron line, because only in the script do you have access to variables from execution results (e.g., backup file size, success status).

What Dead Man Switch Detects

Empty Backup File (0 bytes)

Backup script runs, but the backup file is empty. Dead man switch detects this by validating file size in payload.

#!/bin/bash
BACKUP_FILE="/backups/db-$(date +%Y%m%d).sql"
pg_dump mydb > "$BACKUP_FILE"

# Get file size
FILE_SIZE=$(stat -c%s "$BACKUP_FILE" 2>/dev/null || echo 0)

# Ping with file size - DeadManPing validates size > 0
curl -X POST "https://deadmanping.com/api/ping/backup-db?size=$FILE_SIZE"

Backup Didn't Run

Cron job gets disabled or fails to execute. Dead man switch detects missing ping within expected interval.

#!/bin/bash
set -e

# Run backup
rsync -avz /data/ user@backup-server:/backups/

# If backup fails, script exits and ping never arrives
curl -X POST "https://deadmanping.com/api/ping/backup-rsync"

Outdated Backup

Backup runs but contains old data. Dead man switch validates backup age using payload validation.

#!/bin/bash
BACKUP_FILE="/backups/backup-$(date +%Y%m%d).tar.gz"
tar -czf "$BACKUP_FILE" /data/

# Get backup age in hours
HOURS_SINCE=$(($(date +%s) - $(stat -c %Y "$BACKUP_FILE")) / 3600)

# Ping with age - DeadManPing validates age < 24 hours
curl -X POST "https://deadmanping.com/api/ping/backup-daily?hours_since=$HOURS_SINCE"

Partial Backup

Multi-step backup partially fails. Dead man switch detects incomplete backups using step completion tracking.

#!/bin/bash
FAILED_STEPS=0

# Step 1: Database backup
pg_dump mydb > /backups/db.sql || ((FAILED_STEPS++))

# Step 2: File sync
rsync -avz /data/ user@server:/backup/ || ((FAILED_STEPS++))

# Ping with failed steps count - DeadManPing validates == 0
curl -X POST "https://deadmanping.com/api/ping/backup-multi?failed_steps=$FAILED_STEPS"

How It Works

1

Your Backup Runs

Your cron job executes your backup script as usual. No changes to your backup logic.

2

Script Sends Ping

At the end of your script, one curl line sends ping with backup data (file size, status, etc.).

3

We Validate & Alert

DeadManPing validates backup data and alerts if backup fails or is missing.

Stop trusting that backups just work.

Monitor backups, not assumptions.

14-day free trial · No credit card required

Learn More

Dead Man Switch for Backups

Complete guide on implementing dead man switch monitoring for backup jobs.

Detect Empty Backup File

How to detect when backup files are empty or zero bytes using payload validation.

DeadManPing

Simple monitoring for your cron jobs and scheduled tasks.

Product

  • Documentation
  • Blog

Account

  • Sign In
  • Sign Up

Contact

  • Contact Us
  • FAQ

Legal

  • Terms of Service
  • Privacy Policy
  • Cookie Policy
  • Analytics Opt-Out

© 2026 DeadManPing. All rights reserved.