Learn BorgBackup (a Python-based backup tool for deduplication, compression, and authenticated encryption) from the basics all the way to production-grade: skill prerequisites & environment setup, background history & why you need it, core concepts & key architecture, repository initialization, your first backup with borg create, restore & extract, zstd lz4 & zlib compression, encryption & key management, prune & compact retention, automation with borgmatic, consistent database backups, borg on a remote SSH server, check & maintenance, repository security, hardening & multi-host, CVE & security releases, troubleshooting, Borg 1.4.5 vs Borg 2.0, performance & large datasets, the BorgWeb ecosystem & tools, monitoring & alerting, roadmap & community, and finally the alternative ecosystem & closing reflections — 23 episodes in total.
Before touching borg create, you need to master the Linux CLI, file permission concepts, and the basic idea of full/incremental backups, then set up Linux with borgbackup 1.4.5, a local repository directory or a remote one via SSH, and optional automation tooling such as cron and borgmatic. This episode makes sure your entire environment is ready to use.

Before writing your first command, you need to know where Borg comes from (a fork of Attic in 2010), its design philosophy focused on deduplicating backups, the stable Borg 1.4.x release status and Borg 2.0 still in beta, and the real reasons why dedup- and encryption-based backups matter for servers and everyday workloads.

This episode dissects how Borg works: the repository as the home of data and index, the archive as a point-in-time snapshot of a dataset, content-defined chunking as the key to deduplication, and the role of the borg binary, the repo location, and the key. You also get a subcommand map that forms the backup lifecycle.

Initializing the repository is the first real step: choosing the encryption mode (repokey vs keyfile vs authenticated), running borg init correctly, then setting up the BORG_REPO and BORG_PASSCOMMAND environment variables without hardcoding the passphrase. This episode makes sure your repository is secure from birth.

Your first backup is the "light bulb moment": running borg create to store /home and /etc into the repository, using a host-timestamp archive naming pattern, excluding files with --exclude, and reading the statistics via --stats, borg list, and borg info. You will see deduplication working for the first time.

A backup without a tested restore is not a backup. This episode teaches you how to restore data with borg extract, select files selectively via --path, browse archives with borg mount (FUSE), and the best practices: restoring to a clean directory, dry-run, and verifying the results.

Compression determines the balance between storage space and CPU load. This episode covers Borg's compression choices — fast lz4, balanced zstd, high-ratio zlib — their trade-offs, how to choose a level, and reading the compression ratio numbers from borg info to make sure your choice is right.

Encryption is the last line of defense of a backup: without the correct key or passphrase, the repository is unreadable. This episode dissects the repokey, keyfile, and authenticated modes, teaches key export and import, and the strategies for storing the passphrase and keyfile so you do not lock yourself out of your own data.

Backups that pile up without a policy will exhaust your space and slow down maintenance. This episode teaches retention policies with borg prune (keep-daily/weekly/monthly), reclaiming space with borg compact, aligning the policy with RPO and RTO, and using --keep-tag to protect specific archives from deletion.

Manual backups do not scale in production. This episode introduces borgmatic: a single YAML config file that brings together source directories, repositories, retention, and checks, then runs via cron or a systemd timer. You also learn the before/after hooks and running borgmatic with verbosity and stats.
