找回密码
 立即注册
首页 业界区 业界 Overleaf项目文件同步工具: olsync

Overleaf项目文件同步工具: olsync

煅圆吧 7 天前
Hi! 我编写了一个用于Overleaf项目备份的命令行工具olsync, 希望可以帮助你更好的管理你的latex项目以及私有化的Overleaf服务实例.
如果喜欢, 请点一个Star, 谢谢
olsync 是一个简单的命令行工具,用于将你的 Overleaf 项目进行异地同步,从而轻松备份和管理离线 LaTeX 项目。
为什么需要 olsync

Overleaf 官方提供的项目同步功能(如 Git 访问或同步到 GitHub)是 付费功能,只有订阅了高级版才可以使用。
而如果你使用的是 自建 Overleaf 服务,同步功能同样需要购买付费版本才会开放。
此外,自建 Overleaf 服务虽然便于团队协作,但 硬盘一旦损坏或服务器意外宕机,就可能导致项目文件丢失
因此,最稳妥的做法是 定时将 Overleaf 项目异地备份,避免单点故障带来的风险。
olsync 正是为此而生:它可以在不依赖付费功能的前提下,自动下载并同步 Overleaf 项目,帮助你轻松完成本地备份。

  • 并且未来计划实现和Overleaf官方同步服务一样的Github自动同步功能(更好的异地备份和用户体验)
为了不付钱给overleaf在我写论文的时候烦我, 我探索和编写本地部署overleaf服务帮助latex论文编写这篇博客到现在自动备份数据防止丢失, 真的是花了一些功夫
对比其他工具

相比通用的文件同步工具(如 Syncthing),olsync 更适合 Overleaf 项目的备份场景。
首先,我的自建 Overleaf 服务是通过 Docker 部署的,项目数据文件夹的 owner 并非当前用户,直接同步需要 sudo 权限,使用不便。
其次,Overleaf 的备份应当 面向具体的 LaTeX 项目,而不是面向整个数据库或文件卷,这样才能精确控制需要备份的项目,避免无关文件。
最后,olsync 提供简洁的命令行接口,结合定时任务即可实现自动化备份,比通用同步工具更轻量、更符合日常需求。
olsync

Github: https://github.com/xuhe2/olsync
功能


  • 自定义服务地址
    通过 baseUrl 指定 Overleaf 服务的主页地址,支持自建 Overleaf 服务。
  • 灵活的备份路径
    可通过 backup.path 设置备份文件保存位置,支持相对路径和绝对路径。
  • 定时任务支持
    使用 backup.schedule 配置 Cron 表达式,实现定时自动备份,例如每 6 小时执行一次。
  • 备份数量控制
    通过 backup.keep_last 设置保留的最近备份数量,自动清理过期文件,避免磁盘占满。
  • 按项目筛选备份
    在 projects.include 中列出需要备份的项目名称,只备份指定的 LaTeX 项目,避免无关项目占用空间。
Usage

Install

olsync 的使用方法可参考项目的 README。
安装方式非常简单,可以选择以下两种方法:

  • Clone 仓库并编译
  1. git clone https://github.com/xuhe2/olsync.git
  2. cd olsync
  3. make build
复制代码

  • Go install
  1. go install github.com/xuhe2/olsync@latest
复制代码
从浏览器中获取cookie并且配置好config.yaml就可以
参考config.template.yaml文件
Config
  1. # config.yaml
  2. # This file contains the configuration for the olsync application.
  3. overleaf:
  4.   # The base URL for the Overleaf API.
  5.   # This should typically be "https://www.overleaf.com".
  6.   baseUrl: "https://www.overleaf.com"
  7.   # baseUrl: "http://localhost:8880" # local overleaf server
  8.   # The session cookies required for authentication.
  9.   # You can get these from your browser's developer tools after logging in.
  10.   cookies:
  11.     - name: "overleaf_session2"
  12.       value: ""
  13.     # for local overleaf server
  14.     # - name: "overleaf.sid"
  15.     #   value: ""
  16. backup:
  17.   path: "./Backup"            # 备份文件夹,支持相对路径
  18.   schedule: "0 * */6 * * *"     # Cron 表达式,每 6 小时备份一次
  19.   keep_last: 5                # 保留最近 5 个备份,自动清理旧文件
  20. projects:
  21.   include:                        # 通过项目名列表来确定需要备份哪些项目
  22.     - "quick-LaTeX"
复制代码
按照需求填写即可
Run
  1. ./bin/olsync-linux-amd64 ./config.yaml
复制代码
效果

我每隔一分钟备份一个项目进行验证
1.png

检查备份文件
2.png

未来计划

未来计划中,olsync 将支持自动同步到 GitHub,实现与 Overleaf 官方付费功能类似的体验。
该功能将基于 Go 的 go-git 包实现,能够在每次成功备份后自动将项目内容推送到指定的 Git 仓库。
这将使用户不仅可以本地备份,还能享受版本管理和远程冗余存储,进一步降低数据丢失风险。
TIP: 异常容忍

在备份过程中,如果由于网络问题导致部分项目下载失败,olsync 仍会继续尝试备份其他项目,保证尽量多的项目被保存。
但此时该次备份文件夹是不完整的,不会触发 keep_last 的旧备份清理逻辑,只有当本次所有项目均备份成功时才会清理旧文件夹。
这意味着在网络不稳定的情况下,可能会出现备份文件夹数量逐渐增加的情况,需要用户自行检查并清理不完整的备份或者等待第一次完整备份的出现。

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册