Что такое restic?
restic — это быстрая, экономная и надёжная программа резервного копирования. Она режет файлы на блоки, границы которых определяет само содержимое, и хранит каждый блок один раз, поэтому вторая копия почти не изменившегося каталога передаёт почти ничего. Всё шифруется и аутентифицируется на вашей машине, AES-256 и Poly1305-AES, до того как её покинет первый байт: репозиторий может лежать там, где вы не доверяете хранилищу полностью. Снимки только дописываются, их можно перечислить, сравнить, смонтировать как файловую систему и восстановить по одному файлу — на каждое действие по команде и ни одного конфигурационного файла.
prune и check, снижение расхода памяти на больших репозиториях и новые бэкенды. Версия в стабильном Debian отстаёт на годы: репозиторий, записанный свежим restic, может оказаться нечитаемым для старого, поэтому машина, которая восстанавливает, должна быть не старше той, которая делала копию. Держать везде текущий выпуск — самый простой способ это обеспечить.
⚡ Ключевые возможности restic
🧩 Дедупликация, которая действительно работает
Нарезка по содержимому означает, что неизменённый файл, перемещённый файл и файл, который есть на десяти машинах, хранятся один раз. Ежедневные снимки одного дерева стоят разницы, а не всего дерева.
🔐 Шифрование до отправки
AES-256 для содержимого и Poly1305-AES для аутентификации, всё на клиенте. В репозитории нет ни открытого текста, ни неаутентифицированных данных: враждебное хранилище может потерять вашу копию, но не прочитать и не подделать её.
☁️ Бэкенды на любой случай
Локальный каталог, SFTP, REST-сервер, Amazon S3 и всё S3-совместимое, OpenStack Swift, Backblaze B2, Azure Blob Storage, Google Cloud Storage — и всё остальное через rclone.
📸 Снимки, по которым можно ходить
restic snapshots покажет список, restic diff — разницу между двумя, а restic mount положит все снимки под каталог, и один файл вы достанете обычным cp.
🧹 Хранение и очистка
forget --keep-daily/--keep-weekly/--keep-monthly записывает политику хранения прямо так, а --prune потом возвращает место внутри репозитория.
🔎 Проверяемые репозитории
restic check проверяет структуру репозитория, а --read-data перечитывает и заново сверяет каждый pack-файл, так что «копия есть» и «копия цела» — два вопроса, на которые действительно можно ответить.
apt upgrade держит вас на последней версии.
📦 Установка из deb.griffo.io
Шаг 1: Добавить репозиторий
sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | sudo gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | sudo tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
sudo apt updateinstall -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
apt update🆓 Есть вечно бесплатное зеркало. deb-free.griffo.io раздаёт пакеты бесплатно навсегда — без аккаунта, без подписки, не более 2 месяцев позади upstream, исправления безопасности сразу. Сейчас там cliamp, Ghostty, lazydocker, Oh My Posh и Zed; restic среди них нет, поэтому репозиторий выше — единственный способ установить его сегодня; попросите, и его можно добавить.
Шаг 2: Установить restic
# Установить последнюю версию restic
sudo apt install restic
# Проверить установку
restic version# Установить последнюю версию restic
apt install restic
# Проверить установку
restic versionШаг 3: Создать первый репозиторий
# Репозиторий — это каталог, локальный или удалённый. Придумайте пароль и
# сохраните его: без него данные потеряны, и это сделано намеренно.
restic init --repo /srv/backup/restic
# Сделать копию
restic -r /srv/backup/restic backup ~/Documents
# Посмотреть, что получилось
restic -r /srv/backup/restic snapshots
# Man-страницы и дополнения для bash, fish и zsh идут в пакете
man restic🎯 Базовые примеры использования
Резервное копирование:
# Держите пароль в файле, а не набирайте его в каждой команде
echo 'длинная парольная фраза' | sudo tee /etc/restic-password > /dev/null
sudo chmod 600 /etc/restic-password
export RESTIC_REPOSITORY=/srv/backup/restic
export RESTIC_PASSWORD_FILE=/etc/restic-password
# Скопировать несколько путей, пропуская то, что не нужно при восстановлении
restic backup ~/Documents ~/Pictures --exclude '**/node_modules' --exclude '*.iso'
# Или управлять из файла, по шаблону на строку
restic backup ~ --exclude-file ~/.config/restic-excludes --exclude-caches
# Пометить снимок, чтобы найти его потом
restic backup /etc --tag config --tag "$(hostname)"# Держите пароль в файле, а не набирайте его в каждой команде
echo 'длинная парольная фраза' | tee /etc/restic-password > /dev/null
chmod 600 /etc/restic-password
export RESTIC_REPOSITORY=/srv/backup/restic
export RESTIC_PASSWORD_FILE=/etc/restic-password
# Скопировать несколько путей, пропуская то, что не нужно при восстановлении
restic backup ~/Documents ~/Pictures --exclude '**/node_modules' --exclude '*.iso'
# Или управлять из файла, по шаблону на строку
restic backup ~ --exclude-file ~/.config/restic-excludes --exclude-caches
# Пометить снимок, чтобы найти его потом
restic backup /etc --tag config --tag "$(hostname)"Восстановление и просмотр:
# Что лежит в репозитории
restic snapshots
restic ls latest /etc
# Восстановить всё из самого свежего снимка
restic restore latest --target /tmp/restore
# Или только те пути, которые действительно потеряны
restic restore latest --target / --include /etc/nginx
# Смонтировать всю историю и вытащить файл руками (нужен FUSE)
sudo apt install fuse3
mkdir -p ~/mnt/backup
restic mount ~/mnt/backup
# Что изменилось между двумя снимками
restic diff 1a2b3c4d 5e6f7a8b# Что лежит в репозитории
restic snapshots
restic ls latest /etc
# Восстановить всё из самого свежего снимка
restic restore latest --target /tmp/restore
# Или только те пути, которые действительно потеряны
restic restore latest --target / --include /etc/nginx
# Смонтировать всю историю и вытащить файл руками (нужен FUSE)
apt install fuse3
mkdir -p ~/mnt/backup
restic mount ~/mnt/backup
# Что изменилось между двумя снимками
restic diff 1a2b3c4d 5e6f7a8bУдалённые репозитории:
# SFTP: любая машина, куда вы и так заходите по ssh
restic -r sftp:backup@nas:/srv/restic init
# S3 и всё S3-совместимое, включая свои Garage или MinIO
export AWS_ACCESS_KEY_ID=... AWS_SECRET_ACCESS_KEY=...
restic -r s3:https://s3.example.com/backups init
# Backblaze B2
export B2_ACCOUNT_ID=... B2_ACCOUNT_KEY=...
restic -r b2:my-bucket:backups init
# Всё, до чего дотягивается rclone, то есть всё остальное
restic -r rclone:mydrive:backups initХранение, очистка и проверка:
# Политика хранения для всего репозитория
restic forget --keep-daily 7 --keep-weekly 5 --keep-monthly 12 --prune
# Сначала вхолостую, потому что forget удаляет снимки
restic forget --keep-daily 7 --dry-run
# Проверка структуры, дешёвая, запускайте часто
restic check
# Перечитать и сверить выборку реальных данных, дорого, раз в месяц
restic check --read-data-subset 10%
# Куда уходит место
restic stats --mode raw-data🔧 Интеграция с другими инструментами
restic рассчитан на то, что им управляет то, что у вас и так работает:
- systemd: сервис плюс таймер — обычная схема без присмотра;
RESTIC_REPOSITORYиRESTIC_PASSWORD_FILEзадают в юните, а не в профиле оболочки - rclone: бэкенд
rclone:даёт restic всех провайдеров, которых поддерживает rclone, при том что сам restic ни одного из них не знает - FUSE:
fuse3(илиfuse) превращаетrestic mountв каталог со всеми снимками — самый быстрый способ достать один файл - rest-server: собственный HTTP-бэкенд проекта с режимом «только дописывание», чтобы взломанный клиент не смог удалить сделанные им копии
- Базы данных:
--stdinпринимает дамп со стандартного ввода, так чтоpg_dump … | restic backup --stdin --stdin-filename db.sqlвообще не трогает диск
🚀 Почему стоит выбрать deb.griffo.io?
- Официальный Ubuntu: restic есть в universe, но он заморожен на момент выпуска, так что LTS может отставать на годы работы над репозиторием и очисткой
- Бинарник upstream: свежий, но это сжатый bzip2 файл, который вы сами распаковываете в
/usr/local/binмимо apt и потом обновляете черезrestic self-update - Snap: в песочнице, из-за чего копирование путей вне домашнего каталога и монтирование снимков сложнее, чем должно быть
- deb.griffo.io: последняя версия с автоматическими обновлениями
- ✅ Тот же пакет, но новее: то же имя, та же секция и те же пути, что и у собственного
resticв Ubuntu, — это замена, а не вторая установка - ✅ Проверенные сборки upstream: каждый бинарник сверяется с
SHA256SUMSот upstream, а сам этот файл — с ключом выпусков restic, ещё до упаковки - ✅ Автоматические обновления: пакеты обновляются в течение нескольких часов после релиза upstream
- ✅ Полный пакет: официальный бинарник upstream, полный набор man-страниц (
restic.1плюс по одной на подкоманду) и дополнения для bash, fish и zsh - ✅ Шесть архитектур: amd64, arm64, armhf, ppc64el, s390x и riscv64 — на NAS, Pi и мейнфрейме один и тот же restic
- ✅ Много дистрибутивов: работает на Ubuntu 22.04, 24.04, 25.10 и 26.04
- ✅ Простое обслуживание: обновления обычными командами apt
📦 Репозиторий сборки пакета
Пакеты для Ubuntu собираются и поддерживаются автоматически в этом репозитории GitHub:
- 💾 restic-debian - Сборки последних выпусков
🔗 Похожие пакеты
Также доступны в deb.griffo.io:
- rclone - Бэкенд, который открывает restic всех остальных провайдеров
- Garage - Собственное S3-хранилище, куда положить репозиторий
- Zellij - Мультиплексор, чтобы долгая первая копия не прервалась
- bottom - Посмотреть, что большая копия делает с машиной
