restic
Проект restic, автор Alexander Neumann · лицензия 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
Установить агентом
Установи программу «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 для распаковки, хранилище в локальной папке
- Объём
- Установили и прогнали задачу на тестовых данных
- Что именно сделали
- Одноразовый контейнер 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 МБ, файл .env с тестовой строкой и папку node_modules. Тестовый пароль лежал в файле с правами 600, путь к нему передали через RESTIC_PASSWORD_FILE.
- До создания хранилища restic snapshots ответил «repository does not exist» с кодом 10. Потом restic init создал хранилище в соседней папке.
- Первая копия с --exclude .env и --exclude node_modules сохранила 3 файла за 933 мс. Потом поправили один файл, удалили второй и добавили третий. По выводу restic вторая копия добавила 1,736 КиБ данных, записано в хранилище 1,196 КиБ. restic diff показал все три изменения, в списке файлов первой копии .env и node_modules не было.
- В файлах хранилища не нашлось ни тестовой строки из страницы, ни строки из .env. Первая версия вернулась в отдельную папку, sha256 всех файлов совпали с исходными. Один файл из последней копии вернули отдельно через --include.
- С неверным паролем restic ответил «wrong password or no key found» и кодом 12. restic check --read-data прочитал все данные и ошибок не нашёл.
- forget --keep-last 1 с --dry-run показал, что уберёт первую копию, и ничего не удалил. С --prune осталась одна последняя копия, повторный check прошёл без ошибок. Исходная папка осталась как была.
- С хранилищем в локальной папке restic соединений не открывал. Удалили файл restic и кэш ~/.cache/restic, команда больше не находится. Скрипт сверил каждый результат сам и только после этого напечатал TASK_OK.
| Дата | Версия | Объём | Где | Итог |
|---|---|---|---|---|
| 14.10.2026 | 0.19.1 | задача | контейнер, Linux | получилось |
| 14.10.2026 | 0.19.1 | задача | контейнер, Linux | получилось |
«Проверено» ставим, только когда сами поставили программу и прогнали её на задаче. Сверка ссылок и вывод версии так не называются.
Похожие программы
Программу делают её авторы. Мы сверяем официальные источники и описываем, что ей нужно, но код остаётся чужим. Перед установкой посмотри план агента: что он поставит и что поменяет в системе.