Ubuntu LTS软件源

来自Ubuntu LTS的小意外。

背景

为了备份VPS上的docker挂载数据到OneDrive,赶忙安装了restic。restic既有加密又有快照恢复,真是太棒啦!

但执行到restic -r rclone:onedrive:backupfolder init时,突然提示:

1
Fatal: create repository at rclone:onedrive:backupfolder failed: invalid backend

一条简单的命令居然也会报错,这崩得也太快了,还没开始就结束?

分析

如果这里的backend是invalid的,说明rclone连接有问题。

但实测命令rclone lsd: onedrive,能够正常显示目录结构。连接是有效的。

原因

restic论坛里提到过类似问题:restic-with-rclone

简单总结:根据源码分析,出现这个错误的原因是restic版本过时。备份到OneDrive需要使用rclone,但restic在0.9.0版本里才加入rclone支持。

被安装低版本的原因在于VPS安装的Ubuntu LTS系统,在运行apt-get install resitc后,安装的restic版本号是0.8.3。

本质其实是一个系统运维问题。

对普通用户而言,单台服务器跑跑小程序、代码,没必要追求生产环境的稳定,反而应当尽量与自己的开发、测试环境保持一致,以便于复现、还原异常与报错。

修复

要想对各类发行版一视同仁地安装restic的最新版本,自己编译是比较稳妥的方案:

安装go环境

  • 根据go主页的Download and install安装go环境。

  • 下载官方包:

    1
    wget https://github.com/restic/restic/releases/download/v0.12.0/restic-0.12.0.tar.gz
  • 解压后执行make编译。

  • 配置定时任务

    • crontab

      • 可以先把RESTIC_PASSWORD="here is your password"加到/.bashrc或者/etc/profile里
      • 之后crontab -e添加任务配置:

    0 4 * * * . ~/.bashrc; /home/user/restic-0.12.0/restic -r rclone:onedrivedb:Backup backup /home/usdata; / home/user/restic-0.12.0/restic forget -q --prune --keep-hourly 24 --keep-daily 7

一次失败的刷剧经历 联想Yoga S740的糟心体验