Систему Arch можно переставить за час, а вот домашний каталог — документы, фото, dotfiles и проекты — не восстановит ни один pacman. Для копирования /home есть три зрелых инструмента с дедупликацией и шифрованием: borg, restic и duplicity. Разберём, чем они отличаются, как запускать их по расписанию и какой выбрать под твою схему.
Система — это набор пакетов: сломался диск — поставил Arch заново, накатил список пакетов и получил ту же систему. Данные в /home так не воссоздаются. Фотографии за десять лет, черновики, исходники проектов, ssh-ключи, конфиги редактора — всё это существует в единственном экземпляре. Потеря диска без копии /home означает потерю лет работы.
При этом /home меняется постоянно: файлы добавляются, правятся, удаляются. Полная копия каждый раз — это терабайты. Поэтому для дома нужен инструмент с дедупликацией: он хранит каждый кусок данных один раз, а повторные бэкапы занимают только место изменений. rsync-схема с --link-dest тоже умеет инкремент, но без шифрования и без встроенной ротации — о ней подробно в статье Резервное копирование Arch: rsync-схема с инкрементом. Здесь — специализированные тулы.
BorgBackup — самый «тяжёлый» из тройки: дедупликация на уровне чанков, сжатие (lz4, zstd, lzma), шифрование AES-256 и инкрементность в одном туле. Репозиторий живёт локально или на ssh-хосте, а каждая команда делает ровно одно дело.
Инициализация репозитория:
borg init --encryption=repokey-blake2 /mnt/backup/borg-home
Флаг --encryption=repokey-blake2 хранит ключ в самом репозитории и защищает его паролем. Первый бэкап:
borg create --stats --compression zstd /mnt/backup/borg-home::home-{now} /home
Имя архива home-{now} подставляет текущую дату. Повторный запуск докачает только изменённые чанки: дедупликация работает между всеми архивами репозитория, поэтому десять бэкапов занимают место одного плюс изменения.
Ротация — borg prune:
borg prune --keep-daily 7 --keep-weekly 4 --keep-monthly 6 /mnt/backup/borg-home
Правило читается так: семь ежедневных, четыре еженедельных, шесть месячных архивов. Старые удаляются сами.
По ssh репозиторий указывается как user@host:/path — borg работает поверх ssh без дополнительных настроек. Минус: borg требует одинаковую версию на клиенте и сервере, а первый бэкап большого /home заметно грузит процессор из-за чанкинга.
Restic — тот же дедуп и снапшоты, но с упором на облако. Из коробки поддерживаются S3, Backblaze B2, Azure, Google Cloud Storage, а через rclone — вообще любой бэкенд, включая Dropbox и Яндекс.Диск. Команды короче, а скорость выше: restic быстрее borg на больших каталогах.
restic init --repo s3:s3.amazonaws.com/bucket-name
restic backup --repo s3:s3.amazonaws.com/bucket-name /home
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 \
--prune --repo s3:s3.amazonaws.com/bucket-name
restic forget с --prune удаляет старые снапшоты и заодно чистит осиротевшие данные. Список снапшотов — restic snapshots, восстановление одного файла — restic restore с флагом --path.
Пароль от репозитория restic держит в переменной окружения RESTIC_PASSWORD, а адрес репозитория — в RESTIC_REPOSITORY. Для локального диска репозиторий — просто путь: restic init --repo /mnt/backup/restic-home.
Duplicity — старейшина тройки. Он не хранит чанки, а делает инкрементные tar-архивы и шифрует их GPG-ключом. Логика простая: полный бэкап — один архив, дальше — только изменения, а восстановление склеивает цепочку.
duplicity /home file:///mnt/backup/duplicity-home
duplicity --encrypt-key 0xABCDEF12 /home s3://bucket/backup
duplicity restore file:///mnt/backup/duplicity-home /home/restore
Шифрование по умолчанию — твоим GPG-ключом, поэтому расшифровать архив сможет только владелец ключа. Облачные хранилища поддерживаются: S3, Backblaze, а для Dropbox и прочих есть обёртка duply, которая добавляет конфиг и расписание.
Когда duplicity уместен: у тебя уже настроен GPG, бэкап нужен «по-старинке» на внешний диск, а скорость не критична. Минусы — медленнее borg и restic на больших объёмах, а восстановление из глубокой цепочки инкрементов занимает заметное время.
| Критерий | Borg | Restic | Duplicity |
|---|---|---|---|
| Дедупликация | чанки | чанки | нет, инкремент tar |
| Шифрование | AES-256, встроенное | AES-256, встроенное | GPG |
| Облачные бэкенды | ssh, локально | S3, B2, rclone и др. | S3, B2, duply |
| Скорость | средняя | высокая | низкая |
| Кривая обучения | средняя | низкая | низкая |
| Ротация | borg prune | restic forget | duply, вручную |
Простая формула выбора:
Все три ставятся из официальных репозиториев: pacman -S borg restic duplicity.
Куда складывать копию:
Автоматизация — systemd-таймер. Скрипт:
#!/bin/bash
# /usr/local/bin/backup-home.sh
set -e
export RESTIC_REPOSITORY=/mnt/backup/restic-home
export RESTIC_PASSWORD="$(cat /etc/restic-pass)"
restic backup /home --exclude /home/*/.cache
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune
Таймер:
# /etc/systemd/system/backup-home.service
[Unit]
Description=Restic backup of /home
[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup-home.sh
# /etc/systemd/system/backup-home.timer
[Unit]
Description=Daily home backup
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timers.target
Включение:
sudo systemctl enable --now backup-home.timer
Persistent=true догоняет пропущенные запуски после выключенного компьютера. Исключай кэши: /home/*/.cache и каталоги браузеров раздувают бэкап без пользы. Перед обновлением системы отдельная лёгкая копия /etc и списков пакетов всё равно нужна — как собрать её за минуту, описано в статье про резервное копирование перед обновлением.
rsync-схема даёт зеркало, в которое можно зайти файловым менеджером, но без шифрования и без встроенной ротации. borg, restic и duplicity шифруют данные и хранят историю версий: можно откатить файл к состоянию недельной давности. Для /home с его постоянными правками история важнее зеркала. Если нужен именно зеркальный доступ — rsync-схема остаётся рабочим вариантом.
Нет. Первый запуск borg create или restic backup сам делает полную копию, дальше — только изменения. Отдельный полный бэкап нужен разве что перед обновлением системы, и то это лёгкая копия /etc и списков пакетов.
borg check проверяет целостность репозитория, restic check — то же для снапшотов. Раз в месяц делай реальное восстановление: вытащи из архива каталог и открой пару файлов. Бэкап, который ни разу не восстанавливали, скорее всего, сломан.
Кэши (/home/*/.cache, ~/.local/share/Trash), каталоги браузеров, виртуальные машины и большие скачанные образы — их проще скачать заново. Оставляй документы, фото, dotfiles, проекты и ssh-ключи.
Для копирования /home borg, restic и duplicity решают одну задачу — дедуплицированная история с шифрованием — но разными путями. Restic проще всех и дружит с любым облаком, borg даёт максимум сжатия на своём ssh-хосте, duplicity встраивается в существующую GPG-инфраструктуру. Ставь любой из трёх, настрой systemd-таймер, исключи кэши и раз в месяц проверяй восстановление — и домашний каталог перестанет быть точкой отказа.
Задай вопрос в чате — отвечаем быстро, по делу и без воды.
Комментарии