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

Typora的多端同步方案,如何多台计算机共享md文件?Windows和Mac通过定时执行git来同步markdown文件

Windows和Mac通过定时执行git来同步markdown文件。
在阅读文章前,务必给typora配好图床,图床真的很爽,去网上搜搜教程二十分钟配好。

配置git免密码推拉

首先需要给git配置免登录,使用ssh推拉代码。如果不想看废话,请看标准执行流程

ssh-keygen -t ed25519 -C "your_email@example.com"其中,邮箱地址只是一个标识,默认会在Mac上的/Users/zhangyongle/.ssh/id_ed25519保存(隐藏目录,使用cmd+shift+.显示)

若没有使用默认的路径,需要手动将生成的ssh密钥加载。

ssh-add /path/to/your/custom_key  # 替换为你的密钥实际路径,如 ~/.ssh/my_key

或者指定密钥路径

ssh -i /path/to/your/custom_key

标准执行流程:

ssh生成密钥

ssh-keygen -t rsa

记录密钥,打开生成的.pub文件,拷贝(在生成密钥的时候会有生成文件的地址)

image-20251022091809903

然后就可以通过git访问仓库了。

下面来分别介绍Mac和Windows定时脚本的方案(经过完整执行的)

Windows定时执行脚本

编写一个bat脚本,注意路径中不要有中文。该脚本实现如果有变更,则提交代码,无变更则不提交。请注意修改脚本中的仓库路径和日志目录(注意不要放到一起,否则每次运行脚本都要产生日志,每次有日志变更就又要交代码。。检测变更就没有了意义)

@echo off
chcp 65001 >nul 2>&1:: 配置路径(仓库路径和日志目录)
set "REPO_PATH=F:\repository\typora-synchronization"
set "LOG_DIR=F:\tool\script\log"
set "LOG_FILE=%LOG_DIR%\git_sync.log":: 确保日志目录存在(不存在则创建)
if not exist "%LOG_DIR%" (md "%LOG_DIR%" >nul 2>&1
):: 获取当前时间
set "NOW=%date:~0,10% %time:~0,8%":: 记录执行开始
echo [%NOW%] 脚本开始执行 >> "%LOG_FILE%":: 切换到仓库目录
cd /d "%REPO_PATH%" || (echo [%NOW%] 错误:无法切换到仓库目录 "%REPO_PATH%" >> "%LOG_FILE%"exit /b 1
):: 拉取远程代码
git pull >nul 2>&1
echo [%NOW%] git pull 执行完成 >> "%LOG_FILE%":: 检查工作区是否有变更(未执行add前)
git diff --quiet --exit-code
if %errorlevel% equ 0 (:: 无任何变更,直接结束echo [%NOW%] 工作区无变更,无需提交和推送 >> "%LOG_FILE%"
) else (:: 有变更:添加到暂存区并提交推送git add . >nul 2>&1git commit -m "Windows自动提交 [%NOW%]" >nul 2>&1git push >nul 2>&1echo [%NOW%] 检测到变更,已执行 add/commit/push >> "%LOG_FILE%"
):: 记录执行结束
echo [%NOW%] 脚本执行结束 >> "%LOG_FILE%"
echo. >> "%LOG_FILE%"  :: 空行分隔每次执行

可以双击测试脚本能否成功运行,若不能,可以通过在脚本最后一行加pause来查看报错信息。

打开Windows任务计划程序,点击右边的新建任务

image-20251022105811799

image-20251022105815021

然后添加触发器和操作来自定义操作。触发器选择每半小时执行一次,持续时间为1天。

image-20251022110452784

触发器设置关机时运行(未验证)

image-20251022114318067

可以通过点击任务计划程序的右侧,”运行“来测试能否正常执行。

Mac 定时执行脚本

使用launchd启用定时任务,首先通过 .plist 格式的配置文件定义任务,文件需放在以下目录之一:

  • ~/Library/LaunchAgents/:当前用户的定时任务(推荐,无需管理员权限)
  • /Library/LaunchAgents/:所有用户的定时任务(需管理员权限)
  • /Library/LaunchDaemons/:系统级别的定时任务(需管理员权限,无用户交互)

首先创建一个sh脚本(不知道为什么mac的git在没有变更的情况下不会推代码,而Windows会推,可能是我的版本问题,总之不需要做特殊处理了)

cd 存放
git pull
git add .
git commit -m "sync at $(date +'%Y-%m-%d %H:%M:%S')"
git push

去mac设置里,找到“隐私与安全性”/“完全磁盘访问权限”,添加bin/sh的权限。(关键一步)

image-20251022212509183

创建一个md_sync.plist文件,规则可以去问一下ai或者百度一下,不再赘述。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict><!-- 任务唯一标识(建议与文件名一致) --><key>Label</key><string>md_sync</string><!-- 要执行的脚本路径(绝对路径) --><key>ProgramArguments</key><array><string>/Volumes/lyle/misc/script/md_sync.sh</string>  <!-- 脚本绝对路径 --></array><!-- 定时规则(使用 cron 风格或 launchd 特有格式) --><key>StartCalendarInterval</key><dict><key>Minute</key><integer>10</integer></dict>1<!-- 输出日志路径(可选,方便调试) --><key>StandardOutPath</key><string>/Volumes/lyle/misc/script/script_output.log</string><key>StandardErrorPath</key><string>/Volumes/lyle/misc/script/script_error.log</string><!-- 是否在加载时立即执行一次(可选) --><key>RunAtLoad</key><false/>
</dict>
</plist>

执行下面的命令加载

launchctl load md_sync.plist # plist文件存放路径

手动执行,测试是否可以成功提交

launchctl start md_sync 
http://www.hskmm.com/?act=detail&tid=36905

相关文章:

  • Trie树
  • Seg T
  • 2025.10.22总结 - A
  • 蛋白表达系统的技术布局与应用
  • 软件工程学习日志2025.10.22
  • CF2077B Finding OR Sum
  • 10月22日
  • OOP-实验二
  • P2272 [ZJOI2007] 最大半连通子图
  • 2025年,哪些微信公众号排版工具能带来效率变革?
  • 我对软件工程的理解
  • PCB线圈生成工具
  • 软件工程第三次作业--结对项目
  • AI股票预测分析报告 - 2025年10月22日
  • CF2144D
  • 折腾笔记[33]-使用uiautomation自动重复读取图片(被控程序为.net框架)
  • switch的简单运用
  • 软工第三次作业——结对项目
  • 10.22总结
  • AutoGen框架入门:5个核心概念搭建智能体协作系统
  • 使用google上colab编辑器
  • 16
  • 英语_阅读_The power of curiosity_待读
  • goden-eye 靶场
  • 20232424 2025-2026-1 《网络与系统攻防技术》实验二实验报告
  • 记录docker desktop wsl2奔溃的查询思路
  • 股票操作统计分析报告 - 2025年10月22日
  • 软工结对作业
  • 20232419 2025-2026-1《网络与系统攻防技术》实验二实验报告
  • dfs模板(p1036)