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
Your Backup Runs
Your cron job executes your backup script as usual. No changes to your backup logic.
Script Sends Ping
At the end of your script, one curl line sends ping with backup data (file size, status, etc.).
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