Restic: 实施网络服务器以查看备份

创建于 2014-11-18  ·  42评论  ·  资料来源: restic/restic

实现一个 restic 命令来启动一个 web 服务器来浏览快照。

user interface feature suggestion

最有用的评论

我会推荐一个完整的其他应用程序,它类似于restic-web用 go 或 nodejs 编写的内容,并且可以通过 react 或 angular 来完成您可以从命令行界面执行的所有操作

所有42条评论

对于似乎不是备份程序核心职责的事情来说,这似乎很复杂。 这真的需要吗? 用例是什么? 我更喜欢 FUSE (https://github.com/restic/restic/issues/27)。

Windows 没有保险丝。 使用http://golang.org/pkg/net/http/#FileServer拥有一个基本的 Web 服务器是非常少的工作

正是我所想的,代码并不多,而且可能是在 Windows 中浏览快照的唯一方法。

我同意。 在某个时候是 GUI 的时候了,我认为最自然的步骤是嵌入式 Web 服务器,如果需要,它可以将它呈现在 localhost 甚至其他界面上。 每个人都有一个 Web 浏览器,而不必摆弄应用程序。

@rakoo

关于用户界面的想法:

  • 使用restic server启动 HTTP 服务器
  • restic 将 HTTP URL 写入标准输出,其中包括随机生成的用户名和密码,例如http://RarOjHogvueHov:egsevtekwucvith@localhost/snapshots
  • 网络服务器需要 HTTP 摘要身份验证
  • 它只绑定到本地主机

绑定到 localhost 之外的其他东西应该不是不可能的,但真的很难。 也许我们会为第一个版本硬编码 localhost,看看用户是否抱怨。

想法?

这或多或少是我想到的,除了没有用户名/密码:IMO 他们对潜在攻击者提供的价值很小(我们会做普通的 HTTP,所以用户名和密码是清晰可见的)。

我只绑定到 localhost 没问题:看到我们操作的空间,我希望用户有 ssh 访问他们的 VPS,所以我认为期望他们以这种方式隧道访问他们的 repo 是公平的:

backupserver> restic server 5000

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

我意识到这已经很老了,但是我+1。 我也不认为嵌入的用户名/密码对我有帮助,无论如何这都在 VPN 后面,我希望它在系统启动时启动。

@yatesco在系统启动时启动所讨论的 Web 服务器组件的用例是什么? 我想不出一个,你能详细说明一下吗?

@fd0 - 将存储库公开给团队。

相当不寻常的是,我有一堆我不想闲逛的数据,所以使用这个存档作为“长期存储”很棒,但是我需要从团队和 samba 共享中提供对它的访问(例如 # [377] 377)

好的,谢谢解释。

是否可以通过 Samba 暴露 Fuse 安装座? 我无法让它工作,文件夹不可见。 如何让 Fuse 安装座使用“allow_other”?

我在这里概述了需要做的事情: https :

另请参阅问题 #767 以了解保险丝安装选项。

它只是我们需要的查看器吗? 或所有任务的完整图形用户界面? 以下是我为 GUI 设想的功能:

恢复功能:

  • 列出快照(带有日期、快照大小、实际大小等)
  • 浏览快照(排序、搜索等)
  • 查看文件版本历史
  • 将快照或文件夹/文件的选择还原到用户本地驱动器

管理员功能:

  • 删除快照
  • 备份
  • 查看
  • 重建

使用Electron,我们保留了跨平台/HTML5 GUI,但具有其他功能,例如文件系统访问、exec 命令、打开 ssh 连接、本机模块等。

我不能代表这个项目,但对我来说,恢复功能就足够了。

我主要在 Windows 机器上使用 SSH 连接到服务器,如果出现问题,我想快速插入我的备份驱动器以查看/下载有问题的文件。

嗨,先生们,刚刚开始与 restic 合作,真的很好,谢谢! 我在这个话题上的五十美分。 只是“查看快照”有点没用,恕我直言(可以通过任何方式发布的保险丝安装完成,如 nginx、samba 等),当然应该有用户接下来可以做的一些有用的操作,例如将文件恢复到选定的主机,恢复sql 转储到某个数据库主机,以简单的方式恢复任何静态备份。 主要有两件事:1.数据搜索/分类和2.在数据下做一些事情(例如恢复、删除、共享、分类、比较副本(diff)等)。 为什么不使用 FUSE:它根本不是关于 Windows,而是关于 UX。 拥有一个具有丰富搜索和轻松恢复功能(针对特定数据类型和系统)的备份存储 Web 前端真的很酷。 我想象了十几个对备份存储有意义的用例(高级搜索、远程​​恢复、备份策略建议、数据屏蔽、PII 保护、粉碎、数据合规性、报告等),其中一些有一个 Web 前端(至少搜索并恢复)会很好! 对于备份,在大多数情况下,主要目的只是恢复某些东西的最新版本,以防数据损坏,尽可能快,这已经足够了,但对于存档等功能来说,必须有一个 Web 前端。 顺便说一句,数据存档是另一个很酷的功能,例如从静态快照中分离某些数据并将其移动到长期存档中,但这是另一个故事,并且与该线程无关)而且是的,如果您决定将来这样做,恕我直言应该在 rest-server 中完成,将核心功能包装在 rest api 中。 后者对于与 3rd 方系统的集成很有意义。

我会推荐一个完整的其他应用程序,它类似于restic-web用 go 或 nodejs 编写的内容,并且可以通过 react 或 angular 来完成您可以从命令行界面执行的所有操作

restic 可以在 Windows 上使用https://github.com/dokan-dev/dokany/ 之类的东西吗?
我偶尔会使用 cppcryptfs 访问 Windows 下的文件夹,这些文件夹在 Linux 下使用 gocryptfs 加密,它似乎工作得相当好。

你好,
我找到了这篇文章: https :
它说:

现在 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 的新要求,我以为 aliron 是在谈论 WSL。 另外很高兴知道 Hyper V 将可供 Windows 10 家庭用户使用。

我会说我们应该更喜欢 Webdav 服务器(#485)而不是 HTML 界面。
这也将允许用户轻松地将其作为网络驱动器添加到 Windows 资源管理器中。

如果你有一台带有 nodejs 的服务器(或 unix/linux),你可以很容易地做到这一点:

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 上的 docker 内工作。
网络版本可能适用于其他平台。
它可以简化命令行来显示快照、查看、忘记、开始新的备份......

我想在这个问题上工作。 想法是使用一些基本的 html 模板实现一个 vanilla Go http 服务器。 我们的用例是在 Windows 下为 Restic 提供一些通用的基本接口
这是我的任务范围:

问题
Restic 不提供在 Windows 上浏览备份的便捷方式。

任务
尝试实现内置 Web 服务器的基本概念证明,允许使用浏览器浏览和恢复备份。

例子
执行以下命令将创建两个备份,您将学习如何通过命令行浏览备份。

openssl rand -hex 10 > ~/.restic-password
restic -p ~/.restic-password init --repo /tmp/backup

进行备份

restic -p ~/.restic-password --repo /tmp/backup 备份 ~

做一些改变

日期> ~/file-with-changes.txt

进行下一次备份

restic -p ~/.restic-password --repo /tmp/backup 备份 ~

看看你有什么备份

restic -p ~/.restic-password --repo /tmp/backup 快照

存储库 2ad83051 打开成功,密码正确

ID 时间主机标签路径

b8ee7b24 2020-09-11 17:20:17 thorsten-devvm-v3 /root

99388d0b 2020-09-11 17:21:23 thorsten-devvm-v3 /root

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 find snmp.json

恢复文件

restic -p ~/.restic-password --repo /tmp/backup restore latest --target /tmp/restore --include "/root/snmp.json"
规格
通过执行类似的操作,网络服务器启动,并且在内部备份是“打开的”。
restic -p ~/.restic-password --repo /tmp/backup webserver 127.0.0.1:3344

将浏览器指向HTTP://127.0.0.1 :3344 我得到存储库中所有快照的列表。 这是相同的数据,restic -p ~/.restic-password --repo /tmp/backup snapshots 显示。

我可以单击第一列上的 ID,并获得快照中所有文件的树视图。 与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 相同,必须减少为单个对象,因为文件没有改变。

恕我直言,在 Windows 上使用dokany 之类的东西添加对“restic mount”的支持会更有意义,在 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 的建议(谢谢!)放在一起,并制作了这个 dockerfile; https://github.com/stevedenman/restic-browser-docker
我一直在我的 Windows 机器上运行它(在 wsl2 上的 Docker 中),它非常适合浏览快照和下载文件。

对不起,你们说我不应该这样做吗? 为什么会有问题? 在我的情况下,建议的解决方案对于普通用户来说非常困难,我们需要做的就是启动程序(使用定义的标志)并打开浏览器!

你好。

作为一个restic用户,我只想在这个主题上花两分钱。

我是一个精通技术的用户,所以我对事物的静止方式感到满意。 我也知道 restic 是针对精通技术的人; 因此,当前的解决方案对某些人来说是/可能是复杂的。 但我认为实现可通过浏览器访问的本地 Web 服务器没有问题。 它不应该取代当前的解决方案,但作为辅助解决方案,拥有这样的东西会很好。 也许,这将使更多人更容易使用 restic。

谢谢。

我完全不同意“这对 Windows 用户来说太难了”的意见。 首先,这些用户已经设法运行 restic 来备份他们的东西,并且运行 mount 命令而不是备份命令并不困难。 其次,我们正在谈论打开命令行并在此处输入restic -r foo mount bar 。 说真的,这对任何人来说有多难? 如果有人对此有疑问,则这些人需要进行自我教育。 这不是什么“困难”的事情,它只是一个命令行。

编辑:只是为了澄清,我的意思是对于任何 Windows 用户来说这根本不难,因为restic mount在 Windows 上工作,就像在 #2862 中一样 - 我不是在暗示@filippobottega在下面写了什么这个评论对于普通的 Windows 用户来说很容易。 我认为不应该使用 WSL 来使用restic mount

你好,
我已经使用 WSL2 在 Windows 资源管理器上成功安装了一个静态备份,但并不像我预期的那么容易。
你必须:

  1. 按照Windows Subsystem for Linux Installation Guide for Windows 10 中的说明安装 WSL2
  2. 将 Ubuntu 的默认用户更改为 root,如无法从 Windows 编辑 /etc/nginx/nginx.conf处的 gurnec 响应中所述访问被拒绝。
  3. 以 root 身份登录到 Ubuntu 会话并按照使用 mount 还原中的说明挂载 restic 备份,例如restic -r /mnt/c/ResticBackup -p /mnt/c/ResticBackup/password-file.txt mount /mnt/restic

    最后你将能够看到:

image

其次,我们正在谈论打开命令行并在此处输入 restic -r foo mount bar。 说真的,这对任何人来说有多难?

如果您考虑使用 BIOS 选项让虚拟机管理程序工作、设置 WSL 并诊断其故障引起的任何问题等,这可能会非常费力。 在我看来,运行与我正在使用的 VmWare 和 VirtualBox 不兼容的 Microsoft Hypervisor 的要求对于 restic 来说简直是荒谬的。

如果您想在 LAN 中共享,Web 浏览器的指向和单击要容易得多,而且 http 的支持(提示:浏览器)比 smb 的 windows 风格要好一些。 也不清楚您是否可以通过 smb 公开这些坐骑,但即使可以,这一点仍然成立。

在我看来,毫无疑问,网络浏览器选项更简单。

如果您考虑使用 BIOS 选项让虚拟机管理程序工作、设置 WSL 并诊断其故障引起的任何问题等

@AndrewSav这不是这里讨论的内容。 请参阅@rawtaz 的评论(重点是我的)

编辑:只是为了澄清,我的意思是对于任何 Windows 用户_given restic mount在 Windows 上工作,就像在 #2862_ 中一样,这根本不难- 我不是在暗示@filippobottega在下面写的内容这个评论对于普通的 Windows 用户来说很容易。 我认为不应该使用 WSL 来使用restic mount

@cfbao您需要为此安装内核驱动程序。 我总是选择不需要额外内核驱动程序的选项。 我认为这应该是毫无疑问的,运行程序和打开浏览器比安装一些第三方软件更简单,然后可能重新启动然后运行一些晦涩的命令行(我的意思是你需要提供和输入命令行参数,在浏览器中,您只需单击即可导航)。

如果所述驱动程序中存在错误,则安装第三方驱动程序也具有影响整个系统的明显缺点。 同样,如果有更简单的(浏览器)选项,则 restic 对第三方驱动程序的要求是不合理的。

据我所知,这些选项并不矛盾,所以 restic 可以同时支持两者,从而满足两个群体的需求。

@cfbao您需要为此安装内核驱动程序。 我总是选择不需要额外内核驱动程序的选项。

@AndrewSav Point 是一项非常简单的任务,每个 Windows restic 用户都可以轻松完成。 因此,实现 Web 服务器的边际效用大大降低,并且可能无法证明静态开发和维护的成本是合理的。

@AndrewSav Web 界面非常适合查看备份,我可以想象。 但是如果有从不同目录恢复多个文件的任务,我更喜欢像样的文件管理器和作为文件系统安装的备份快照。 如果restic是后端提供WebDAV接口,由于其WebDAV客户端的限制,在Windows上仍然是劣质的解决方案:1)默认最大文件大小限制为50M,用户需要进行注册表操作才能将其扩展到4G; 2) 文件名中不支持某些字符。
我的观点是 Web 界面和正确的文件系统挂载是具有不同用例的互补功能。
第三方内核驱动程序(例如http://www.secfs.net/winfsp/)只需安装一次,无需重新启动。
我也不太明白关于“运行一些晦涩的命令行”的论点。 您是否也不需要运行一些 restic 命令来激活 Web 界面?

谢谢各位的意见! 所以让我们总结一下:

  • @fd0之前曾建议并批准在此问题中实施 HTTP 服务存储库浏览器,并在https://github.com/restic/restic/issues/60#issuecomment -122898872 中对其进行了详细说明。
  • 很多人认为使用这种平台中立的功能来浏览快照及其文件是个好主意。
  • 一个普遍的观点是,我们也希望能够从中恢复文件,在可行的范围内(我们可能不希望能够通过网络浏览器恢复整个档案,这更像是“下载文件” “ 行动)。
  • 它不应该对存储库进行任何写入操作,只能进行读取操作。
  • WebDAV 虽然是浏览文件的一种选择,但在客户端支持方面存在问题。 我们可能在某个时候也实现 WebDAV,但无论是 WebDAV 还是 Web 服务器都不排除另一个——它们是独立的功能。

我没有看到任何阻止继续工作和为此进行 PR 的事情。 我个人是支持的。 我认为我们应该:

  • 从小处着手,制作一个可以浏览其中的快照和文件的 Web GUI,然后一旦我们有了坚实的基础,就开始添加恢复功能。
  • 让它开始使用命令restic serve http以便我们稍后可以添加其他服务方法,例如restic serve webdavrestic serve rest
  • 让它在启动服务器时生成一个临时用户名和密码,以
  • 允许配置 IP/主机名和端口以使用参数绑定,例如restic serve http 127.0.0.1:8080
  • 不要编写硬编码资产/HTML/JS/CSS 的丑陋代码,而是使用例如https://github.com/tv42/becky嵌入适当的 Web GUI,或者甚至从使用net/http/#FileServer 开始
  • 意识到这是一个需要相当长的时间才能完成的功能,这不是我们会在一夜之间完成的事情。

现有工作和类似参考:

此页面是否有帮助?
0 / 5 - 0 等级