如何用 rclone serve restic 为 restic 备份提供 REST 存储后端?
如何用 rclone serve restic 为 restic 备份提供 REST 存储后端【免费下载链接】rclonersync for cloud storage - Google Drive, S3, Dropbox, Backblaze B2, One Drive, Swift, Hubic, Wasabi, Google Cloud Storage, Azure Blob, Azure Files, Yandex Files项目地址: https://gitcode.com/GitHub_Trending/rc/rclonerestic 是命令行备份工具但它的内置存储类型并不覆盖所有云存储。rclone serve resticrclone v1.40 引入可以启动一个 HTTP 服务把 rclone 配置的任意远端以 restic REST 后端的 API 形式暴露出去让 restic 把 rclone 作为数据层备份到 restic 本身不直接支持的云存储上。完成配置后restic 仓库指向rest://localhost:8080/restic init和restic backup即可正常运行备份数据实际落在 rclone 管理的云存储上。适用前提来自官方文档restic 版本需0.8.2 或更高才能与 rclone 互操作已安装 rclone 并配置好一个可用的远端云存储 provider 通过 rclone 认证。准备条件先配置并验证 rclone 远端rclone serve restic本身不处理云存储认证认证由 rclone 的远端配置承担。按 docs/content/docs.md 的 Configure 章节运行交互式配置创建远端rclone config配置完成后文档要求先用rclone lsd remote:检查远端是否工作remote:换成你实际的远端名后续命令同理替换rclone lsd remote:能正常列出顶层目录说明认证和连接没有问题可以进入下一步。启动 rclone restic 服务按 rclone serve restic 文档 的主路径启动服务器rclone serve restic -v remote:backup其中remote:backup表示把该远端下的backup目录作为 REST 端点你可以替换为远端中任意想使用的路径。-v让服务器输出访问日志默认只记录错误。默认服务监听localhost:8080可用--addr修改。文档同时说明--bwlimit会被文件传输遵守--stats控制统计输出。加--cache-objectsfalse可关闭对 List 调用返回对象的缓存默认开启缓存能加速下载、减少事务且内存占用很小一般保持默认即可。文档提示你可能希望服务器随系统启动例如做成服务。如果端口被占用serve restic会直接退出见 changelog 中 Ensure rclone exits if the port is in used 相关条目。配置 restic 使用 rclonerestic 侧按官方 REST server 配置方式设置两个环境变量后初始化仓库。以文档中的示例为例yourpassword和备份路径需替换为你自己的值$ export RESTIC_REPOSITORYrest://localhost:8080/ $ export RESTIC_PASSWORDyourpassword $ restic init created restic backend 8b1a4b56ae at rest://localhost:8080/以上是文档给出的示例输出。文档特别警告密码是访问仓库的必要条件丢失密码意味着数据不可恢复。然后执行备份文档示例输出如下同样为示例结果数值以实际运行为准$ restic backup /path/to/files/to/backup scan [/path/to/files/to/backup] scanned 189 directories, 312 files in 0:00 [0:00] 100.00% 38.128 MiB / 38.128 MiB 501 / 501 items 0 errors ETA 0:00 duration: 0:00 snapshot 45c8fdd8 saved看到snapshot ... saved即表示仓库初始化与备份链路都通了。可选分支多仓库与私有仓库如果一台serve restic要服务多个 restic 仓库文档要求在 URL 后追加目录名或路径且必须以/结尾$ export RESTIC_REPOSITORYrest://localhost:8080/user1repo/ # backup user1 stuff $ export RESTIC_REPOSITORYrest://localhost:8080/user2repo/ # backup user2 stuff如果希望限制每个用户只能访问自己的私有仓库加上--private-repos用户的仓库路径必须以/username/开头否则无法访问。此外--append-only可禁止删除仓库数据配合 restic 的 append-only 使用模式需要时与--private-repos一起考虑。监听地址、TLS 与认证服务器默认只监听localhost本地使用即可。如果要把服务暴露到局域网或公网文档建议同时启用认证必要时启用 TLS。监听地址rclone serve restic --addr :8080 remote:backup--addr可写成IP:Port如--addr 1.2.3.4:8000、:Port监听所有 IP--addr可重复使用同时监听多个地址/端口传:0让操作系统选择可用端口传unix:///path/to/socket或绝对路径可改用 Unix socket也可以不指定监听地址改用 systemd 的 socket activation.socket/.service 单元文件rclone 会监听服务管理器传入的所有 FD 并忽略--addr。TLS可选默认走 HTTP。启用 HTTPS 需同时提供--certPEM 证书可拼接 CA 证书和--keyPEM 私钥需要客户端证书校验时再加--client-ca。配置 TLS 后每个--addr监听器都提供 TLS个别监听器可用http://前缀显式提供明文 HTTPtls://前缀则显式要求 TLS缺少--cert/--key时报错。--min-tls-version可限制最低 TLS 版本取值为 tls1.0 到 tls1.3文档给出的默认值是 tls1.0。认证默认服务不做登录验证。文档给出三种方式--user--pass单一用户名密码--htpasswd /path/to/htpasswdApache 标准格式的 htpasswd 文件支持 MD5、SHA1、BCrypt文档推荐 BCrypt反向代理负责认证服务端用--user-from-header例如--user-from-headerx-remote-user读取代理设置的头部——文档提醒必须确保代理可信、头部不可被伪造否则会造成未授权访问。若以上方式都未配置而设置了--client-ca则用客户端证书的 common name 作为用户名。创建 htpasswd 文件需要系统装有htpasswd工具命令会在当前目录创建/追加名为htpasswd的文件密码由工具交互提示输入touch htpasswd htpasswd -B htpasswd user htpasswd -B htpasswd anotherUser该文件在 rclone 运行期间可以更新。--realm设置认证 realm--salt修改密码哈希盐值默认dlPL2MqE。常用服务器参数速查以下默认值与说明来自 rclone_serve_restic.md 的选项列表参数默认值用途--addr127.0.0.1:8080监听地址可重复--cache-objectstrue是否缓存 List 返回的对象--append-onlyfalse禁止删除仓库数据--private-reposfalse用户只能访问自己的私有仓库--baseurl空根路径URL 前缀便于反代rclone 会自动补首尾/rclone、/rclone、/rclone/等价--max-header-bytes4096允许的最大请求头字节数--server-read-timeout/--server-write-timeout1h0m0s读/写超时注意这是整个传输的总时长--response-header—为所有响应设置 HTTP 头格式Header-Name: value可重复会覆盖已有值--disable-zipfalse禁用 zip 下载选项--stdiofalse在 stdin/stdout 上运行 HTTP/2 服务器仅命令行可用rc 接口不支持协议方面服务器支持 HTTP/1.1 和 HTTP/2TLS 连接自动使用 HTTP/2非 TLS 连接也支持 h2c 明文 HTTP/2。验证与边界验证链路是三段式的rclone lsd remote:能列出目录——rclone 远端可用restic init输出created restic backend ... at rest://...——REST 后端握手成功restic backup输出snapshot ... saved——备份数据已写入 rclone 管理的存储。排查时文档建议用-v查看访问日志服务器本身会记录错误日志。需要留意的事实边界restic 必须 0.8.2低版本无法互操作多仓库路径必须以/结尾否则仓库定位不到对应目录服务暴露到非 localhost 时文档明确建议启用认证restic仓库密码丢失即数据不可恢复这是 restic 侧的安全模型不是 rclone 配置能规避的。相关文档rclone serveserve 各子命令总览、rclone config远端配置子命令。【免费下载链接】rclonersync for cloud storage - Google Drive, S3, Dropbox, Backblaze B2, One Drive, Swift, Hubic, Wasabi, Google Cloud Storage, Azure Blob, Azure Files, Yandex Files项目地址: https://gitcode.com/GitHub_Trending/rc/rclone创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考