Backup Monitoring

Your backup ran successfully.
It backed up nothing.

The most dangerous backup failure isn't a crash — it's a silent one. Job ran, exit 0, ping sent. Zero files copied. DeadManCheck catches what standard monitoring misses.

Start monitoring free → See quickstart
Standard backup monitoring
✓ backup.sh ran at 02:00
✓ Exit code 0
✓ Ping received
Files copied: 0  ·  source path was empty
Alert sent: no
DeadManCheck
✓ backup.sh ran at 02:00
✓ Exit code 0
✓ Ping received
files_copied: 0  ·  assertion: files_copied > 0
⚠ Assertion failed — alert sent

Three ways backups fail silently

Backup stops running

The job never starts. Cron misconfiguration, server rebooted, scheduler broken. You get no ping and no alert — unless you're monitoring for it.

Backup runs too long

A 5-minute backup takes 3 hours. Slow disk, table lock, network issue. Standard monitoring stays green. DeadManCheck alerts when duration drifts from baseline.

📭

Backup runs but copies nothing

Source path empty. Auth expired. Snapshot mounted to wrong directory. Job exits 0, ping sent, dashboard green — until you need to restore and there's nothing there.

Monitor your backup in 3 lines

Wrap your backup script. Send the file count with the ping. Set an assertion. Done.

# Bash — with duration + output monitoring
curl -s https://deadmancheck.io/ping/your-token/start
FILES=$(rsync -av /source/ /backup/ | grep -c "^")
curl -s -X POST https://deadmancheck.io/ping/your-token/end \
-H "Content-Type: application/json" \
-d "{\"files_copied\": $FILES}"
# Python
import requests, subprocess
requests.get("https://deadmancheck.io/ping/your-token/start")
result = run_backup()
requests.post("https://deadmancheck.io/ping/your-token/end",
json={"files_copied": result.count, "size_mb": result.size_mb})

Then set assertion files_copied > 0 in the dashboard. Alert fires if your backup ever runs empty.

Everything you need for backup monitoring

Missing backup alerts
Alert via email, Slack, or webhook when your backup job doesn't check in on schedule.
Duration monitoring
Learns your backup's normal runtime. Alerts when it takes significantly longer — disk issues, slow network, unexpectedly large datasets.
Did it actually back anything up?
Validate files copied, bytes written, or any metric your backup produces. Alert the moment your backup runs empty.
Works with any backup tool
rsync, pg_dump, mysqldump, Restic, Borg, rclone, custom scripts — anything that runs from a shell.

Related guides

Feature
Cron job output monitoring
How output assertions work
Feature
Monitor long-running cron jobs
Catch backups that take far too long
Use case
ETL job monitoring
Monitor data pipelines for silent failures

Know your backup actually worked

Free plan. 5 monitors. No card required. Set up in 5 minutes.

Start monitoring free →

Or self-host for free on GitHub