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