restic

Проект restic, автор Alexander Neumann · лицензия BSD-2-Clause

Делает зашифрованные резервные копии папки проекта, сайта или выгрузки и хранит историю версий. Агент сам сохранит копию, покажет, что изменилось, и вернёт нужную версию файла.

macOS · Windows · LinuxНа компьютере, на сервере и в контейнереБесплатно, BSD-2-Clause

✓ Проверено 14.10.2026: Ubuntu 24.04 (x86_64) в одноразовом контейнере Docker на сервере, от root: restic 0.19.1 из готового файла со страницы выпуска на GitHub, bzip2 из apt для распаковки, хранилище в локальной папке. Что именно проверяли

Установить агентом ↓

Какую задачу решает

Сохраняет резервные копии папок в хранилище, которое restic шифрует своим паролем: в папке на другом диске, на сервере по SFTP, в хранилище S3 или в облаке через rclone. Каждая копия остаётся отдельной версией, повторная копия дописывает только изменённое. Окон у программы нет, агент сам сохраняет копию, сравнивает версии и возвращает нужную.

  • Сохраняет копию папки проекта командой restic backup, лишнее вроде node_modules отсекает ключом --exclude. В прогоне после трёх изменений в папке вторая копия записала в хранилище 1,196 КиБ новых данных.
  • Показывает список копий и разницу между двумя из них (restic diff): какие файлы появились, изменились и пропали.
  • Возвращает всю папку или один файл из любой копии в отдельную папку командой restic restore. В прогоне восстановленные файлы совпали с исходными по sha256.
  • Проверяет хранилище командой restic check, с ключом --read-data читает все данные целиком.
  • Удаляет старые копии по правилу, например оставить последние 7 ежедневных (restic forget). С --dry-run сначала показывает, что уберёт.

Пример результата

Говоришь агенту

Сохрани папку проекта в хранилище restic на внешнем диске, без node_modules и .env. Пароль я сам положил в файл ~/.restic-pass. Потом я поправлю файлы, а ты сделай вторую копию, покажи разницу и верни первую версию в новую папку restore1.

Что получится

Мы прогнали этот сценарий на тестовой папке из пяти файлов вместе с .env и node_modules, хранилище лежало в соседней папке, пароль в тестовом файле. Первая копия заняла меньше секунды, в неё не попали .env и node_modules. Потом мы поправили один файл, удалили второй и добавили третий. Для второй копии restic сообщил 1,736 КиБ добавленных данных (1,196 КиБ в сохранённом виде), restic diff показал все три изменения. Первая версия вернулась в отдельную папку, и контрольные суммы совпали с исходными. Тестовой строки из файлов в хранилище не нашлось, данные лежат там в зашифрованном виде.

Паспорт

Кто делает
Проект restic, автор Alexander Neumann
Сайт
restic.net
Исходный код
github.com/restic/restic
Лицензия
BSD-2-Clause
Версия
0.19.1 на 14.10.2026
Системы
macOS · Windows · Linux
Где работает
На компьютере, на сервере и в контейнере
Цена
Бесплатно
Проверка
Проверено 14.10

Установить агентом

Для Claude Code, Codex, Hermes и любого агента с терминалом
Установи программу «restic». Работай по шагам и после каждого коротко говори, что сделал.

Что это за программа (каталог smyslokod.ru, официальные источники сверены 14.10.2026):
- официальный сайт: https://restic.net/
- исходный код: https://github.com/restic/restic
- инструкция по установке: https://restic.readthedocs.io/en/v0.19.1/020_installation.html
- актуальная версия на 14.10.2026: 0.19.1
- лицензия: BSD-2-Clause
- для работы нужно (обязательно): Место для хранилища - папка на другом диске, сервер с SSH или хранилище S3. README проекта пишет, что копия на той же машине - плохая стратегия резервного копирования
- для работы нужно (в отдельных случаях): Ключи хранилища S3 или вход по ключу SSH - только для хранилища в облаке или на сервере: ключи S3 человек кладёт в переменные AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY сам, для копий по SFTP без участия человека нужен вход по SSH без запроса пароля, например по ключу
- для работы нужно (в отдельных случаях): bzip2 - только для установки готового файла на Linux: файл выпуска сжат bzip2. В нашем контейнере его не было, поставили из apt
- для работы нужно (в отдельных случаях): rclone - только если хранилище лежит в облаке, с которым restic сам не работает, например на Яндекс Диске: restic запускает rclone и пишет через него

Правила:
1. Ничего не устанавливай и не меняй, пока я не скажу «да» на твой план.
2. Ставь только способами из этого промпта. Сторонние сборки, скрипты с форумов и из чужих репозиториев не бери.
3. Мои проекты не трогай: не меняй их файлы, виртуальные окружения и списки зависимостей (package.json, requirements.txt, pyproject.toml).
4. Команды с sudo, правку профиля оболочки (~/.zshrc, ~/.bashrc) и переменной PATH делай только после моего отдельного «да» на каждую.
5. Не проси у меня пароли и ключи и не выводи их. Если нужен пароль администратора, дай команду, я выполню её сам.
6. Пароль хранилища в чат не проси и сам не придумывай. Человек сам создаёт файл с паролем (права 600) или вводит пароль в терминале, ты передаёшь только путь через --password-file.
7. До первой копии покажи человеку, какая папка уходит в копию, что исключаешь (node_modules, кэши) и адрес хранилища, спроси про файлы с ключами вроде .env. Копию на сервер или в облако отправляй только после «да».
8. forget и prune запускай только после --dry-run и «да» человека, restore с --delete не запускай без отдельного «да».
9. Восстанавливай в новую пустую папку через --target, поверх рабочей папки проекта - только по прямой просьбе человека.
10. Смотри на код выхода: 12 - неверный пароль, 10 - хранилища по этому пути нет. Код 3 после backup говорит о непрочитанных файлах. После forget он же говорит о копиях, которые удалить не вышло. По документации неизвестный код считай ошибкой.

Шаги:
0. Определи, где ты работаешь: мой компьютер, сервер или контейнер. Какая система и процессор, какие менеджеры пакетов есть (Homebrew, apt, winget, uv, pipx). Ставить нужно туда, где ты сам запускаешь команды.
   - на компьютере: копии своих папок на внешний диск, на сервер по SFTP или в хранилище S3. Пароль хранилища вводит человек.
   - на сервере: копии сайта и данных сервера. Пароль берётся из файла (--password-file) или переменной, без вопроса в терминале.
   - в контейнере: мы проверяли в контейнере Ubuntu 24.04 от root, хранилище в папке рядом. По документации у проекта есть свой образ Docker restic/restic, его мы не запускали.
1. Проверь, не стоит ли программа уже: restic version ; which -a restic. Если стоит и запускается, ничего не ставь и переходи к шагу 5.
2. Проверь, что есть всё нужное для работы: Место для хранилища. Чего нет, внеси в план отдельным пунктом. Проверь свободное место на диске: нужно Файл restic_0.19.1_linux_amd64.bz2 весит 10 107 515 байт, распакованный restic - 30 941 346 байт (около 29,5 МиБ). Кэш в ~/.cache/restic в прогоне на Linux занял 2 488 байт. Хранилище растёт вместе с данными: тестовая папка без исключённых файлов весила 2 000 042 байт, хранилище после двух копий - 2 005 483 байт. Про вторую копию restic написал «Added to the repository: 1.736 KiB (1.196 KiB stored)». Сколько займёт Homebrew, мы не мерили..
3. Составь план: каким одним способом из списка ниже будешь ставить, что появится на диске и сколько места займёт, что поменяется в системе и как потом удалить. Покажи план и жди моего «да».
   Способы из официальных источников:
   - macOS, Homebrew: brew install restic (так советует документация, формула на 14.10.2026 ставит 0.19.1. Ни установку, ни удаление через Homebrew мы не проверяли, команды удаления взяты из справки Homebrew)
   - Windows, winget: winget install --exact --id restic.restic --scope Machine (так советует документация: с --scope Machine restic встаёт в Program Files и нужны права администратора, без ключа - в папку пользователя. Ни установку, ни удаление мы не проверяли, команда удаления - из справки winget)
   - Linux, готовый файл с GitHub: mkdir -p ~/.local/bin && curl -fsSL -o /tmp/restic_0.19.1_linux_amd64.bz2 https://github.com/restic/restic/releases/download/v0.19.1/restic_0.19.1_linux_amd64.bz2 && echo "f415415624dcc452f2a02b8c33641791a8c6d6d3b65bbb3543fcf9a25151585c  /tmp/restic_0.19.1_linux_amd64.bz2" | sha256sum -c - && bunzip2 -c /tmp/restic_0.19.1_linux_amd64.bz2 > ~/.local/bin/restic && chmod 755 ~/.local/bin/restic && rm /tmp/restic_0.19.1_linux_amd64.bz2 (файл для x86-64, для ARM64 на странице выпуска лежит restic_0.19.1_linux_arm64.bz2 со своей суммой в SHA256SUMS. Сумму мы сверили с файлом SHA256SUMS выпуска. Команда кладёт один файл restic в ~/.local/bin, эта папка должна быть в PATH. Нужен bzip2 (sudo apt install bzip2). Мы ставили ровно так)
   - Linux, apt: sudo apt-get install restic (пакет Debian и Ubuntu. В Ubuntu 24.04 это 0.16.4, на три выпуска старше. Мы его не ставили и не удаляли, версию видели в apt-cache policy)
4. Установи по согласованному плану. Если что-то идёт не так, как в плане, остановись и спроси.
5. Проверь результат:
   - restic version: программа запускается без ошибки;
   - Сделай во временной папке тестовую папку проекта с файлом .env и папкой node_modules, файл с тестовым паролем и хранилище restic рядом. Сохрани две копии с правкой файлов между ними, покажи список копий и разницу, верни первую версию в новую папку и сверь sha256. Проверь, что в хранилище нет открытого текста, что неверный пароль даёт код 12, прогони check --read-data и forget --keep-last 1 сначала с --dry-run. Делай это во временной папке и не трогай мои файлы.
     export PATH=$HOME/.local/bin:$PATH
     restic version
     export RESTIC_REPOSITORY=/work/backup/repo RESTIC_PASSWORD_FILE=/work/pass.txt
     restic snapshots
     restic init
     restic backup proekt --exclude .env --exclude node_modules --tag test
     printf 'MARKER_PLAIN_TEXT_7f3a version 2\n' > proekt/src/index.html
     rm proekt/notes.md
     printf 'new file\n' > proekt/src/new.txt
     restic backup proekt --exclude .env --exclude node_modules --tag test
     restic snapshots --json
     restic ls <первая копия>
     restic diff <первая копия> <вторая копия>
     restic restore <первая копия> --target /work/restore1
     restic restore latest --target /work/restore-one --include /proekt/src/index.html
     restic --password-file /work/wrong.txt snapshots
     restic check --read-data
     restic forget --keep-last 1 --dry-run
     restic forget --keep-last 1 --prune
   - если ты работаешь в папке моего проекта, покажи git status: от установки в проекте не должно появиться изменений.
6. Итог одним сообщением: что установлено, какой версии и куда, сколько места заняло, что поменялось в системе и как всё удалить (macOS, Homebrew: brew uninstall restic; Windows, winget: winget uninstall --exact --id restic.restic; Linux, готовый файл с GitHub: rm -f ~/.local/bin/restic; Linux, apt: sudo apt-get remove restic).

Если на любом шаге ошибка, не чини наугад: покажи текст ошибки и скажи, что, по-твоему, случилось. Частые проблемы: https://smyslokod.ru/cli/restic#problemy

Промпт собран из официальных инструкций, сверенных 14.10.2026. Агент сначала проверит, что уже стоит, покажет план с местом на диске и способом удаления и без твоего «да» ничего не поставит.

Как ставят вручную

Способы из официальных источников, у каждого ссылка на первоисточник.

  • macOS · Homebrew · источник

    brew install restic

    так советует документация, формула на 14.10.2026 ставит 0.19.1. Ни установку, ни удаление через Homebrew мы не проверяли, команды удаления взяты из справки Homebrew

  • Windows · winget · источник

    winget install --exact --id restic.restic --scope Machine

    так советует документация: с --scope Machine restic встаёт в Program Files и нужны права администратора, без ключа - в папку пользователя. Ни установку, ни удаление мы не проверяли, команда удаления - из справки winget

  • Linux · готовый файл с GitHub · источник

    mkdir -p ~/.local/bin && curl -fsSL -o /tmp/restic_0.19.1_linux_amd64.bz2 https://github.com/restic/restic/releases/download/v0.19.1/restic_0.19.1_linux_amd64.bz2 && echo "f415415624dcc452f2a02b8c33641791a8c6d6d3b65bbb3543fcf9a25151585c /tmp/restic_0.19.1_linux_amd64.bz2" | sha256sum -c - && bunzip2 -c /tmp/restic_0.19.1_linux_amd64.bz2 > ~/.local/bin/restic && chmod 755 ~/.local/bin/restic && rm /tmp/restic_0.19.1_linux_amd64.bz2

    файл для x86-64, для ARM64 на странице выпуска лежит restic_0.19.1_linux_arm64.bz2 со своей суммой в SHA256SUMS. Сумму мы сверили с файлом SHA256SUMS выпуска. Команда кладёт один файл restic в ~/.local/bin, эта папка должна быть в PATH. Нужен bzip2 (sudo apt install bzip2). Мы ставили ровно так

  • Linux · apt · источник

    sudo apt-get install restic

    пакет Debian и Ubuntu. В Ubuntu 24.04 это 0.16.4, на три выпуска старше. Мы его не ставили и не удаляли, версию видели в apt-cache policy

Как удалить

  • macOS, Homebrew: brew uninstall restic
  • Windows, winget: winget uninstall --exact --id restic.restic
  • Linux, готовый файл с GitHub: rm -f ~/.local/bin/restic
  • Linux, apt: sudo apt-get remove restic

Что нужно для работы

  • Место для хранилища (обязательно) - папка на другом диске, сервер с SSH или хранилище S3. README проекта пишет, что копия на той же машине - плохая стратегия резервного копирования
  • Ключи хранилища S3 или вход по ключу SSH (в отдельных случаях) - только для хранилища в облаке или на сервере: ключи S3 человек кладёт в переменные AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY сам, для копий по SFTP без участия человека нужен вход по SSH без запроса пароля, например по ключу
  • bzip2 (в отдельных случаях) - только для установки готового файла на Linux: файл выпуска сжат bzip2. В нашем контейнере его не было, поставили из apt
  • rclone (в отдельных случаях) - только если хранилище лежит в облаке, с которым restic сам не работает, например на Яндекс Диске: restic запускает rclone и пишет через него

Системы

  • macOS - документация советует Homebrew, на странице выпуска есть готовые файлы для Intel и Apple Silicon. На Mac мы не проверяли.
  • Windows - winget ставит restic.exe из архива выпуска на GitHub, для x64 и x86. На Windows мы не проверяли.
  • Linux - мы проверяли на Ubuntu 24.04 x86-64 готовый файл со страницы выпуска. Он собран без внешних библиотек, но для распаковки нужен bzip2, которого в чистом образе Ubuntu не было. В Debian, Ubuntu и Fedora restic есть и в пакетах дистрибутива.

Где запускать

Ставить нужно туда, где работает агент: на твой компьютер, сервер или в контейнер.

  • На компьютере - копии своих папок на внешний диск, на сервер по SFTP или в хранилище S3. Пароль хранилища вводит человек.
  • На сервере - копии сайта и данных сервера. Пароль берётся из файла (--password-file) или переменной, без вопроса в терминале.
  • В контейнере - мы проверяли в контейнере Ubuntu 24.04 от root, хранилище в папке рядом. По документации у проекта есть свой образ Docker restic/restic, его мы не запускали.

Сколько ресурсов нужно

Место на диске
Файл restic_0.19.1_linux_amd64.bz2 весит 10 107 515 байт, распакованный restic - 30 941 346 байт (около 29,5 МиБ). Кэш в ~/.cache/restic в прогоне на Linux занял 2 488 байт. Хранилище растёт вместе с данными: тестовая папка без исключённых файлов весила 2 000 042 байт, хранилище после двух копий - 2 005 483 байт. Про вторую копию restic написал «Added to the repository: 1.736 KiB (1.196 KiB stored)». Сколько займёт Homebrew, мы не мерили.
Память
Память мы не мерили. Первая копия тестовой папки на 2 000 042 байт заняла 933 мс.
Сеть
Для установки нужна сеть: в прогоне соединения шли к github.com (140.82.121.4) и адресам скачивания GitHub 185.199.108-111.133, плюс DNS контейнера 127.0.0.11. bzip2 качали из archive.ubuntu.com и security.ubuntu.com, apt заодно обратился к deb.nodesource.com - этот источник прописан в образе нашей песочницы, restic он не нужен. С хранилищем в локальной папке init, backup, restore, check и forget соединений не открывали. Для хранилища на сервере или в облаке restic передаёт туда данные, они зашифрованы до отправки. restic self-update сам ходит на GitHub, его мы не запускали.

Лицензия и платные замены

Лицензия BSD-2-Clause. Пользоваться можно бесплатно, и лично, и в работе компании. Кто распространяет restic, в исходниках или готовым файлом, сохраняет уведомление об авторских правах, условия лицензии и отказ от гарантий. Текст лицензии

Цена: Бесплатно. Программа бесплатная, лицензия BSD-2-Clause. Место в облаке или на сервере для хранилища оплачивается отдельно у того, кто его даёт.

Платные замены

  • Arq 7 - Программа резервных копий для Mac и Windows, хранит копии в твоём облаке. 59,99 доллара за компьютер, либо Arq Premium за 69,99 доллара в год на 5 компьютеров с 1 ТБ места.

Бесплатные замены

  • rclone - Копирует и синхронизирует папки с облаками, в том числе с Яндекс Диском. restic умеет писать своё хранилище через rclone.

О чём помнить

  • Пароль хранилища нельзя восстановить. При создании restic так и пишет: «Losing your password means that your data is irrecoverably lost». Человек хранит пароль сам, отдельно от копий.
  • Безопасность. Агент запускает restic в терминале сам (exec). Программа читает все файлы в папке, которую ей передали, кроме исключённых, и файл пароля (read). Пишет хранилище по указанному пути и кэш (на Linux по умолчанию ~/.cache/restic, на macOS ~/Library/Caches/restic, на Windows %LOCALAPPDATA%/restic), а restore кладёт файлы в папку из --target и по умолчанию перезаписывает там файлы с теми же именами (write). backup в хранилище на сервере, в S3 или через rclone отправляет туда данные, зашифрованные до отправки (acts). forget с --prune удаляет копии из хранилища насовсем, restore с --delete удаляет в папке --target файлы, которых нет в копии (acts). Вместе с --target ключ --delete работает только при --include или --exclude, документация советует сначала прогнать его с --dry-run -vv. Для SFTP restic запускает ssh, для облака через rclone - rclone, а ключ -o sftp.command и --password-command запустят любую указанную команду (exec). Входа в учётные записи restic не просит.
  • Файл .env и другие файлы с ключами попадут в копию, если их не исключить. В хранилище они зашифрованы, но любой, у кого есть пароль хранилища, их достанет. Список исключений стоит показать человеку до первой копии.
  • Копия на том же диске, что и оригинал, пропадёт вместе с ним при поломке диска. Чтобы копия пережила поломку, хранилище держат на другом диске, на сервере или в облаке.
  • forget убирает запись о копии, а данные, на которые больше нет ссылок, удаляет prune. На восстановление удалённой копии не рассчитывай и смотри список через --dry-run до удаления.

Частые проблемы

bunzip2: command not found

Готовый файл restic для Linux сжат bzip2, а в чистом образе Ubuntu 24.04 программы bzip2 нет. Наш первый прогон остановился на этом шаге с кодом 127. Поставь bzip2 (sudo apt install bzip2) и повтори распаковку.

Fatal: repository does not exist: unable to open config file

По этому пути хранилища ещё нет или путь в RESTIC_REPOSITORY набран с ошибкой. restic вернул код 10. Проверь путь. Если хранилище новое, создай его командой restic init.

Fatal: wrong password or no key found

Пароль не подходит к хранилищу. restic вернул код 12. Проверь файл пароля и переменные RESTIC_PASSWORD и RESTIC_PASSWORD_FILE. Без верного пароля данные из хранилища не достать.

restore с --include закончился строкой «Restored 0 files/dirs»

Путь в --include указан от корня диска, а в копии файлы лежат под тем путём, что показывает restic ls. У нас это был путь /proekt/src/index.html, без /work в начале. Сначала посмотри путь в restic ls и передай его в --include как есть.

Проверка

✓ Проверено 14.10.2026: Ubuntu 24.04 (x86_64) в одноразовом контейнере Docker на сервере, от root: restic 0.19.1 из готового файла со страницы выпуска на GitHub, bzip2 из apt для распаковки, хранилище в локальной папке.

Когда
14.10.2026
Среда
Ubuntu 24.04 (x86_64) в одноразовом контейнере Docker на сервере, от root: restic 0.19.1 из готового файла со страницы выпуска на GitHub, bzip2 из apt для распаковки, хранилище в локальной папке
Объём
Установили и прогнали задачу на тестовых данных
Что именно сделали
  1. Одноразовый контейнер Ubuntu 24.04 без данных и ключей. Скачали restic_0.19.1_linux_amd64.bz2 и SHA256SUMS со страницы выпуска, сумма совпала. bzip2 в образе не было, поставили из apt и распаковали restic в ~/.local/bin. restic version вывел «restic 0.19.1 compiled with go1.26.4 on linux/amd64».
  2. Скрипт прогона сам сделал тестовую папку проекта: страницу, заметку, файл случайных данных на 2 МБ, файл .env с тестовой строкой и папку node_modules. Тестовый пароль лежал в файле с правами 600, путь к нему передали через RESTIC_PASSWORD_FILE.
  3. До создания хранилища restic snapshots ответил «repository does not exist» с кодом 10. Потом restic init создал хранилище в соседней папке.
  4. Первая копия с --exclude .env и --exclude node_modules сохранила 3 файла за 933 мс. Потом поправили один файл, удалили второй и добавили третий. По выводу restic вторая копия добавила 1,736 КиБ данных, записано в хранилище 1,196 КиБ. restic diff показал все три изменения, в списке файлов первой копии .env и node_modules не было.
  5. В файлах хранилища не нашлось ни тестовой строки из страницы, ни строки из .env. Первая версия вернулась в отдельную папку, sha256 всех файлов совпали с исходными. Один файл из последней копии вернули отдельно через --include.
  6. С неверным паролем restic ответил «wrong password or no key found» и кодом 12. restic check --read-data прочитал все данные и ошибок не нашёл.
  7. forget --keep-last 1 с --dry-run показал, что уберёт первую копию, и ничего не удалил. С --prune осталась одна последняя копия, повторный check прошёл без ошибок. Исходная папка осталась как была.
  8. С хранилищем в локальной папке restic соединений не открывал. Удалили файл restic и кэш ~/.cache/restic, команда больше не находится. Скрипт сверил каждый результат сам и только после этого напечатал TASK_OK.
ДатаВерсияОбъёмГдеИтог
14.10.20260.19.1задачаконтейнер, Linuxполучилось
14.10.20260.19.1задачаконтейнер, Linuxполучилось

«Проверено» ставим, только когда сами поставили программу и прогнали её на задаче. Сверка ссылок и вывод версии так не называются.

Похожие программы

Программу делают её авторы. Мы сверяем официальные источники и описываем, что ей нужно, но код остаётся чужим. Перед установкой посмотри план агента: что он поставит и что поменяет в системе.