Automated Rclone + Logrotate Setup on Raspberry Pi for PBS Offsite Backups

This guide explains how to configure a Raspberry Pi to automatically sync Proxmox Backup Server (PBS) data to Backblaze B2 using rclone, and manage logs with logrotate.


๐Ÿงฑ Setup Overview

  • Source: /mnt/pbs-data/ (mounted via NFS from PBS server)
  • Destination: Backblaze B2 bucket via rclone
  • Logs: Stored in /var/log/rclone/
  • Email Alerts: Sent using msmtp
  • User: Replace with your actual non-root username (e.g., backupuser)

๐Ÿ“ Folder Structure

  • pbs-data is shared via NFS from the PBS VM
  • Mounted on Raspberry Pi at /mnt/pbs-data/
  • Ensure correct ownership:
sudo chown -R 1000:1000 /mnt/pbs-data

๐Ÿ” Rclone Script

Create the script at /usr/local/sbin/pbs-backblaze-sync.sh:

#!/bin/bash
# Author: BackupUser
# Purpose: Nightly PBS backup upload to Backblaze B2 from Raspberry Pi

# === CONFIG ===
SRC="/mnt/pbs-data/"
DEST="b2pbs:packetrealm-backup-bucket/proxmox-backup-sync"
DATE=$(date +%Y-%m-%d)
LOGDIR="/var/log/rclone"
LOGFILE="$LOGDIR/rclone-b2-$DATE.log"
TO="[email protected]"
FROM="[email protected]"

mkdir -p "$LOGDIR"
touch "$LOGFILE"
chmod 644 "$LOGFILE"

# === EXECUTE ===
echo "========== PBS โ†’ Backblaze Sync Started at $(date) ==========" | tee -a "$LOGFILE"

rclone copy "$SRC" "$DEST" \
  --config /home/backupuser/.config/rclone/rclone.conf \
  --progress \
  --transfers=1 \
  --checkers=2 \
  --contimeout=60s \
  --timeout=5m \
  --retries=10 \
  --low-level-retries=10 \
  --log-file="$LOGFILE" \
  --verbose

echo "========== Sync Complete at $(date) ==========" | tee -a "$LOGFILE"

# === EMAIL REPORT ===
SUBJECT_SUCCESS="โœ… PBS โ†’ Backblaze Success - $DATE"
SUBJECT_FAIL="โŒ PBS โ†’ Backblaze Failure - $DATE"

sync
sleep 1

if grep -Ei "error|fail|cannot" "$LOGFILE" > /dev/null; then
  SUBJECT="$SUBJECT_FAIL"
else
  SUBJECT="$SUBJECT_SUCCESS"
fi

msmtp -a default -t <<EOF
To: $TO
From: $FROM
Subject: $SUBJECT
Content-Type: text/plain

PBS backup log for $DATE:

$(cat "$LOGFILE")

EOF

echo "========= Email Notification Sent! $(date) =========="

Make the script executable:

sudo chmod +x /usr/local/sbin/pbs-backblaze-sync.sh

๐Ÿ•’ Crontab Entry

Edit crontab for your backup user:

crontab -e

Add:

0 4 * * * /bin/bash /usr/local/sbin/pbs-backblaze-sync.sh -v

๐Ÿ“ฆ Logrotate Setup

Create a logrotate config:

sudo nano /etc/logrotate.d/rclone

Paste:

/var/log/rclone/*.log {
    daily
    rotate 30
    missingok
    notifempty
    compress
    delaycompress
    copytruncate
}

Test it manually:

sudo logrotate -f /etc/logrotate.d/rclone

โœ… Summary

  • Logs are emailed daily (optional, tweak via msmtp config)
  • No root permissions needed for execution (runs under non-root user)
  • Logs are automatically rotated and compressed to save space