当前位置: 首页 > news >正文

Overleaf项目文件同步工具: olsync

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。
安装方式非常简单,可以选择以下两种方法:

  1. Clone 仓库并编译
git clone https://github.com/xuhe2/olsync.git
cd olsync
make build
  1. 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

效果

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

image

检查备份文件

image

未来计划

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

TIP: 异常容忍

在备份过程中,如果由于网络问题导致部分项目下载失败,olsync 仍会继续尝试备份其他项目,保证尽量多的项目被保存。
但此时该次备份文件夹是不完整的,不会触发 keep_last 的旧备份清理逻辑,只有当本次所有项目均备份成功时才会清理旧文件夹。

这意味着在网络不稳定的情况下,可能会出现备份文件夹数量逐渐增加的情况,需要用户自行检查并清理不完整的备份或者等待第一次完整备份的出现。

http://www.hskmm.com/?act=detail&tid=18318

相关文章:

  • CF1995D Cases
  • 日志| 编辑距离 | 最长有效括号 |
  • day5
  • 《etcd库——键值存储系统》 - 教程
  • 有一个函数只会返回0和1,且返回0和返回1的概率不等。要求只能通过这个函数生成一个等概率返回0和1的函数
  • AI智能体开发实战:17种核心架构模式详解与Python代码实现
  • 代码随想录算法训练营第十天 | 232. 用栈实现队列、225. 用队列实现栈、20. 有效的括号、删除字符串中的所有相邻重复项
  • 2025.9.26总结 - A
  • MySQL性能优化
  • 关于“悬荡悟空”决策机制的简要技术说明
  • 最小二乘问题详解1:线性最小二乘
  • 9月26日
  • 工程监理行业多模态视觉​​​​​​​大模型系统,打造工地行业全场景的监理智能生态
  • 完整教程:【鸿蒙心迹】摸蓝图,打地基
  • 正则表达式
  • LuatOS Air780EPM 实现 HTTP 通信:从原理到代码实践
  • 搜维尔科技:Senseglove Nova 2触觉手套:虚拟训练、VR/AR模拟和研究中的触觉反馈
  • 深入解析:盟接之桥EDI软件:中国制造全球化进程中的连接挑战与路径探索
  • 【STM32H7】基于CubeMX从零开始搭建的HAL库工程模板(包含串口重定向和DSP库)
  • 在Windows架构中安装Miniforge及python环境变量配置
  • 搜维尔科技:Force Dimension Omega力反馈设备遥操作工业机器人
  • 3. Ollama 安装,流式输出,多模态,思考模型 - Rainbow
  • C++程序练习(部分未完全完成)
  • C#性能优化基础:垃圾回收机制
  • 实验报告1
  • 2025.9.26——1蓝
  • 根号
  • 【A】杂题选将
  • 有一个[1,5]的等概率随机函数fx(),在不改变fx()函数的情况下,利用fx()函数做出一个[1,7]的等概率随机函数。
  • WSL2 磁盘清理