PodHeitor SFTP Backup Plugin for Bacula

PodHeitor SFTP Backup Plugin for Bacula

PodHeitor SFTP Backup Plugin for Bacula

Agentless SFTP/SSH backup for Bacula Community Edition — zero deployment on remote hosts (contact us for download and subscription information).

Back up files from any server, NAS, switch, router, or cloud service accessible via SFTP/SSH. No Bacula agent needed on the remote side.

Why SFTP Instead of Mountpoints

Features

  • Agentless — SFTP/SSH only, no software on remote hosts
  • Full / Incremental / Differential — native Bacula levels via mtime comparison
  • Include/Exclude filters — glob-based (*.pdf, *.tmp)
  • Metadata preserved — permissions, UID/GID, timestamps, symlinks
  • Authentication — SSH key (ed25519, RSA, ECDSA), agent forwarding, password
  • Host key verification — MITM protection via known_hosts
  • File listing — estimate, catalog queries, restore browsing
  • Multiple sources — N SFTP servers in a single FileSet
  • Compression & Encryption — Bacula native
  • Metaplugin architecture

Architecture

Use Cases

Network Equipment

VendorModels / OS CiscoCatalyst 9000 (IOS-XE), Nexus (NX-OS), ISR/ASR JuniperEX, QFX, SRX, MX (Junos) MikroTikAll RouterOS devices Arista7000, 7500 series (EOS) HPE ArubaCX switches, Instant AP DellPowerSwitch (OS10) FortinetFortiGate (FortiOS) Palo AltoPA series (PAN-OS) UbiquitiUniFi, EdgeRouter OthersVyOS, OPNsense, pfSense

NAS and Storage

SynologyDiskStation (DSM) QNAPQTS TrueNAS / FreeNASSFTP/SSH built-in AsustorSFTP/SSH available TerraMasterSFTP/SSH available

Cloud SFTP Services

AWS Transfer FamilyManaged SFTP endpoint Azure Blob StorageSFTP access Hetzner Storage BoxSFTP/SSH (port 23) Files.comSFTP native ExaVault / GoAnywhereEnterprise SFTP

Cloud VMs and Hosting

  • AWS EC2, GCP Compute, Azure VMs
  • DigitalOcean, Linode, Vultr, Hetzner Cloud, OVH
  • cPanel/WHM, Plesk, DirectAdmin

Embedded and IoT

  • Raspberry Pi, IoT gateways
  • Devices with limited storage

Requirements

Component MinimumNotes Bacula Community13.0.0+Metaplugin required Python3.6+Backend paramiko2.x+pip3 install paramiko Remote hostSFTP/SSHNo agent needed

Installation

RPM

sudo rpm -ivh podheitor-sftp-fd-plugin-1.0.0-1.el9.x86_64.rpm

From Source

make BACULA_SRC=/path/to/bacula-15.0.3/src
sudo make install PREFIX=/opt/bacula

Arch Linux

makepkg -si

Configuration

Plugin Parameters

ParameterRequiredDefaultDescription hostyes—SFTP server hostname or IP portno22SFTP port useryes—SFTP username passwordno—Password (prefer keyfile) keyfileno—Path to private key passphraseno—Key passphrase pathyes/Remote base directory known_hostsno—known_hosts path verify_hostnoyesVerify host key timeoutno30Timeout seconds includeno—Include glob patterns excludeno—Exclude glob patterns abort_on_errornonoAbort on read error

Quick Start

sudo mkdir -p /etc/bacula/.ssh
ssh-keygen -t ed25519 -f /etc/bacula/.ssh/id_ed25519 -N ""
ssh-copy-id -i /etc/bacula/.ssh/id_ed25519.pub backup@server.local
FileSet {
  Name = "SFTP-Backup"
  Include {
    Options { Signature = SHA256; Compression = LZ4 }
    Plugin = "podheitor-sftp: host=server.local user=backup keyfile=/etc/bacula/.ssh/id_ed25519 path=/data"
  }
}

Multiple Servers

Plugin = "podheitor-sftp: host=web1.prod user=deploy path=/var/www"
Plugin = "podheitor-sftp: host=web2.prod user=deploy path=/var/www"
Plugin = "podheitor-sftp: host=nas.local user=admin path=/volume1/shared"

Restore

bconsole
* restore where=/tmp/sftp-restore select all done yes

File Listing

MethodWhenCommand Before backupPreviewestimate job=… listing After backupCataloglist files jobid=X During restoreBrowserestore → cd / ls

Debugging

export PODHEITOR_DEBUG=1
sudo systemctl restart bacula-fd

Packaging

RHEL / Oracle Linux 9RPM Arch LinuxPKGBUILD Otherbuild-packages.sh

Documentation

  • Complete Technical Manual
  • Commercial Brochure
  • Quick Reference
  • Example Configs

License

GNU Affero General Public License v3.0 (AGPLv3)

Copyright (C) 2025 PodHeitor / Heitor Faria

Disponível em: pt-brPortuguês

Deixe um comentário