当前位置: 首页 > 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.zskr.cn/news/27780.html

相关文章:

  • P2272 [ZJOI2007] 最大半连通子图
  • PCB线圈生成工具
  • 软件工程第三次作业--结对项目
  • CF2144D
  • 科学计算库Numpy
  • 10.22总结
  • 使用google上colab编辑器
  • 20251022周三日记
  • 图图
  • 软工结对作业
  • dfs模板(p1036)
  • CF2078D Scammy Game Ad
  • [树状数组]P11855 [CSP-J2022 山东] 部署 题解
  • C#/.NET/.NET Core技术前沿周刊 | 第 58 期(2025年10.13-10.19)
  • 完整教程:阿里云上CentOS6.9(停止维护)导致的yum下载chrony失败如何解决?
  • k8s 常用命令 - 实践
  • 申威架构ky10安装php-7.2.10.rpm详细步骤(国产麒麟系统64位)
  • Unity 虚拟仿真实验中设计模式的使用 ——策略模式(Strategy Pattern) - 指南
  • vue2:v-if和v-show的区别以及造成的影响
  • P6845 题解
  • office2024绿色精简版
  • LGP3694 邦邦的大合唱站队 学习笔记
  • TRAE 设计团队如何玩转 Vibe Coding(上)|高美感页面生成篇
  • 详细介绍:观察者模式(Observer Pattern)定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。
  • LeeCode_226反转二叉树
  • TRAE 设计团队如何玩转 Vibe Coding(下)|设计工具生成与提效篇
  • 取证-windbg和dmp,以及文件分析基本流程
  • 20232422 2025-2026-1 《网络与系统攻防技术》实验二实验报告
  • 完整教程:C++项目:仿muduo库高并发服务器-------connection模块
  • 营销数字化专家要求