Restic: Внедрить веб-сервер для просмотра резервных копий

Созданный на 18 нояб. 2014  ·  42Комментарии  ·  Источник: restic/restic

Реализуйте команду restic, которая запускает веб-сервер для просмотра снимков.

user interface feature suggestion

Самый полезный комментарий

Я бы порекомендовал целое другое приложение, которое называется что-то вроде restic-web написанное на go или nodejs, и реагирует или angular, чтобы иметь возможность делать все, что вы можете делать из интерфейса командной строки.

Все 42 Комментарий

Это кажется большой сложностью для чего-то, что не является основной обязанностью программы резервного копирования. Это действительно нужно? Какой вариант использования? Я бы предпочел FUSE (https://github.com/restic/restic/issues/27).

В окнах нет предохранителя. При использовании http://golang.org/pkg/net/http/#FileServer очень мало работы с базовым веб-сервером

В точности то, что я думал, это не так много кода и, вероятно, единственный способ просматривать снимки в Windows.

Я согласен. В какой-то момент пришло время для графического интерфейса, и я думаю, что наиболее естественным шагом к этому является встроенный веб-сервер, который может представить его на локальном хосте или даже на других интерфейсах, если это необходимо. У каждого есть веб-браузер, и вам не придется возиться с приложениями.

@rakoo , вы хотите работать над веб-сервером в следующий раз?

Мысли о пользовательском интерфейсе:

  • Запустите HTTP-сервер с restic server
  • restic записывает URL-адрес HTTP в stdout, который включает случайно сгенерированные имя пользователя и пароль, например http://RarOjHogvueHov:egsevtekwucvith@localhost/snapshots
  • Веб-сервер требует аутентификации дайджеста HTTP
  • И он привязывается только к localhost

Привязка к чему-то другому, кроме localhost, не должна быть невозможной, но очень сложной. Возможно, мы жестко закодируем localhost для первой версии и посмотрим, не пожалуются ли пользователи.

Мысли?

Это более или менее то, что я имел в виду, за исключением того, что без имени пользователя и пароля: IMO они не представляют большой ценности против потенциального злоумышленника (мы бы сделали простой HTTP, поэтому имя пользователя и пароль были четко видны).

Меня устраивает привязка только к localhost: видя пространство, в котором мы работаем, я ожидаю, что у пользователя будет ssh для доступа к их VPS, поэтому я думаю, что справедливо ожидать, что они будут туннелировать доступ к своему репо следующим образом:

backupserver> restic server 5000

clientmachine> ssh -Nf -L 5000:backupserver:5000
clientmachine> open http://localhost:5000/

Я понимаю, что это довольно давно, но +1 от меня. Я также не думаю, что встроенное имя пользователя / пароль полезны для меня, это все равно стоит за VPN, и я бы хотел, чтобы это началось во время запуска системы.

@yatesco Какой у вас вариант использования для запуска обсуждаемого компонента веб-сервера во время запуска системы? Я не могу придумать ни одного, не могли бы вы уточнить?

Привет @ fd0 - репозиторий должен быть открыт для команды.

Возможно, что довольно необычно, у меня есть куча данных, которые я не хочу торчать, поэтому использовать этот архив в качестве «долгосрочного хранилища» - это здорово, но тогда мне нужно предоставить к нему доступ от команды и общий ресурс самбы (например, # 377) или веб-интерфейс было бы здорово

Хорошо, спасибо за объяснение.

Можно ли выставить Fuse mount через Samba? Не могу заставить его работать, папка не отображается. Как мне заставить предохранитель использовать "allow_other"?

Я обрисовал в общих чертах, что нужно сделать здесь: https://github.com/restic/restic/pull/754#issuecomment -276023059

Также см. Проблему № 767 для получения информации о вариантах крепления предохранителя.

Это просто зритель, который нам нужен? или полноценный графический интерфейс для всех задач? Вот особенности, которые я себе представляю для графического интерфейса:

Восстановить функции:

  • список снимков (с датой, размером снимка, реальным размером и т. д.)
  • просматривать снимок (сортировка, поиск и т. д.)
  • просмотреть историю версий файла
  • восстановить снимок или выбранную папку / файлы на локальный диск пользователя

Возможности администратора:

  • удалить снимки
  • резервный
  • чек
  • перестроить

В Electron мы сохраняем кроссплатформенный / HTML5 графический интерфейс, но с дополнительными функциями, такими как доступ к файловой системе, команды exec, открытые ssh-соединения, собственные модули и т. Д.

Я не могу говорить от имени проекта, но для меня функции восстановления было бы достаточно.

Я в основном работаю с Windows-ящиками, подключенными к серверам по SSH, и если что-то выйдет из строя, я хотел бы быстро подключить свой резервный диск, чтобы просмотреть / загрузить файлы, о которых идет речь.

Привет, господа, только что начал работать с рестиком, действительно хорошая работа, спасибо! Мои пятьдесят центов по этой теме. Просто `` просмотреть снимок '' немного бесполезно imho (можно сделать с помощью плавкого крепления, опубликованного любыми средствами, такими как nginx, samba и т. Д.), Определенно должны быть некоторые полезные действия, которые пользователь может сделать дальше, например, восстановить файлы на выбранные хосты, восстановить sql дамп на какой-то хост db, легко восстановите все, что было скопировано. Есть две основные вещи: 1. Поиск / классификация данных и 2. Выполнение каких-либо действий с данными (например, восстановление, удаление, совместное использование, классификация, сравнение копий (сравнение) и т. Д.). Почему не FUSE: это вообще не про Windows, а про UX. Наличие веб-интерфейса для хранилища резервных копий с расширенными возможностями поиска и легкого восстановления (адаптированного к конкретному типу данных и системе) - это действительно здорово. Я представляю себе десятки вариантов использования, которые имеют смысл для хранилища резервных копий (расширенный поиск, удаленное восстановление, предложения политики резервного копирования, маскирование данных, защита PII, уничтожение, соответствие данных, отчетность и т. Д.), Имея веб-фронт для некоторых из них (по крайней мере, поиск и восстановить) было бы здорово! Для резервного копирования, где в большинстве случаев основной целью является восстановление последней версии чего-либо, в случае повреждения данных, как можно быстрее, этого достаточно, но для таких функций, как архивирование, наличие веб-интерфейса является обязательным. Кстати, архив данных - еще одна интересная функция, например, отсоединить определенные данные от restic snap и переместить их в долгосрочный архив, но это другая история и не по теме для темы) И да, если вы решите сделать это в будущем, imho this должно выполняться в rest-server, оборачивая основные функции в rest api. Последнее имеет смысл для интеграции со сторонними системами.

Я бы порекомендовал целое другое приложение, которое называется что-то вроде restic-web написанное на go или nodejs, и реагирует или angular, чтобы иметь возможность делать все, что вы можете делать из интерфейса командной строки.

Может ли restic использовать что-то вроде https://github.com/dokan-dev/dokany/ в Windows?
Я иногда использую cppcryptfs для доступа к папкам под Windows, которые были зашифрованы с помощью gocryptfs под Linux, и, похоже, это работает достаточно хорошо.

Привет,
Я нашел эту статью: https://devblogs.microsoft.com/commandline/announcing-wsl-2/
Он говорит:

Теперь, когда WSL 2 включает собственное ядро ​​Linux, он имеет полную совместимость с системными вызовами. Это представляет собой совершенно новый набор приложений, которые вы можете запускать внутри WSL. Некоторые интересные примеры - это версия Docker для Linux, а также FUSE!

Пожалуйста, примите во внимание, что WSL требует для работы Hyper-V, но:

1) Hyper-V доступен только для некоторых версий Windows. Например, Windows 10 Pro поддерживает Hyper-V, а Windows 10 Home - нет.

2) Hyper-V не может сосуществовать с любым другим программным обеспечением гипервизора, которое пользователь, возможно, уже использует (например, VirtualBox и т. Д.). Итак, если кто-то уже использует VirtualBox (или любой другой гипервизор), он не сможет использовать WSL.

Подводя итог, я считаю, что WSL не следует воспринимать как должное для каждого пользователя Windows.

@ aliron19 Вы можете указать источник этого? Я использую WSL на своем рабочем компьютере для запуска Redis, но это домашний компьютер с Windows 10, поэтому нет Hyper-V, но WSL работает нормально.

см. https://docs.microsoft.com/en-us/windows/wsl/wsl2-faq#does -wsl-2-use-hyper-v-will-it-be-available-on-windows-10-home

Спасибо за разъяснения. Кажется, что требование Hyper V является новым для WSL 2, я думал, что Алирон имел в виду WSL в целом. Также полезно знать, что Hyper V станет доступен для пользователей Windows 10 Home.

Я бы сказал, что мы должны предпочесть сервер Webdav (№ 485) вместо интерфейса HTML.
Это также позволит пользователям легко добавить его в качестве сетевого диска в проводник Windows.

Если у вас есть сервер (или unix / linux) с nodejs, вы можете легко это сделать:

restic mount backup &
npx http-serve backup

Затем вы можете просмотреть http://127.0.0.1 : 8080
и до встречи файлы:

Capture d’écran 2020-07-24 à 17 58 18

Когда вы закончите, вы можете:

CTRL + C # stop npx
fg # bring back restic
CTRL + C # stop restic

Я не знаю, блокирует ли restic репозиторий, пока вы его монтируете, или вы можете тем временем добавить дополнительную резервную копию.
Но, по крайней мере, у вас может быть крошечный веб-интерфейс для просмотра файлов.

@ vincent-ogury Я думал, что суть этой предлагаемой функции состоит в том, чтобы обеспечить удобное для пользователя представление резервного копирования, в котором restic mount _isn't_ доступно.

Ты прав. Я думаю, это должно работать внутри докера в Windows.
Веб-версия может быть полезна для других платформ.
Это может упростить командную строку, чтобы показывать снимки, просматривать, забывать, запускать новые резервные копии ...

Я хотел бы поработать над этим вопросом. Идея состоит в том, чтобы реализовать ванильный HTTP-сервер Go с некоторым базовым шаблоном html. Наш вариант использования - иметь какой-то универсальный базовый интерфейс для Restic под Windows.
Вот объем моей задачи:

Проблема
Restic не предоставляет удобный способ просмотра резервных копий в Windows.

Задача
Попробуйте реализовать базовое доказательство концепции встроенного веб-сервера, который позволяет просматривать и восстанавливать резервные копии с помощью браузера.

Пример
Выполнение следующих команд создаст две резервные копии, и вы узнаете, как просматривать резервные копии через командную строку.

openssl rand -hex 10> ~ / .restic-пароль
restic -p ~ / .restic-password init --repo / tmp / backup

Сделайте резервную копию

restic -p ~ / .restic-password --repo / tmp / backup резервное копирование ~

Внесите некоторые изменения

дата> ~ / файл-с-изменениями.txt

Сделайте следующую резервную копию

restic -p ~ / .restic-password --repo / tmp / backup резервное копирование ~

Посмотри какие у тебя есть бэкапы

restic -p ~ / .restic-password --repo / tmp / резервные копии снимков

репозиторий 2ad83051 успешно открыт, пароль правильный

ID Time Host Теги Пути

b8ee7b24 2020-09-11 17:20:17 thorsten-devvm-v3 / корень

99388d0b 2020-09-11 17:21:23 thorsten-devvm-v3 / корень

2 снимка

Посмотри, что внутри резервной копии

restic -p ~ / .restic-password --repo / tmp / backup ls -l 99388d0b

Получите список всех файлов в резервной копии в формате json.

restic -p ~ / .restic-password --repo / tmp / backup ls -l --json 99388d0b | jq

Проверьте, есть ли файл в резервной копии

restic -p ~ / .restic-password --repo / tmp / backup найти snmp.json

Восстановить файл

restic -p ~ / .restic-password --repo / tmp / backup restore latest --target / tmp / restore --include "/root/snmp.json"
Характеристики
Выполняя что-то подобное, веб-сервер запускается, и внутренняя резервная копия становится «открытой».
restic -p ~ / .restic-password --repo / tmp / резервный веб-сервер 127.0.0.1:3344

Направляя свой браузер на

Я могу щелкнуть идентификатор в первом столбце, и я получаю древовидное представление всех файлов в снимке. Те же данные, что и restic -p ~ / .restic-password --repo / tmp / backup ls -l--json возвращается. Древовидная структура не требует сворачивания и разворачивания, а также не требует значков в начале.

Или я могу щелкнуть путь к моментальному снимку (5-й столбец) и получить список файлов в резервной копии, принадлежащих только этому пути. Он отображает те же данные, что и restic -p ~ / .restic-password --repo / tmp / backup ls -l--дорожка--json

Я могу щелкнуть один файл и загрузить его через браузер.

В идеале я могу щелкнуть файл и получить список всех различных версий, упорядоченных по дате этого файла.
Снимок всегда дает виртуальное представление всей файловой системы. Чтобы идентифицировать разные версии файла, в командной строке будет использоваться следующая команда.
restic -p ~ / .restic-password --repo / tmp / backup find /root/snmp.json --json | jq
Все объекты, для которых mtime одинаково, необходимо свести к одному объекту, потому что файлы не изменились.

ИМХО, добавление поддержки «restic mount» в окнах с чем-то вроде dokany имело бы больше смысла иметь такой же рабочий процесс восстановления в Linux и Windows и обеспечить лучший пользовательский интерфейс с помощью OS Explorer для просмотра файлов.

См. Https://github.com/restic/restic/pull/2862 адреса, которые предназначены для решения Restic does not provide a handy way to browse through the backups on Windows же, как это делается на других платформах, кроме Windows.

Конечно, но я предполагаю, что «типичному» пользователю Windows довольно сложно использовать интерфейс командной строки, моя цель - предоставить простой и понятный интерфейс, понятный любому пользователю.

В качестве обходного пути я собрал то, что предлагали @ vincent-ogury и @celogeek (спасибо!), И создал этот файл докеров; https://github.com/stevedenman/restic-browser-docker
Я запускал его на своем компьютере с Windows (в Docker на wsl2), и он отлично работает для просмотра снимков и загрузки файлов.

извините, ребята, вы говорите, что я не должен этого делать? почему с этим проблема? предлагаемые решения довольно сложны для обычного пользователя, в моем случае все, что нам нужно сделать - запустить программу (с определенными флагами) и открыть браузер!

Привет.

Как товарищ по рестику, я просто хотел выложить свои два цента на эту тему.

Я технически подкованный пользователь, поэтому меня устраивает, как обстоят дела в покое. Я также знаю, что restic направлен на технически подкованных людей; следовательно, текущие решения для некоторых могут быть сложными. Но я не вижу проблем с реализацией локального веб-сервера, доступного через браузер. Он не должен заменять текущие решения, но в качестве побочного решения было бы неплохо иметь что-то подобное. И, возможно, это сделало бы отдых более доступным для еще большего количества людей.

Спасибо.

Я полностью не согласен с мнением «это слишком сложно для пользователей Windows». Прежде всего, этим пользователям уже удалось запустить restic для резервного копирования своих данных, и выполнение команды mount вместо команды backup не сложнее. Во-вторых, мы говорим об открытии командной строки и вводе здесь restic -r foo mount bar . Серьезно, как это кому-то тяжело? Если у кого-то есть проблемы с этим, эти люди должны учиться. Это не что-то «сложное», это всего лишь одна командная строка.

РЕДАКТИРОВАТЬ: Чтобы уточнить, я имею в виду, что это не должно быть сложно для любого пользователя Windows, учитывая, что restic mount работает в Windows, как в # 2862 - я не предлагаю, о чем @filippobottega написал прямо ниже этот комментарий прост для среднего пользователя Windows. Я не думаю, что для использования restic mount нужно использовать WSL.

Привет,
Я успешно смонтировал резервную копию в проводнике Windows с помощью WSL2, но это не так просто, как я ожидал.
Вы должны:

  1. Установите WSL2, как описано в Руководстве по установке подсистемы Windows для Linux для Windows 10.
  2. Измените пользователя Ubuntu по умолчанию на root, как описано в ответе gurnec на странице Невозможно редактировать /etc/nginx/nginx.conf из Windows.
  3. Войдите в сеанс Ubuntu как root и смонтируйте остаточную резервную копию, как описано в разделе Восстановление с помощью монтирования , например restic -r /mnt/c/ResticBackup -p /mnt/c/ResticBackup/password-file.txt mount /mnt/restic

    В конце вы сможете увидеть:

image

Во-вторых, мы говорим об открытии командной строки и вводе здесь restic -r foo mount bar. Серьезно, как это кому-то тяжело?

Если вы рассматриваете варианты BIOS, позволяющие гипервизору работать, настраивая WSL и диагностируя любые проблемы, связанные с его неисправностью и т. Д., Это может быть довольно трудоемким. На мой взгляд, требование запуска гипервизора Microsoft, несовместимого с VmWare и VirtualBox, которые я использую, просто смешно для отдыха.

Веб-браузер «указывать и щелкать» намного проще, а также поддержка http несколько лучше (подсказка: браузеры), чем версия smb для Windows, если вы хотите поделиться в локальной сети. Также неясно, можете ли вы вообще выставить эти крепления через smb, но даже если вы можете, точка все равно остается в силе.

На мой взгляд, нет никаких сомнений в том, что вариант с веб-браузером проще.

Если вы рассматриваете варианты BIOS, позволяющие гипервизору работать, настройку WSL и диагностику любых проблем, связанных с его неисправностью и т. Д.

@AndrewSav Это не то, что здесь обсуждается. См. Комментарий от @rawtaz (выделено мной)

РЕДАКТИРОВАТЬ: Чтобы уточнить, я имею в виду, что это не должно быть сложно для любого пользователя Windows _given restic mount работающего в Windows, как в # 2862_ - я не предлагаю то, о чем @filippobottega написал прямо ниже этот комментарий прост для среднего пользователя Windows. Я не думаю, что нужно использовать WSL для использования restic mount .

@cfbao для этого вам необходимо установить драйвер ядра. Я всегда за вариант, не требующий дополнительных драйверов ядра. Я думаю, что не должно быть сомнений в том, что запуск программы и открытие браузера проще, чем установка стороннего программного обеспечения, возможно, перезагрузка после этого, а затем запуск какой-то непонятной командной строки (под этим я имею в виду, что вам нужно указать и ввести параметры командной строки, в браузере вы просто можете нажать для навигации).

Установка сторонних драйверов также имеет явный недостаток: если в указанном драйвере есть ошибка, это повлияет на всю систему. Опять же, требование restic для стороннего драйвера неразумно, если есть гораздо более простые (браузерные) параметры.

Насколько я понимаю, эти варианты не противоречат друг другу, поэтому restic может поддерживать оба и, таким образом, удовлетворять потребности обеих групп.

@cfbao для этого вам необходимо установить драйвер ядра. Я всегда за вариант, не требующий дополнительных драйверов ядра.

@AndrewSav Дело в том, что это очень простая задача, которую каждый пользователь Windows с ограниченным доступом сможет легко выполнить. Таким образом, предельная полезность реализации веб-сервера значительно снижается и может не оправдывать затраты на остановку разработки и обслуживания.

@AndrewSav Веб-интерфейс хорош для просмотра резервной копии, я могу это представить. Но если есть задача восстановить несколько файлов из разных каталогов, я бы предпочел достойный файловый менеджер и моментальный снимок резервной копии, смонтированные как файловая система. Если restic должен предоставить интерфейс WebDAV на задней панели, что по-прежнему является неполноценным решением в Windows из-за ограничений клиента WebDAV: 1) максимальный размер файла по умолчанию составляет 50 МБ, пользователю потребуется выполнить манипуляции с реестром, чтобы расширить его до 4G; 2) некоторые символы не поддерживаются в именах файлов.
Я считаю, что веб-интерфейс и правильное монтирование файловой системы являются дополнительными функциями с несколько разными вариантами использования.
Драйвер ядра стороннего производителя (например, http://www.secfs.net/winfsp/) необходимо установить только один раз, и перезагрузка не требуется.
Я также не совсем понимаю аргумент о «запуске какой-то непонятной командной строки». Разве вам не нужно запускать какую-нибудь команду restic, чтобы активировать веб-интерфейс?

Спасибо всем за ваш вклад! Итак, подведем итоги:

  • @ fd0 ранее предлагал и, таким образом, одобрил реализацию браузера репозитория, обслуживающего HTTP, в этом выпуске и подробно описал его в https://github.com/restic/restic/issues/60#issuecomment -122898872.
  • Многие люди думают, что иметь эту платформо-нейтральную функцию для просмотра снимков и их файлов - хорошая идея.
  • Распространено мнение, что мы также хотим иметь возможность восстанавливать файлы из него, насколько это практично (мы не можем ожидать, что сможем восстановить весь архив через веб-браузер, это будет скорее «загрузка файлов " действие).
  • Он не должен выполнять никаких операций записи в репозиторий, только операции чтения.
  • WebDAV, хотя и является вариантом для просмотра файлов, проблематичен с точки зрения клиентской поддержки. Мы могли бы реализовать WebDAV в какой-то момент, но ни он, ни веб-сервер не исключают другого - это отдельные функции.

Не вижу ничего, что мешает продолжению работы и пиара за это. Лично я это поддерживаю. Я думаю, нам следует:

  • Начните с малого, создайте веб-интерфейс, который может просматривать в нем снимки и файлы, а затем, когда у нас будет прочная база, начните добавлять функции восстановления.
  • Заставьте его начать использовать команду restic serve http чтобы позже мы могли добавить другие методы обслуживания, такие как restic serve webdav и, возможно, restic serve rest .
  • Заставьте его генерировать временное имя пользователя и пароль при запуске сервера, чтобы
  • позволяют настроить IP / имя хоста и порт для привязки с использованием аргумента, например, restic serve http 127.0.0.1:8080 .
  • Не пишите уродливый код, который жестко кодирует активы / HTML / JS / CSS, а вместо этого вставляйте правильный веб-интерфейс, используя, например, https://github.com/tv42/becky, или даже начинайте с простого использования net / http / # FileServer .
  • Поймите, что это функция, на доработку которой уйдет немало времени, это не то, чем мы займемся за ночь.

Существующие работы и аналогичные ссылки:

Была ли эта страница полезной?
0 / 5 - 0 рейтинги