How to Monitor Backup Status on Debian 12 Bookworm System

This article provides a step-by-step guide on how to monitor the backup status on a Debian 12 Bookworm system.

Backing up your data is essential, but equally important is knowing that your backups are actually working. Simply setting up a backup system isn’t enough—you need a robust method to monitor and verify that your backups are running as expected. On Debian 12 “Bookworm,” there are several tools and strategies you can use to monitor the status of your backup system, whether you’re using built-in tools like rsync, backup suites like BorgBackup or Restic, or even enterprise-grade solutions.

In this article, we’ll walk you through how to monitor the backup status on a Debian 12 Bookworm system, covering:

  • Common backup tools
  • Logging and log analysis
  • Setting up email alerts
  • Using systemd timers and journal
  • Integrating with Nagios or Prometheus for advanced monitoring
  • Best practices and tips

1. Understanding Your Backup Workflow

Before setting up monitoring, it’s important to define how your backups are configured. Are you backing up locally to another disk, or remotely to a cloud or NAS server? Are you using a cron job or a systemd timer? Are you compressing or encrypting backups?

Some of the most commonly used backup tools on Debian systems include:

  • rsync – efficient file transfer and synchronization tool.
  • BorgBackup – deduplicating, compressed backups.
  • Restic – secure, encrypted backup tool.
  • Duplicity – encrypted, bandwidth-efficient backups.
  • Deja Dup – GUI backup tool for desktop users.
  • Timeshift – snapshot-based backup tool primarily for system files.

Each of these tools has its own method for logging and status reporting, so monitoring methods can vary.


2. Logging Backup Status

Monitoring starts with logging. Ensuring your backup tool is logging its actions is the foundation of any monitoring setup.

a) rsync Example

If you’re using a cron job with rsync, make sure to redirect output to a log file:

rsync -avz /home/user/ /mnt/backup/home/ >> /var/log/rsync-backup.log 2>&1

This command appends output to rsync-backup.log, including any errors.

b) BorgBackup Logging

borg create --stats /mnt/backup::'{hostname}-{now}' /home/user >> /var/log/borg-backup.log 2>&1

Borg provides detailed statistics and error codes. You can parse these logs later for verification.

c) Logrotate Configuration

Large log files can grow fast, so use logrotate to manage them. Create a file under /etc/logrotate.d/:

/var/log/borg-backup.log {
    weekly
    rotate 4
    compress
    missingok
    notifempty
}

This keeps your log file from consuming too much space over time.


3. Using Cron or Systemd Timers

Most users schedule backups using cron, but systemd timers are becoming more popular in newer Debian systems due to their integration with journald.

a) Checking Cron Jobs

If your backup is scheduled in crontab, list it with:

crontab -l

To monitor its output, make sure the cron job logs output somewhere or emails it to you:

MAILTO=your@email.com
0 2 * * * /usr/local/bin/backup-script.sh >> /var/log/backup.log 2>&1

b) Using systemd Timers

If you’ve moved to systemd for backups, use systemctl to inspect timer and service status:

systemctl status backup.timer
journalctl -u backup.service

Systemd will report exit codes and timestamps of the last and next runs, which are helpful in identifying failures.

Example service file: /etc/systemd/system/backup.service

[Unit]
Description=Daily backup using rsync

[Service]
ExecStart=/usr/local/bin/backup.sh

Timer file: /etc/systemd/system/backup.timer

[Unit]
Description=Run backup script daily

[Timer]
OnCalendar=daily
Persistent=true

[Install]
WantedBy=timers.target

Enable it:

sudo systemctl enable --now backup.timer

Monitor with:

systemctl list-timers --all

4. Parsing Logs for Failures

You can use simple shell scripts or tools like grep, awk, or logwatch to parse logs and extract useful info.

Example: Check if “error” appeared in last night’s rsync log.

grep -i error /var/log/rsync-backup.log

You can also write a basic monitoring script:

#!/bin/bash
LOGFILE="/var/log/rsync-backup.log"
if grep -i error "$LOGFILE"; then
    echo "Backup failed! Check the log at $LOGFILE" | mail -s "Backup Failure Alert" user@example.com
else
    echo "Backup successful on $(date)" >> /var/log/backup-status.log
fi

Schedule it to run after your backup job via cron.


5. Email Notifications and Alerts

For backup verification, email notifications are essential.

Install mailutils:

sudo apt install mailutils

Then in your script:

echo "Backup completed successfully" | mail -s "Backup Success" you@example.com

For failure notifications, conditionally send an alert:

if [ $? -ne 0 ]; then
    echo "Backup failed" | mail -s "Backup Failure" you@example.com
fi

6. Advanced Monitoring with Nagios or Prometheus

If you’re running multiple systems or want more advanced monitoring, consider integrating with:

a) Nagios or Icinga

Use custom check scripts to validate backup timestamps, log entries, or presence of latest snapshots.

Example Nagios check:

#!/bin/bash
LAST_BACKUP=$(stat -c %Y /mnt/backup/home | awk '{print int((systime() - $1)/3600)}')

if [ $LAST_BACKUP -gt 24 ]; then
    echo "CRITICAL: Last backup was $LAST_BACKUP hours ago."
    exit 2
else
    echo "OK: Last backup was $LAST_BACKUP hours ago."
    exit 0
fi

Set up on Nagios with appropriate thresholds.

b) Prometheus + Node Exporter

Prometheus can track timestamp files or snapshot times. You can export the backup timestamp via a custom script to a file that Node Exporter reads via the textfile collector.

Example:

#!/bin/bash
echo "backup_last_run_timestamp $(date +%s)" > /var/lib/node_exporter/textfile_collector/backup.prom

Then, alert in Prometheus if the timestamp is older than expected.


7. Using Backup Software Built-in Checks

Some backup software has built-in integrity checks. Take advantage of them:

Borg

borg check /mnt/backup

Run this periodically (weekly or monthly) to verify that your archives are intact.

Restic

restic check

Add this to a scheduled script and log the results.


8. Desktop Notifications (Optional)

For GUI users, you can use notify-send to pop up a desktop message after a backup completes:

notify-send "Backup Completed" "Your daily backup finished successfully."

You’ll need libnotify-bin installed:

sudo apt install libnotify-bin

9. Best Practices

  • Test your restore process regularly: Monitoring backups is half the battle; testing restores is the other.
  • Keep offsite backups: Store copies on cloud or remote servers.
  • Use retention policies: Avoid disk clutter with automated pruning.
  • Use encryption: Especially for remote or offsite storage.
  • Automate and verify: Manual backups are prone to failure; automate, monitor, and verify consistently.

Final Thoughts

Debian 12 Bookworm offers a modern and flexible environment for backup automation and monitoring. Whether you rely on simple cron-based rsync or use advanced tools like Borg or Restic, implementing a solid monitoring routine ensures your data is truly protected.

Start with good logging, add email alerts or integrations with monitoring tools, and regularly test your restores. Your future self will thank you in the event of hardware failure or accidental data loss.

With the right strategy, you’ll never have to wonder whether your backups are working—you’ll know.