Title: πŸ—„οΈ BorgBackup β€” Deduplicating Backups Group: Backups & S3 Icon: πŸ—„οΈ Order: 3 ## Table of Contents - [Installation & Configuration](#installation--configuration) - [Repository Management](#repository-management) - [Create Archives](#create-archives) - [List & Info](#list--info) - [Extract & Restore](#extract--restore) - [Pruning & Retention](#pruning--retention) - [Compression & Encryption](#compression--encryption) - [Remote Repositories](#remote-repositories) - [Mount Archives](#mount-archives) - [Performance & Deduplication](#performance--deduplication) - [Sysadmin Operations](#sysadmin-operations) - [Troubleshooting](#troubleshooting) --- ## Installation & Configuration ### Install # Debian/Ubuntu apt install borgbackup # Install borg / Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ borg # RHEL/AlmaLinux/Rocky dnf install borgbackup # Install borg / Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ borg # From binary / Из Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠ° wget https://github.com/borgbackup/borg/releases/download/1.2.6/borg-linux64 chmod +x borg-linux64 mv borg-linux64 /usr/local/bin/borg ### Initialize Repository borg init --encryption=repokey /backup # Init with repokey encryption / Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ с repokey ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ borg init --encryption=keyfile /backup # Init with keyfile encryption / Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ с keyfile ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ borg init --encryption=none /backup # Init without encryption / Π‘Π΅Π· ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ --- ## Repository Management borg info /backup # Repository info / Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ borg list /backup # List archives / Бписок Π°Ρ€Ρ…ΠΈΠ²ΠΎΠ² borg check /backup # Check repository / ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ borg check --repository-only /backup # Quick check / Быстрая ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° borg compact /backup # Free disk space / ΠžΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ‚ΡŒ мСсто Π½Π° дискС ### Key Management borg key export /backup backup.key # Export key / Π­ΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡ borg key import /backup backup.key # Import key / Π˜ΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡ borg key change-passphrase /backup # Change passphrase / Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ --- ## Create Archives ### Basic Backup borg create /backup::archive-{now} /var/www # Create archive / Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΠ² borg create /backup::daily-{now:%Y-%m-%d} /data # With date / Π‘ Π΄Π°Ρ‚ΠΎΠΉ borg create /backup::backup-{hostname}-{now} /data # With hostname / Π‘ hostname ### Advanced Options borg create /backup::archive-{now} /data \ --exclude '*.tmp' \ --exclude '*.log' \ --exclude 'node_modules' # With excludes / Π‘ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΠΌΠΈ borg create /backup::archive-{now} /data \ --stats \ --progress \ --compression lz4 # With options / Π‘ опциями ### Exclude Patterns borg create /backup::archive-{now} /home \ --exclude-from exclude.txt # Exclude file / Π€Π°ΠΉΠ» ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ # exclude.txt example: *.tmp *.log *.cache node_modules/ .git/ --- ## List & Info borg list /backup # List archives / Бписок Π°Ρ€Ρ…ΠΈΠ²ΠΎΠ² borg list /backup::archive-name # List archive contents / Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ Π°Ρ€Ρ…ΠΈΠ²Π° borg list /backup --short # Short list / ΠšΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ список borg list /backup --sort-by timestamp # Sort by time / Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ borg info /backup::archive-name # Archive info / Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎΠ± Π°Ρ€Ρ…ΠΈΠ²Π΅ borg info /backup::archive-name --stats # With statistics / Π‘ΠΎ статистикой borg diff /backup::archive1 archive2 # Compare archives / Π‘Ρ€Π°Π²Π½ΠΈΡ‚ΡŒ Π°Ρ€Ρ…ΠΈΠ²Ρ‹ --- ## Extract & Restore ### Full Restore borg extract /backup::archive-name # Extract to current dir / Π˜Π·Π²Π»Π΅Ρ‡ΡŒ Π² Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ borg extract /backup::latest # Extract latest / Π˜Π·Π²Π»Π΅Ρ‡ΡŒ послСдний ### Partial Restore borg extract /backup::archive-name /var/www # Extract specific path / Π˜Π·Π²Π»Π΅Ρ‡ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ borg extract /backup::archive-name --dry-run # Simulate extraction / Бимуляция извлСчСния borg extract /backup::archive-name --numeric-ids # Preserve numeric IDs / Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ числовыС ID --- ## Pruning & Retention ### Prune Archives borg prune /backup --keep-daily=7 # Keep 7 daily / Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ 7 Π΄Π½Π΅Π²Π½Ρ‹Ρ… borg prune /backup --keep-weekly=4 # Keep 4 weekly / Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ 4 Π½Π΅Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… borg prune /backup --keep-monthly=12 # Keep 12 monthly / Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ 12 мСсячных ### Combined Retention Policy borg prune /backup \ --keep-daily=7 \ --keep-weekly=4 \ --keep-monthly=6 \ --keep-yearly=2 # Full retention policy / Полная ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° хранСния borg prune /backup --dry-run --list --stats # Preview prune / ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ удалСния ### Delete Archive borg delete /backup::archive-name # Delete specific archive / Π£Π΄Π°Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ Π°Ρ€Ρ…ΠΈΠ² borg delete /backup --stats # Delete repo (careful!) / Π£Π΄Π°Π»ΠΈΡ‚ΡŒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ (остороТно!) --- ## Compression & Encryption ### Compression Levels borg create /backup::archive-{now} /data --compression none # No compression / Π‘Π΅Π· сТатия borg create /backup::archive-{now} /data --compression lz4 # Fast (default) / БыстроС (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ) borg create /backup::archive-{now} /data --compression zstd # Balanced / БбалансированноС borg create /backup::archive-{now} /data --compression zstd,10 # High compression / ВысокоС сТатиС borg create /backup::archive-{now} /data --compression lzma,6 # Max compression / МаксимальноС сТатиС ### Encryption Modes # repokey β€” Key stored in repo / ΠšΠ»ΡŽΡ‡ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ borg init --encryption=repokey /backup # keyfile β€” Key stored locally (~/.config/borg/keys/) / ΠšΠ»ΡŽΡ‡ локально borg init --encryption=keyfile /backup # authenticated β€” Authenticated only, no encryption / Волько аутСнтификация, Π±Π΅Π· ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ borg init --encryption=authenticated /backup --- ## Remote Repositories ### SSH borg init --encryption=repokey ssh://@/backup # SSH repo / SSH Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ borg create ssh://@/backup::archive-{now} /data # Backup over SSH / Бэкап Ρ‡Π΅Ρ€Π΅Π· SSH export BORG_REPO=ssh://@/backup borg create ::archive-{now} /data # Use env var / Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ окруТСния ### S3 (via rclone) # Setup rclone remote first / Π‘Π½Π°Ρ‡Π°Π»Π° Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ rclone remote rclone mount s3:bucket /mnt/s3-borg --daemon borg init --encryption=repokey /mnt/s3-borg/backup --- ## Mount Archives borg mount /backup /mnt/borg # Mount all archives / ΠœΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС Π°Ρ€Ρ…ΠΈΠ²Ρ‹ borg mount /backup::archive-name /mnt/borg # Mount specific archive / ΠœΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ Π°Ρ€Ρ…ΠΈΠ² borg umount /mnt/borg # Unmount / Π Π°Π·ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ # Browse as regular filesystem / ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ ΠΊΠ°ΠΊ обычная файловая систСма ls /mnt/borg/ cd /mnt/borg/archive-name/var/www/ --- ## Performance & Deduplication ### Deduplication Stats borg info /backup # Show dedupe stats / ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ статистику Π΄Π΅Π΄ΡƒΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ borg info /backup::archive-name --stats # Archive-specific stats / Бтатистика Π°Ρ€Ρ…ΠΈΠ²Π° ### Performance Tuning borg create /backup::archive-{now} /data \ --checkpoint-interval 600 # Checkpoint every 10min / ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ Ρ‚ΠΎΡ‡ΠΊΠ° ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 10ΠΌΠΈΠ½ borg create /backup::archive-{now} /data \ --chunker-params 19,23,21,4095 # Custom chunking / ΠšΠ°ΡΡ‚ΠΎΠΌΠ½ΠΎΠ΅ Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ --- ## Sysadmin Operations ### Systemd Timer #### /etc/systemd/system/borg-backup.service [Unit] Description=Borg Backup After=network.target [Service] Type=oneshot Environment="BORG_REPO=/backup" Environment="BORG_PASSPHRASE=" ExecStart=/usr/bin/borg create --stats --compression lz4 ::daily-{now:%%Y-%%m-%%d} /var/www /etc ExecStart=/usr/bin/borg prune --keep-daily=7 --keep-weekly=4 --keep-monthly=6 ExecStart=/usr/bin/borg compact [Install] WantedBy=multi-user.target #### /etc/systemd/system/borg-backup.timer [Unit] Description=Borg Backup Timer Requires=borg-backup.service [Timer] OnCalendar=daily Persistent=true [Install] WantedBy=timers.target #### Enable systemctl daemon-reload # Reload systemd / ΠŸΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ systemd systemctl enable borg-backup.timer # Enable timer / Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ systemctl start borg-backup.timer # Start timer / Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ ### Environment Variables export BORG_REPO=/backup # Default repo / Π Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ export BORG_PASSPHRASE= # Passphrase / ΠŸΠ°Ρ€ΠΎΠ»ΡŒ export BORG_RELOCATED_REPO_ACCESS_IS_OK=yes # Allow relocated repo / Π Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Ρ‘Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ### Configuration Paths ~/.config/borg/keys/ # Key storage (keyfile mode) / Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ~/.cache/borg/ # Cache directory / ДирСктория кэша --- ## Troubleshooting ### Common Errors # "Failed to create/acquire the lock" / "НС ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ/ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ" borg break-lock /backup # Remove stale lock / Π£Π΄Π°Π»ΠΈΡ‚ΡŒ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΡƒΡŽ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ # "Repository was relocated" / "Π Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π±Ρ‹Π» ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Ρ‘Π½" export BORG_RELOCATED_REPO_ACCESS_IS_OK=yes borg list /backup ### Repair Operations borg check /backup # Check integrity / ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ borg check --repair /backup # Repair repository / Π’ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ borg compact /backup # Compact after repair / Π£ΠΏΠ°ΠΊΠΎΠ²Π°Ρ‚ΡŒ послС восстановлСния ### Verbose Output borg create /backup::archive-{now} /data -v # Verbose / ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄ borg create /backup::archive-{now} /data --debug # Debug / ΠžΡ‚Π»Π°Π΄ΠΊΠ° borg create /backup::archive-{now} /data --list # List processed files / Бписок ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ### Performance Issues borg create /backup::archive-{now} /data --one-file-system # Don't cross filesystems / НС ΠΏΠ΅Ρ€Π΅ΡΠ΅ΠΊΠ°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ систСмы borg create /backup::archive-{now} /data --read-special # Backup special files / Бэкап ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²