Restic: Rclone 使大部分后端变得多余

创建于 2019-09-22  ·  17评论  ·  资料来源: restic/restic

我建议逐步淘汰所有存储库后端以支持 rclone - 这减轻了维护它们的负担(例如安全问题)和更简单的设置。

这个行动有什么负面影响吗?

  • 向后兼容(鼓励用户使用 rclone?)

最有用的评论

我不会用 rclone 替换现有的后端,除非后者成功嵌入为库,因此始终包含在 restic 的发行版中。

在完成此操作之前(或不执行此操作),我会将 rclone 设为允许此操作的包管理器中的可选依赖项(例如,apt 和 portage)。 如果没有安装 rclone,restic 可能会显示一条消息,指的是 rclone 的网页,建议 (1) 查阅页面了解安装方法,(2) 使用系统的包管理器安装 rclone,(3) 发出“curl + bash”命令,并带有“确保您知道自己在做什么”的警告。

即使在询问之后,我也不会代表用户执行命令。

所有17条评论

这甚至没有任何意义。 Rclone 是一种传输实用程序,而不是备份实用程序。 它不能替换 restic 存储库。

他可能只是意味着放弃 restic 自己的后端代码,除了 rclone 的代码,以便 rclone 集成成为所有后端都经过的代码。

@jtagcat我认为你的意思是“后端”而不是“存储库”。

我在精神上同意这个提议。
实际上删除所有其他后端可能太具有破坏性,但至少文档可以将 rclone 突出显示为首选后端,并将其他远程后端标记为“遗留”。

实际上我认为我们可以做得更好,然后将后端标记为遗产。
在文档中,将它们标记为遗留物,但在内部工作中,将遗留物即时转换为 rclone。 在某些 rclone 后端,您可以直接翻译(我头脑中的一个例子是 http ),其他人则将其翻译为临时配置文件,然后将--config /path/to/config与 rclone 一起使用。

如果你问我作为 restic 的用户,我会说所有后端都必须使用 rclone 会很可怕。 它需要为您的后端设置 rclone 配置并保留一个 rclone 二进制文件,前者在很大程度上消除了 restic 的临时和无配置性质,这非常好。 我不喜欢 rclone 的一件事是我必须在运行它之前对其进行配置,而不仅仅是能够为其提供两个 URI 作为源和目标。

一个更好的建议 IMO 是我们是否可以rclone

你会如何将 rclone 嵌入到 restic 中? 如果要积极关闭此问题,则必须这样做。
你会像'rclone not found, running curl https://rclone.org/install.sh | sudo bash '(curl 和 sudo 可能不存在于系统中)? 因为如果您不是通过 pkg 管理器安装,则不能简单地将它添加为包管理器中的依赖项。

将当前后端即时转换为临时 rclone 配置是可能的,当纯粹使用 rclone 来处理东西时,我自己也有点恼火。

你会如何将 rclone 嵌入到 restic 中?

我还没有调查这方面的可能性。 这只是我想过几次的事情。

再想一想,嵌入可能最终会成为“作为依赖项安装”,以允许 rclone 保持最新状态而无需更新 restic。
可能最好的方法是将 rclone 添加为依赖项,在可能的情况下,并在任何地方“找不到 rclone,安装”(当由于某种原因找不到 rclone 依赖项时,作为备份)。

尽管 rclone 安装程序存在一些问题。 使其与 posix 兼容。

  • curl - 我见过一两个系统,它不是开箱即用的。
  • sudo - 同上
  • 解压缩/其他解压缩的东西,您可能在最小安装上安装 rclone 时遇到过这种情况。

我更多地考虑使 rclone 可嵌入为 al 库或其他任何东西,以便它可以集成到 restic 中。 当 rclone 中的某些内容更新到需要新版本时,发布新的 restic 版本应该不成问题。

可能最好的方法是将 rclone 添加为依赖项,在可能的情况下,并在任何地方“找不到 rclone,安装”(当由于某种原因找不到 rclone 依赖项时,作为备份)。

很抱歉这么说,但尝试(自动)在用户的机器上安装软件是(可能)我在 restic 的问题讨论中读到的最糟糕的想法。

因为:

  • 环境可能不允许安装新软件。
  • 用户(或系统管理员)可能不希望安装新软件。
  • 在没有明确请求的情况下访问 Internet 可能是不可取的。
  • 安装程序可能会猜测新软件的错误位置。
  • 新软件的安装可能会干扰环境的正常功能(例如,通过在用户/包管理器/管理员/审核员/其他任何期望找到它们的常规位置之外提供可执行文件,从而造成混乱)。
  • 安装可能会失败或产生错误的结果; 要么以明显的方式,要么以微妙且难以发现的方式。

可能最好的方法是将 rclone 添加为依赖项,在可能的情况下,并在任何地方“找不到 rclone,安装”(当由于某种原因找不到 rclone 依赖项时,作为备份)。

很抱歉这么说,但尝试(自动)在用户的机器上安装软件是(可能)我在 restic 的问题讨论中读到的最糟糕的想法。

因为:

* The environment may not allow installation of new software.

* The user (or the system administrator) may not want new software to be installed.

* Accessing the Internet without explicit request may be undesirable.

* The installer may guess a wrong place for the new software.

* Installation of new software may interfere with the normal functions of the environment (for example, by providing executables outside of regular places where users/package managers/administrators/auditors/whatever else expect to find them, and thus creating confusion).

* The installation may fail or produce incorrect results; either in an obvious manner, or in a subtle and hard-to-discover way.

是的,你有什么建议?

我的意思是这样的:

restic rclone not found...
Install 'rclone' with command 'curl https://rclone.org/install.sh | sudo bash'  to provide rclone backends? [Y/n]

我不会用 rclone 替换现有的后端,除非后者成功嵌入为库,因此始终包含在 restic 的发行版中。

在完成此操作之前(或不执行此操作),我会将 rclone 设为允许此操作的包管理器中的可选依赖项(例如,apt 和 portage)。 如果没有安装 rclone,restic 可能会显示一条消息,指的是 rclone 的网页,建议 (1) 查阅页面了解安装方法,(2) 使用系统的包管理器安装 rclone,(3) 发出“curl + bash”命令,并带有“确保您知道自己在做什么”的警告。

即使在询问之后,我也不会代表用户执行命令。

RESTIC(尤其是在 linux 上)作为没有依赖项的静态二进制文件的性质在裸机还原和恢复场景中是绝对无价的。

我目前更喜欢使用“rest-server”(带有 haproxy 前端进行身份验证)进行内部备份,并依赖于原生支持它。 如果我在时间关键的恢复期间被迫使用 RESTICRCLONE,我可能会找到另一种解决方案。

RESTIC(尤其是在 linux 上)作为没有依赖项的静态二进制文件的性质在裸机还原和恢复场景中是绝对无价的。

我目前更喜欢使用“rest-server”(带有 haproxy 前端进行身份验证)进行内部备份,并依赖于原生支持它。 如果我在时间关键的恢复期间_被迫_弄乱 RESTIC _and_ RCLONE,我可能会找到另一个解决方案。

Rest 后端不会被移除,因为它是 Restic 独有的。 我也使用rest-server,将凭据放入其中非常方便。

我认为问题处于“仅当嵌入 rclone 时”的状态。 因为没有人真正需要这个(尽管嵌入式 rclone 将是 neet)。 我想现在,更多的是“不要添加新的后端,rclone 尚不支持的内容”,以及对某人(可能在很多很多个月内,我)的功能请求,谁愿意这样做,嵌入 rclone .

至于准系统,需要发布不使用 bzip 的替代版本(据我所知,安装 bzip 的唯一原因是restic)。 至于那个,如果没有其他人这样做,我可能会这样做,因为对我来说一个待办事项是#2705

我不喜欢 rclone 的一件事是我_必须_在运行它之前对其进行配置,而不是仅仅能够为其提供两个 URI 作为源和目标。

@rawtaz
做到这一点,因为rclone不需要你进行任何配置。
您可以完全删除任何 _~/.rclone.conf_ 或 _~/.config/rclone/rclone.conf_,它们只是针对默认值或后备选项进行咨询。
现在试试这个:

rclone copy ./file.txt :sftp:subdir --sftp-host=localhost --sftp-key-file=~/.ssh/id_rsa

它完全有效并在文档中进行了描述: https: //rclone.org/docs/#backend -path-to-dir

您还可以通过环境传递所有选项或将其与 CLI 参数混合:

export RCLONE_SFTP_HOST=localhost
export RCLONE_SFTP_KEY_FILE=~/.ssh/id_rsa
rclone ls :sftp:

https://github.com/rclone/rclone/issues/633 中讨论了使用 rclone 作为库

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

相关问题

fbartels picture fbartels  ·  3评论

axllent picture axllent  ·  4评论

christian-vent picture christian-vent  ·  3评论

shibumi picture shibumi  ·  3评论

viric picture viric  ·  5评论