文章总结: 文档介绍了网安人笔记同步方案V2.0,针对跨设备更新滞后问题,提出即时推送与定时拉取结合的双向机制。通过PowerShell脚本和Rclone配置,结合Typora自动重载设置,实现了基于OSS的无审查、自动化多端无感同步,构建了高效的个人知识堡垒。 综合评分: 93 文章分类: 安全工具,解决方案,安全建设,云安全,数据安全
网安人的硬核笔记同步方案 V2.0 进化
原创
Ca1m
FunnyHacking
2026年1月13日 09:05 上海
01. 意外的“时差”
上一篇推文分享了 Typora + Rclone + 阿里云 OSS 的硬核同步方案后,不少网安小伙伴私信我说:“太爽了,再也不怕xx盘和xx笔记拦截我的 Webshell 笔记了!”
但随着深度使用,我也发现了一个隐蔽的“坑”:
场景还原: 我在电脑 A 编辑了笔记,脚本秒传 OSS。当我换到电脑 B 准备继续时,发现 B 的本地文件夹还是旧的。除非我在 B 上手动改一下文件(触发监控)或者重启脚本,否则云端的更新就像“隐身”了一样。
原因分析: 我们之前的脚本是“被动触发型”。它只盯着本地看:
- • 本地变了 -> 传到云端(OK ✅)
- • 云端变了 -> 本地完全不知道(坑 ❌)
今天,我们就给这个方案打个“补丁”,实现真正的全自动双向无感同步。
02. 解决思路:本地“即时推”+ 云端“定时拉”
要解决这个问题,我们需要把“单向监控”升级为**“主动守护模式”**。逻辑如下:
- 1. 即时上传(不动):继续保留
FileSystemWatcher,只要你点击Ctrl+S,立刻推送到 OSS。 - 2. 周期拉取(新增):在脚本里加一个计时器(心跳机制),每隔几分钟(如 5 分钟,可以根据自己的需要来设置)自动执行一次
rclone sync 云端 本地。
这样,即使你电脑 B 一直开着,它也会每隔几分钟去云端“巡检”一次,把你在电脑 A 上的改动拉回来。
03. 脚本 V2.0 完整代码
请更新你的 SyncNotes.ps1 脚本。建议将同步间隔设为 300 秒(5分钟),既保证了时效性,又不会频繁占用 CPU。这个根据大家自己的需要来,因为我是家里和公司电脑同步,路上是一个小时左右,我直接设置50分钟即可。
# ================= 进化版配置区 =================
$LocalPath = "D:\Typora" # 你的笔记本地路径
$RemotePath = "aliyun_oss:secnote/notes"
$LogFile = "D:\Scripts\Sync\sync_log.txt"
$SyncInterval = 300 # 每5分钟强制从云端拉取一次
# ===============================================
function Write-Log($Message) {
$Timestamp = Get-Date-Format"yyyy-MM-dd HH:mm:ss"
"$Timestamp - $Message" | Out-File-FilePath$LogFile-Append
}
Write-Log"同步守护进程 V2.0 启动(实时推+定时拉模式)"
# 1. 启动时先做一次全量拉取,确保开机即最新
rclone sync $RemotePath$LocalPath--quiet
# 2. 本地监控逻辑 (本地 -> 云端)
$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = $LocalPath
$watcher.Filter = "*.*"
$watcher.IncludeSubdirectories = $true
$watcher.EnableRaisingEvents = $true
$LocalToRemoteAction = {
$name = $Event.SourceEventArgs.Name
if ($name-notmatch"sync_log.txt|~") {
Start-Sleep-Seconds2
rclone sync "D:\Typora""aliyun_oss:secnote/notes"--quiet
Write-Log"检测到本地修改,已同步至云端: $name"
}
}
Register-ObjectEvent$watcher"Changed"-Action$LocalToRemoteAction
Register-ObjectEvent$watcher"Created"-Action$LocalToRemoteAction
Register-ObjectEvent$watcher"Deleted"-Action$LocalToRemoteAction
# 3. 核心改进:无限循环计时器 (云端 -> 本地)
$lastSyncTime = Get-Date
while ($true) {
$currentTime = Get-Date
if (($currentTime - $lastSyncTime).TotalSeconds -ge$SyncInterval) {
Write-Log"周期性巡检:正在从云端拉取更新..."
rclone sync $RemotePath$LocalPath--quiet
$lastSyncTime = Get-Date
}
# 每 10 秒跳动一次心跳,几乎不占 CPU
Start-Sleep-Seconds10
}
备选:加个 Bat 快捷方式:另外可以在桌面放一个 Force_Pull.bat 作为应急方案,给急性子的小伙伴准备。使用时点击即拉取更新。
@echo off
rclone sync aliyun_oss:secnote/notes D:\Typora --progress
echo 同步完成!
pause
04. 终极体验:开启 Typora 的“自动重载”
当后台脚本把云端的最新笔记拉回本地后,如果你的 Typora 正开着那个文件,它会弹窗问你“是否重新加载”。
为了实现真正的“无感”,请在 Typora 中开启这个隐藏设置:
- 1. 打开 Typora ->
偏好设置->通用。 - 2. 勾选 “自动重新加载外部修改的文件”。
至此,你的笔记系统彻底变成了一个“分布式数据库”: 在电脑 A 写完,合上盖子走人;回到家打开电脑 B,Typora 里的内容已经静默更新好了,连个弹窗都没有。
05. 写在最后
作为搞安全/技术的,我们对“工具”的要求总是近乎刻薄。
这种“手搓同步方案”的魅力在于:你不需要信任任何第三方云盘的审核机制,也不需要忍受商业软件的弹窗。你通过 50 行代码,利用最基础的 S3 协议,就搭建出了一个连大厂都无法拦截、无法审查的知识堡垒。
如果你也遇到了跨机同步的烦恼,赶紧去更新脚本吧!
除了 OSS 方案,大家还在用什么“免审”同步姿势?请大佬们留言交流。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:FunnyHacking Ca1m《网安人的硬核笔记同步方案 V2.0 进化》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论