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 仓库并编译
git clone https://github.com/xuhe2/olsync.git
cd olsync
make build
- Go install
go install github.com/xuhe2/olsync@latest
从浏览器中获取cookie并且配置好config.yaml就可以
参考config.template.yaml文件
Config
# config.yaml
# This file contains the configuration for the olsync application.overleaf:# The base URL for the Overleaf API.# This should typically be "https://www.overleaf.com".baseUrl: "https://www.overleaf.com"# baseUrl: "http://localhost:8880" # local overleaf server# The session cookies required for authentication.# You can get these from your browser's developer tools after logging in.cookies:- name: "overleaf_session2"value: ""# for local overleaf server# - name: "overleaf.sid"# value: ""backup:path: "./Backup" # 备份文件夹,支持相对路径schedule: "0 * */6 * * *" # Cron 表达式,每 6 小时备份一次keep_last: 5 # 保留最近 5 个备份,自动清理旧文件projects:include: # 通过项目名列表来确定需要备份哪些项目- "quick-LaTeX"
按照需求填写即可
Run
./bin/olsync-linux-amd64 ./config.yaml
效果
我每隔一分钟备份一个项目进行验证
检查备份文件
未来计划
未来计划中,olsync
将支持自动同步到 GitHub,实现与 Overleaf 官方付费功能类似的体验。
该功能将基于 Go 的 go-git
包实现,能够在每次成功备份后自动将项目内容推送到指定的 Git 仓库。
这将使用户不仅可以本地备份,还能享受版本管理和远程冗余存储,进一步降低数据丢失风险。
TIP: 异常容忍
在备份过程中,如果由于网络问题导致部分项目下载失败,olsync
仍会继续尝试备份其他项目,保证尽量多的项目被保存。
但此时该次备份文件夹是不完整的,不会触发 keep_last
的旧备份清理逻辑,只有当本次所有项目均备份成功时才会清理旧文件夹。
这意味着在网络不稳定的情况下,可能会出现备份文件夹数量逐渐增加的情况,需要用户自行检查并清理不完整的备份或者等待第一次完整备份的出现。