[{"data":1,"prerenderedAt":1603},["ShallowReactive",2],{"/2026/obsidian":3,"surround-/2026/obsidian":1597},{"id":4,"title":5,"body":6,"categories":1574,"date":1576,"description":1577,"draft":1578,"extension":1579,"image":1580,"meta":1581,"navigation":1582,"path":1583,"permalink":1580,"readingTime":1584,"recommend":1580,"references":1580,"seo":1589,"sitemap":1590,"stem":1591,"tags":1592,"type":1595,"updated":1580,"__hash__":1596},"content/posts/2026/obsidian同步教程.md","Obsidian 跨平台同步教程：Remotely Save + Cloudflare R2（Arch / Windows / iPhone）",{"type":7,"value":8,"toc":1509},"minimark",[9,13,17,30,33,36,51,54,60,71,74,77,83,97,103,106,123,126,131,134,140,142,145,148,165,168,182,185,187,190,193,198,201,205,208,212,215,217,221,224,227,238,244,246,250,252,256,259,262,264,268,271,276,282,288,290,294,302,307,310,315,318,321,331,334,340,343,357,361,364,369,373,376,381,384,387,390,394,397,399,403,406,412,417,420,432,435,438,440,444,447,450,453,455,459,462,465,468,473,476,479,482,487,490,495,498,501,505,508,513,515,519,522,540,543,549,552,556,559,562,564,568,575,578,580,584,587,589,593,596,601,604,607,612,614,618,621,627,630,644,647,649,653,655,659,662,667,670,672,676,679,684,687,689,693,696,698,702,705,711,718,720,724,727,732,734,738,741,745,747,751,754,758,760,764,767,773,776,778,782,785,790,793,795,799,802,807,810,813,816,819,842,845,847,851,854,859,862,865,870,872,876,879,886,889,900,903,906,908,912,915,926,929,940,942,946,949,952,955,957,961,964,978,981,983,987,990,992,998,1001,1003,1007,1010,1012,1016,1019,1021,1025,1028,1033,1035,1039,1042,1061,1063,1067,1070,1073,1081,1083,1087,1089,1092,1095,1097,1105,1107,1110,1113,1115,1132,1134,1137,1140,1145,1148,1159,1162,1176,1178,1182,1185,1187,1194,1197,1200,1217,1220,1227,1230,1233,1236,1239,1250,1253,1255,1259,1265,1268,1271,1276,1279,1281,1285,1288,1291,1294,1297,1300,1303,1305,1309,1311,1315,1318,1321,1323,1327,1330,1333,1335,1339,1342,1347,1350,1352,1356,1359,1362,1367,1370,1372,1376,1379,1392,1395,1398,1400,1404,1407,1446,1448,1451,1454,1459,1462,1467,1470,1484,1487,1498,1501,1504],[10,11,5],"h1",{"id":12},"obsidian-跨平台同步教程remotely-save-cloudflare-r2arch-windows-iphone",[14,15,16],"p",{},"我手上的设备比较杂：",[18,19,20,24,27],"ul",{},[21,22,23],"li",{},"一台 Windows",[21,25,26],{},"一台 Arch Linux",[21,28,29],{},"一台 iPhone",[14,31,32],{},"而我平时用 Obsidian 主要是记文字笔记，不怎么放图片，也不怎么塞大文件。",[14,34,35],{},"这种情况下，我想要的同步方案其实很简单：",[37,38,39,42,45,48],"ol",{},[21,40,41],{},"能跨平台",[21,43,44],{},"成本低",[21,46,47],{},"不要像 Git 一样每次都手动 commit / push / pull",[21,49,50],{},"不要太玄学",[14,52,53],{},"最后我选的是：",[14,55,56],{},[57,58,59],"strong",{},"Remotely Save + Cloudflare R2",[14,61,62,63,66,67,70],{},"这篇文章就完整记录一下，我是怎么从 0 开始把它配起来的。",[64,65],"br",{},"\n整篇尽量按",[57,68,69],{},"小白视角","来写，细到“点哪个按钮”。",[72,73],"hr",{},[10,75,76],{"id":76},"为什么选这套方案",[14,78,79,80,82],{},"如果你只是想要最省心，那 Obsidian Sync 当然最直接。",[64,81],{},"\n但如果你：",[18,84,85,88,91,94],{},[21,86,87],{},"主要是文字笔记",[21,89,90],{},"愿意自己配置一次",[21,92,93],{},"想压低长期成本",[21,95,96],{},"设备又跨 Windows / Linux / iPhone",[14,98,99,100,102],{},"那 ",[57,101,59],{}," 确实是一个值得试的组合。",[14,104,105],{},"我最后选它，主要是因为：",[18,107,108,114,120],{},[21,109,110,113],{},[57,111,112],{},"Remotely Save"," 是 Obsidian 社区里很常用的同步插件",[21,115,116,119],{},[57,117,118],{},"Cloudflare R2"," 可以当对象存储来放远端文件",[21,121,122],{},"两者组合起来，比较适合轻量级的笔记同步",[14,124,125],{},"不过先说清楚：",[14,127,128],{},[57,129,130],{},"这不是 Obsidian 官方同步方案。",[14,132,133],{},"所以这套方案的定位应该是：",[135,136,137],"blockquote",{},[14,138,139],{},"成本和自由度更优，但第一次配置会比官方方案麻烦一些。",[72,141],{},[10,143,144],{"id":144},"适合什么人",[14,146,147],{},"这套方案更适合下面这些人：",[18,149,150,153,156,159,162],{},[21,151,152],{},"Obsidian 里主要是 Markdown 文字",[21,154,155],{},"图片不多",[21,157,158],{},"几乎没有大型视频、音频、压缩包",[21,160,161],{},"有多台设备要同步",[21,163,164],{},"愿意自己动手配一次",[14,166,167],{},"如果你更看重：",[18,169,170,173,176,179],{},[21,171,172],{},"开箱即用",[21,174,175],{},"最稳",[21,177,178],{},"不想排查任何问题",[21,180,181],{},"什么都不想自己管",[14,183,184],{},"那建议直接用官方 Sync。",[72,186],{},[10,188,189],{"id":189},"整体流程先看一眼",[14,191,192],{},"整套流程其实就三大步：",[194,195,197],"h2",{"id":196},"第一步在-cloudflare-创建一个-r2-bucket","第一步：在 Cloudflare 创建一个 R2 bucket",[14,199,200],{},"也就是给你的 Obsidian 笔记准备一个远端存储位置。",[194,202,204],{"id":203},"第二步创建-r2-api-token","第二步：创建 R2 API Token",[14,206,207],{},"这个 token 是给 Remotely Save 用来读写你这个 bucket 的。",[194,209,211],{"id":210},"第三步在-obsidian-里配置-remotely-save","第三步：在 Obsidian 里配置 Remotely Save",[14,213,214],{},"把 bucket、endpoint、key 这些填进去，然后开始同步。",[72,216],{},[10,218,220],{"id":219},"开始前先做一件事备份你的-vault","开始前先做一件事：备份你的 vault",[14,222,223],{},"正式开搞之前，先把你的 Obsidian vault 整个复制一份出来。",[14,225,226],{},"比如：",[18,228,229,232,235],{},[21,230,231],{},"Windows：复制整个 vault 文件夹到桌面",[21,233,234],{},"Arch：复制到另一个目录",[21,236,237],{},"iPhone：先别急着在手机上操作，先配主设备",[14,239,240,241,243],{},"这一步别省。",[64,242],{},"\n同步方案第一次配置，最怕的不是麻烦，而是把原始笔记弄乱。",[72,245],{},[10,247,249],{"id":248},"第-1-部分cloudflare-r2-从-0-开始配置","第 1 部分：Cloudflare R2 从 0 开始配置",[72,251],{},[194,253,255],{"id":254},"_1-登录-cloudflare","1. 登录 Cloudflare",[14,257,258],{},"先打开 Cloudflare 控制台并登录。",[14,260,261],{},"登录后看左侧边栏。",[72,263],{},[194,265,267],{"id":266},"_2-进入-r2-页面","2. 进入 R2 页面",[14,269,270],{},"在左侧菜单里按这个路径点进去：",[14,272,273],{},[57,274,275],{},"Storage & databases → R2 → Overview",[14,277,278,279,281],{},"如果你是第一次用 R2，可能会先看到开通提示。",[64,280],{},"\n这种情况按页面提示操作就行。",[14,283,284,285,287],{},"有的账号第一次开 R2 时，可能会要求补充支付信息。",[64,286],{},"\n正常按提示走完，再回来继续。",[72,289],{},[194,291,293],{"id":292},"_3-创建-bucket","3. 创建 bucket",[14,295,296,297,301],{},"进入 ",[298,299,300],"code",{"code":300},"R2 > Overview"," 页面后，点击：",[14,303,304],{},[57,305,306],{},"Create bucket",[14,308,309],{},"接下来会进入创建 bucket 的页面。",[311,312,314],"h3",{"id":313},"bucket-name","Bucket name",[14,316,317],{},"这里填一个你自己看得懂的名字。",[14,319,320],{},"我建议直接用：",[322,323,329],"pre",{"className":324,"code":326,"language":327,"meta":328},[325],"language-text","obsidian-vault\n","text","",[298,330,326],{"__ignoreMap":328},[14,332,333],{},"也可以是：",[322,335,338],{"className":336,"code":337,"language":327,"meta":328},[325],"my-obsidian-notes\n",[298,339,337],{"__ignoreMap":328},[14,341,342],{},"建议：",[18,344,345,348,351,354],{},[21,346,347],{},"用小写",[21,349,350],{},"不要中文",[21,352,353],{},"不要空格",[21,355,356],{},"名字简单一点",[311,358,360],{"id":359},"location","Location",[14,362,363],{},"如果你只是自己同步笔记，不想纠结地理区域：",[14,365,366],{},[57,367,368],{},"保持默认就行",[311,370,372],{"id":371},"default-storage-class","Default storage class",[14,374,375],{},"这里建议直接选：",[14,377,378],{},[57,379,380],{},"Standard",[14,382,383],{},"对 Obsidian 这种主要是小文件、会频繁读写的场景，直接用 Standard 最省事。",[311,385,386],{"id":386},"最后",[14,388,389],{},"点：",[14,391,392],{},[57,393,306],{},[14,395,396],{},"到这里，你的 bucket 就创建好了。",[72,398],{},[194,400,402],{"id":401},"_4-创建-api-token","4. 创建 API Token",[14,404,405],{},"创建完 bucket 后，回到 R2 页面。",[14,407,408,409,411],{},"在 ",[298,410,300],{"code":300}," 页面里，找到并点击：",[14,413,414],{},[57,415,416],{},"Manage in API Tokens",[14,418,419],{},"如果你看到的是别的类似入口，比如：",[18,421,422,427],{},[21,423,424],{},[298,425,426],{"code":426},"Manage",[21,428,429],{},[298,430,431],{"code":431},"API Tokens",[14,433,434],{},"本质上也是去同一个地方。",[14,436,437],{},"点进去之后，开始创建 token。",[72,439],{},[194,441,443],{"id":442},"_5-选择创建-token","5. 选择创建 token",[14,445,446],{},"进入 API token 页面后，通常会看到创建 token 的入口。",[14,448,449],{},"如果页面让你选类型，个人用户按默认思路走就行，重点不是名字，而是后面的权限要配对。",[14,451,452],{},"继续点击创建。",[72,454],{},[194,456,458],{"id":457},"_6-配置权限","6. 配置权限",[14,460,461],{},"这是最关键的一步。",[311,463,464],{"id":464},"权限类型",[14,466,467],{},"找到权限设置后，选择：",[14,469,470],{},[57,471,472],{},"Object Read & Write",[14,474,475],{},"不要选只读。\n因为你不是只想“下载笔记”，你还需要“上传”和“双向同步”。",[311,477,478],{"id":478},"作用范围",[14,480,481],{},"找到类似下面这个选项：",[14,483,484],{},[57,485,486],{},"Apply to specific buckets only",[14,488,489],{},"然后只勾选你刚刚创建的那个 bucket，比如：",[322,491,493],{"className":492,"code":326,"language":327,"meta":328},[325],[298,494,326],{"__ignoreMap":328},[14,496,497],{},"也就是说，这个 token 只允许访问你这个 Obsidian 专用 bucket。",[14,499,500],{},"这样做更安全，也更清晰。",[311,502,504],{"id":503},"创建-token","创建 token",[14,506,507],{},"最后点击：",[14,509,510],{},[57,511,512],{},"Create API Token",[72,514],{},[194,516,518],{"id":517},"_7-记下这些信息","7. 记下这些信息",[14,520,521],{},"创建完成后，页面一般会展示这些内容：",[18,523,524,529,534],{},[21,525,526],{},[57,527,528],{},"Access Key ID",[21,530,531],{},[57,532,533],{},"Secret Access Key",[21,535,536,537],{},"以及你需要用到的 ",[57,538,539],{},"endpoint",[14,541,542],{},"这时候你一定要把下面这些东西保存好：",[322,544,547],{"className":545,"code":546,"language":327,"meta":328},[325],"Bucket name:\nobsidian-vault\n\nAccess Key ID:\n你的 Access Key\n\nSecret Access Key:\n你的 Secret Key\n\nEndpoint:\nhttps://\u003CACCOUNT_ID>.r2.cloudflarestorage.com\n",[298,548,546],{"__ignoreMap":328},[14,550,551],{},"其中最重要的是：",[14,553,554],{},[57,555,533],{},[14,557,558],{},"这个通常只显示一次。\n如果你没保存，后面大概率就只能重新建一个 token。",[14,560,561],{},"建议直接把这些信息先放到密码管理器里，或者先临时记到安全位置，等配置完成再整理。",[72,563],{},[10,565,567],{"id":566},"第-2-部分在-obsidian-里安装-remotely-save","第 2 部分：在 Obsidian 里安装 Remotely Save",[14,569,570,571,574],{},"这一部分建议先只在",[57,572,573],{},"主设备","上操作。",[14,576,577],{},"所谓主设备，就是你最常写笔记的那台。\n比如你平时主要在 Windows 上记笔记，那就先在 Windows 上完成首次配置。",[72,579],{},[194,581,583],{"id":582},"_1-打开-obsidian","1. 打开 Obsidian",[14,585,586],{},"进入你要同步的那个 vault。",[72,588],{},[194,590,592],{"id":591},"_2-打开社区插件","2. 打开社区插件",[14,594,595],{},"按下面这个路径点：",[14,597,598],{},[57,599,600],{},"Settings → Community plugins",[14,602,603],{},"如果你之前没开过社区插件，需要先允许社区插件。",[14,605,606],{},"然后点击：",[14,608,609],{},[57,610,611],{},"Browse",[72,613],{},[194,615,617],{"id":616},"_3-搜索并安装-remotely-save","3. 搜索并安装 Remotely Save",[14,619,620],{},"在搜索框里输入：",[322,622,625],{"className":623,"code":624,"language":327,"meta":328},[325],"Remotely Save\n",[298,626,624],{"__ignoreMap":328},[14,628,629],{},"然后：",[37,631,632,638],{},[21,633,634,635],{},"点击 ",[57,636,637],{},"Install",[21,639,640,641],{},"安装完成后点击 ",[57,642,643],{},"Enable",[14,645,646],{},"到这里，插件就装好了。",[72,648],{},[10,650,652],{"id":651},"第-3-部分在-remotely-save-里配置-cloudflare-r2","第 3 部分：在 Remotely Save 里配置 Cloudflare R2",[72,654],{},[194,656,658],{"id":657},"_1-打开插件设置页面","1. 打开插件设置页面",[14,660,661],{},"在 Obsidian 中继续点：",[14,663,664],{},[57,665,666],{},"Settings → Community plugins → Remotely Save",[14,668,669],{},"进入插件设置页面。",[72,671],{},[194,673,675],{"id":674},"_2-选择远端服务类型","2. 选择远端服务类型",[14,677,678],{},"找到远端类型，选择：",[14,680,681],{},[57,682,683],{},"S3 / S3-compatible",[14,685,686],{},"因为 Cloudflare R2 走的是兼容 S3 的接口。",[72,688],{},[194,690,692],{"id":691},"_3-一项一项填参数","3. 一项一项填参数",[14,694,695],{},"接下来最重要的就是把参数填对。",[72,697],{},[311,699,701],{"id":700},"address-endpoint","Address / Endpoint",[14,703,704],{},"填你刚刚保存下来的 endpoint：",[322,706,709],{"className":707,"code":708,"language":327,"meta":328},[325],"https://\u003CACCOUNT_ID>.r2.cloudflarestorage.com\n",[298,710,708],{"__ignoreMap":328},[14,712,713,714,717],{},"把 ",[298,715,716],{"code":716},"\u003CACCOUNT_ID>"," 替换成你自己的。",[72,719],{},[311,721,723],{"id":722},"bucket","Bucket",[14,725,726],{},"填你的 bucket 名称，比如：",[322,728,730],{"className":729,"code":326,"language":327,"meta":328},[325],[298,731,326],{"__ignoreMap":328},[72,733],{},[311,735,737],{"id":736},"access-key","Access Key",[14,739,740],{},"填你刚刚创建的：",[14,742,743],{},[57,744,528],{},[72,746],{},[311,748,750],{"id":749},"secret-key","Secret Key",[14,752,753],{},"填你刚刚保存的：",[14,755,756],{},[57,757,533],{},[72,759],{},[311,761,763],{"id":762},"region","Region",[14,765,766],{},"这里直接填：",[322,768,771],{"className":769,"code":770,"language":327,"meta":328},[325],"us-east-1\n",[298,772,770],{"__ignoreMap":328},[14,774,775],{},"别自己改成别的。",[72,777],{},[311,779,781],{"id":780},"bypass-cors","Bypass CORS",[14,783,784],{},"找到这个选项后：",[14,786,787],{},[57,788,789],{},"打开它",[14,791,792],{},"这一项建议直接开启。",[72,794],{},[194,796,798],{"id":797},"_4-检查连接","4. 检查连接",[14,800,801],{},"参数填好后，点击：",[14,803,804],{},[57,805,806],{},"Check connectivity",[311,808,809],{"id":809},"如果通过了",[14,811,812],{},"说明最基础的链路已经打通了。",[311,814,815],{"id":815},"如果没通过",[14,817,818],{},"按下面顺序检查：",[37,820,821,824,827,830,833,839],{},[21,822,823],{},"endpoint 抄没抄错",[21,825,826],{},"bucket 名有没有打错",[21,828,829],{},"Access Key 有没有复制错误",[21,831,832],{},"Secret Key 有没有复制错误",[21,834,835,836],{},"Region 是否填的是 ",[298,837,838],{"code":838},"us-east-1",[21,840,841],{},"Bypass CORS 有没有打开",[14,843,844],{},"如果这些都对，但还是失败，那就先把插件更新到最新版再试。",[72,846],{},[10,848,850],{"id":849},"第-4-部分第一次怎么上传到-r2","第 4 部分：第一次怎么上传到 R2",[14,852,853],{},"很多人第一次都会问：",[14,855,856],{},[57,857,858],{},"“我已经配好了，那到底在哪里点上传？”",[14,860,861],{},"其实 Remotely Save 没有一个单独叫“上传”的按钮。",[14,863,864],{},"它的逻辑是：",[135,866,867],{},[14,868,869],{},"你点“同步”，第一次同步如果远端是空的，本质上就是把本地文件上传到远端。",[72,871],{},[194,873,875],{"id":874},"_1-第一次只用一台设备","1. 第一次只用一台设备",[14,877,878],{},"这一点很重要。",[14,880,881,882,885],{},"第一次同步时，",[57,883,884],{},"只在一台主设备上操作","。",[14,887,888],{},"不要一开始就同时在：",[18,890,891,894,897],{},[21,892,893],{},"Windows",[21,895,896],{},"Arch",[21,898,899],{},"iPhone",[14,901,902],{},"三台设备上一起点同步。",[14,904,905],{},"这样很容易把自己搞乱。",[72,907],{},[194,909,911],{"id":910},"_2-确保远端-bucket-是空的","2. 确保远端 bucket 是空的",[14,913,914],{},"第一次同步之前，最好确认：",[18,916,917,920,923],{},[21,918,919],{},"这个 bucket 是新建的",[21,921,922],{},"里面没有旧文件",[21,924,925],{},"或者至少你给这个 vault 用的路径是空的",[14,927,928],{},"这样逻辑最清楚：",[18,930,931,934,937],{},[21,932,933],{},"本地已经有笔记",[21,935,936],{},"远端没有内容",[21,938,939],{},"所以第一次同步就是把本地内容推上去",[72,941],{},[194,943,945],{"id":944},"_3-执行第一次同步","3. 执行第一次同步",[14,947,948],{},"回到 Obsidian 主界面。",[14,950,951],{},"你通常会在左侧边栏看到一个同步相关的图标。\n点击它，开始同步。",[14,953,954],{},"第一次同步可能会慢一点，耐心等它完成。",[72,956],{},[194,958,960],{"id":959},"_4-确认是否上传成功","4. 确认是否上传成功",[14,962,963],{},"同步结束后，可以回到 Cloudflare：",[37,965,966,972,975],{},[21,967,968,969],{},"打开 ",[298,970,971],{"code":971},"R2",[21,973,974],{},"点进你的 bucket",[21,976,977],{},"看里面有没有对象",[14,979,980],{},"如果已经能看到对象，基本就说明主设备第一次上传成功了。",[72,982],{},[10,984,986],{"id":985},"第-5-部分第二台和第三台设备怎么接入","第 5 部分：第二台和第三台设备怎么接入",[14,988,989],{},"当主设备第一次同步成功之后，再去配置其他设备。",[14,991,226],{},[18,993,994,996],{},[21,995,896],{},[21,997,899],{},[14,999,1000],{},"它们的思路都一样。",[72,1002],{},[194,1004,1006],{"id":1005},"_1-安装-obsidian","1. 安装 Obsidian",[14,1008,1009],{},"先在对应设备上装好 Obsidian。",[72,1011],{},[194,1013,1015],{"id":1014},"_2-新建一个空-vault","2. 新建一个空 vault",[14,1017,1018],{},"建议 vault 名字和主设备保持一致。\n至少这样你自己不容易认错。",[72,1020],{},[194,1022,1024],{"id":1023},"_3-安装-remotely-save","3. 安装 Remotely Save",[14,1026,1027],{},"路径和前面一样：",[14,1029,1030],{},[57,1031,1032],{},"Settings → Community plugins → Browse → 搜索 Remotely Save → Install → Enable",[72,1034],{},[194,1036,1038],{"id":1037},"_4-填入同样的-r2-参数","4. 填入同样的 R2 参数",[14,1040,1041],{},"把主设备上那一套参数原样填进去：",[18,1043,1044,1047,1049,1051,1053,1058],{},[21,1045,1046],{},"Endpoint",[21,1048,723],{},[21,1050,737],{},[21,1052,750],{},[21,1054,1055,1056],{},"Region = ",[298,1057,838],{"code":838},[21,1059,1060],{},"Bypass CORS = 开",[72,1062],{},[194,1064,1066],{"id":1065},"_5-手动同步一次","5. 手动同步一次",[14,1068,1069],{},"这时候同步的效果就不是“上传本地已有内容”了，\n而是把主设备已经放到 R2 上的内容拉下来。",[14,1071,1072],{},"也就是说：",[18,1074,1075,1078],{},[21,1076,1077],{},"主设备第一次同步：把已有内容传上去",[21,1079,1080],{},"其他设备第一次同步：把远端内容拉下来",[72,1082],{},[10,1084,1086],{"id":1085},"第-6-部分windows-arch-iphone-的使用建议","第 6 部分：Windows / Arch / iPhone 的使用建议",[72,1088],{},[194,1090,893],{"id":1091},"windows",[14,1093,1094],{},"Windows 基本最省心，正常安装 Obsidian、启用插件、填参数就行。",[14,1096,342],{},[18,1098,1099,1102],{},[21,1100,1101],{},"把它当主设备来初始化",[21,1103,1104],{},"首次同步成功后再接入其他设备",[72,1106],{},[194,1108,896],{"id":1109},"arch",[14,1111,1112],{},"Arch 端本质和 Windows 一样。\n因为真正的配置都在 Obsidian 里面，并不依赖系统本身。",[14,1114,342],{},[18,1116,1117,1120,1123,1126,1129],{},[21,1118,1119],{},"先在 Windows 完成主设备上传",[21,1121,1122],{},"再在 Arch 上新建空 vault",[21,1124,1125],{},"装插件",[21,1127,1128],{},"填同样参数",[21,1130,1131],{},"同步拉取内容",[72,1133],{},[194,1135,899],{"id":1136},"iphone",[14,1138,1139],{},"iPhone 端也能正常用，但有一个点要特别注意：",[14,1141,1142],{},[57,1143,1144],{},"手机端不是系统级后台常驻同步。",[14,1146,1147],{},"更准确地说：",[18,1149,1150,1153,1156],{},[21,1151,1152],{},"你打开 Obsidian",[21,1154,1155],{},"它在前台时可以同步",[21,1157,1158],{},"你切到后台后，不要默认它还会一直帮你跑",[14,1160,1161],{},"所以第一次在 iPhone 上同步时，建议你：",[18,1163,1164,1167,1170,1173],{},[21,1165,1166],{},"打开 Obsidian",[21,1168,1169],{},"手动同步",[21,1171,1172],{},"不要立刻切后台",[21,1174,1175],{},"等它跑完",[72,1177],{},[10,1179,1181],{"id":1180},"第-7-部分我建议一开始这样设置最稳","第 7 部分：我建议一开始这样设置，最稳",[14,1183,1184],{},"为了减少翻车，一开始我建议你走保守路线。",[72,1186],{},[194,1188,1190,1191],{"id":1189},"_1-先不要同步整个-obsidian","1. 先不要同步整个 ",[298,1192,1193],{"code":1193},".obsidian",[14,1195,1196],{},"这个特别重要。",[14,1198,1199],{},"很多人第一次搞同步时，会很想把下面这些全同步过去：",[18,1201,1202,1205,1208,1211,1214],{},[21,1203,1204],{},"主题",[21,1206,1207],{},"插件配置",[21,1209,1210],{},"热键",[21,1212,1213],{},"工作区布局",[21,1215,1216],{},"各种 UI 状态",[14,1218,1219],{},"但我建议你：",[14,1221,1222],{},[57,1223,1224,1225,885],{},"先不要同步整个 ",[298,1226,1193],{"code":1193},[14,1228,1229],{},"因为里面有不少文件其实是设备相关的，\n有些甚至在你每次打开 Obsidian 时都会变化。",[14,1231,1232],{},"如果一上来就全同步，反而更容易遇到奇怪问题。",[14,1234,1235],{},"更稳妥的做法是：",[14,1237,1238],{},"先只同步：",[18,1240,1241,1244,1247],{},[21,1242,1243],{},"Markdown 笔记",[21,1245,1246],{},"普通附件",[21,1248,1249],{},"你明确知道需要同步的少量配置",[14,1251,1252],{},"等这套链路稳定运行一段时间后，再决定要不要同步更多配置。",[72,1254],{},[194,1256,1258],{"id":1257},"_2-自动同步先别开太猛","2. 自动同步先别开太猛",[14,1260,1261,1262,885],{},"一开始建议先以",[57,1263,1264],{},"手动同步为主",[14,1266,1267],{},"等你确认整套流程稳定之后，再考虑打开自动同步。",[14,1269,1270],{},"如果你要开，建议也别太激进，\n比如先设置成：",[18,1272,1273],{},[21,1274,1275],{},"每隔几分钟自动同步一次",[14,1277,1278],{},"不要一上来就追求特别频繁。",[72,1280],{},[194,1282,1284],{"id":1283},"_3-养成一个好习惯换设备前后都同步一下","3. 养成一个好习惯：换设备前后都同步一下",[14,1286,1287],{},"这个习惯很重要。",[311,1289,1290],{"id":1290},"离开当前设备前",[14,1292,1293],{},"先手动同步一次。",[311,1295,1296],{"id":1296},"到新设备准备开始写之前",[14,1298,1299],{},"再手动同步一次。",[14,1301,1302],{},"这样会减少很多不必要的冲突。",[72,1304],{},[10,1306,1308],{"id":1307},"第-8-部分最常见的坑","第 8 部分：最常见的坑",[72,1310],{},[194,1312,1314],{"id":1313},"坑-1secret-key-没保存","坑 1：Secret Key 没保存",[14,1316,1317],{},"这是最常见的问题之一。",[14,1319,1320],{},"如果你在创建 token 的那一页没有把 Secret Key 保存下来，\n后面往往看不到，只能重新创建一个新的 token。",[72,1322],{},[194,1324,1326],{"id":1325},"坑-2bucket-名打错","坑 2：bucket 名打错",[14,1328,1329],{},"有时候连不上，不是因为 endpoint 出问题，\n而是 bucket 名少了一个字符。",[14,1331,1332],{},"这个真的很常见。",[72,1334],{},[194,1336,1338],{"id":1337},"坑-3region-填错","坑 3：Region 填错",[14,1340,1341],{},"你就直接填：",[322,1343,1345],{"className":1344,"code":770,"language":327,"meta":328},[325],[298,1346,770],{"__ignoreMap":328},[14,1348,1349],{},"别折腾别的值。",[72,1351],{},[194,1353,1355],{"id":1354},"坑-4第一次就多设备一起同步","坑 4：第一次就多设备一起同步",[14,1357,1358],{},"这个很容易出问题。",[14,1360,1361],{},"第一次同步，记住只做一件事：",[14,1363,1364],{},[57,1365,1366],{},"先用主设备把内容传上去。",[14,1368,1369],{},"等远端已经确认有内容之后，再让其他设备接入。",[72,1371],{},[194,1373,1375],{"id":1374},"坑-5混用多套同步方案","坑 5：混用多套同步方案",[14,1377,1378],{},"比如你同一个 vault 又开：",[18,1380,1381,1384,1387,1390],{},[21,1382,1383],{},"iCloud",[21,1385,1386],{},"Git",[21,1388,1389],{},"OneDrive",[21,1391,112],{},[14,1393,1394],{},"混在一起，后面很容易出现冲突。",[14,1396,1397],{},"一个 vault，最好只由一套同步方案来管。",[72,1399],{},[10,1401,1403],{"id":1402},"第-9-部分一句话复盘整个流程","第 9 部分：一句话复盘整个流程",[14,1405,1406],{},"如果你懒得看全文，其实整件事可以概括成下面这几步：",[37,1408,1409,1412,1415,1418,1421,1426,1431,1435,1440,1443],{},[21,1410,1411],{},"在 Cloudflare 创建一个 R2 bucket",[21,1413,1414],{},"创建一个只对这个 bucket 生效的 API token",[21,1416,1417],{},"记下 endpoint、bucket、Access Key、Secret Key",[21,1419,1420],{},"在 Obsidian 里安装 Remotely Save",[21,1422,1423,1424],{},"远端类型选 ",[298,1425,683],{"code":683},[21,1427,1428,1429],{},"填 endpoint、bucket、Access Key、Secret Key、",[298,1430,838],{"code":838},[21,1432,968,1433],{},[298,1434,781],{"code":781},[21,1436,1437,1438],{},"点 ",[298,1439,806],{"code":806},[21,1441,1442],{},"在主设备第一次手动同步",[21,1444,1445],{},"再让其他设备接入同步",[72,1447],{},[10,1449,386],{"id":1450},"最后-1",[14,1452,1453],{},"如果你问我：",[14,1455,1456],{},[57,1457,1458],{},"Remotely Save + Cloudflare R2 到底值不值得折腾？",[14,1460,1461],{},"我的答案是：",[14,1463,1464],{},[57,1465,1466],{},"如果你主要是文字笔记，而且愿意第一次自己动手配一下，那很值。",[14,1468,1469],{},"它不是最无脑的方案，\n但它在下面这几个点上，平衡得挺不错：",[18,1471,1472,1475,1478,1481],{},[21,1473,1474],{},"成本",[21,1476,1477],{},"自由度",[21,1479,1480],{},"跨平台能力",[21,1482,1483],{},"使用体验",[14,1485,1486],{},"至少对我这种：",[18,1488,1489,1492,1495],{},[21,1490,1491],{},"Windows + Arch + iPhone",[21,1493,1494],{},"文字笔记为主",[21,1496,1497],{},"不怎么放图片",[14,1499,1500],{},"的用法来说，这套方案已经够用了。",[14,1502,1503],{},"如果你也在折腾 Obsidian 跨平台同步，希望这篇能让你少踩几个坑。",[322,1505,1507],{"className":1506,"code":328,"language":327},[325],[298,1508,328],{"__ignoreMap":328},{"title":328,"searchDepth":1510,"depth":1510,"links":1511},4,[1512,1514,1515,1516,1517,1518,1525,1526,1527,1532,1533,1534,1535,1536,1537,1538,1546,1550,1551,1552,1553,1554,1555,1556,1557,1558,1559,1560,1561,1562,1564,1565,1569,1570,1571,1572,1573],{"id":196,"depth":1513,"text":197},2,{"id":203,"depth":1513,"text":204},{"id":210,"depth":1513,"text":211},{"id":254,"depth":1513,"text":255},{"id":266,"depth":1513,"text":267},{"id":292,"depth":1513,"text":293,"children":1519},[1520,1522,1523,1524],{"id":313,"depth":1521,"text":314},3,{"id":359,"depth":1521,"text":360},{"id":371,"depth":1521,"text":372},{"id":386,"depth":1521,"text":386},{"id":401,"depth":1513,"text":402},{"id":442,"depth":1513,"text":443},{"id":457,"depth":1513,"text":458,"children":1528},[1529,1530,1531],{"id":464,"depth":1521,"text":464},{"id":478,"depth":1521,"text":478},{"id":503,"depth":1521,"text":504},{"id":517,"depth":1513,"text":518},{"id":582,"depth":1513,"text":583},{"id":591,"depth":1513,"text":592},{"id":616,"depth":1513,"text":617},{"id":657,"depth":1513,"text":658},{"id":674,"depth":1513,"text":675},{"id":691,"depth":1513,"text":692,"children":1539},[1540,1541,1542,1543,1544,1545],{"id":700,"depth":1521,"text":701},{"id":722,"depth":1521,"text":723},{"id":736,"depth":1521,"text":737},{"id":749,"depth":1521,"text":750},{"id":762,"depth":1521,"text":763},{"id":780,"depth":1521,"text":781},{"id":797,"depth":1513,"text":798,"children":1547},[1548,1549],{"id":809,"depth":1521,"text":809},{"id":815,"depth":1521,"text":815},{"id":874,"depth":1513,"text":875},{"id":910,"depth":1513,"text":911},{"id":944,"depth":1513,"text":945},{"id":959,"depth":1513,"text":960},{"id":1005,"depth":1513,"text":1006},{"id":1014,"depth":1513,"text":1015},{"id":1023,"depth":1513,"text":1024},{"id":1037,"depth":1513,"text":1038},{"id":1065,"depth":1513,"text":1066},{"id":1091,"depth":1513,"text":893},{"id":1109,"depth":1513,"text":896},{"id":1136,"depth":1513,"text":899},{"id":1189,"depth":1513,"text":1563},"1. 先不要同步整个 .obsidian",{"id":1257,"depth":1513,"text":1258},{"id":1283,"depth":1513,"text":1284,"children":1566},[1567,1568],{"id":1290,"depth":1521,"text":1290},{"id":1296,"depth":1521,"text":1296},{"id":1313,"depth":1513,"text":1314},{"id":1325,"depth":1513,"text":1326},{"id":1337,"depth":1513,"text":1338},{"id":1354,"depth":1513,"text":1355},{"id":1374,"depth":1513,"text":1375},[1575],"obsidian","2026-04-17 20:00:00","一篇给小白的 Obsidian 跨平台同步教程，从 0 开始配置 Cloudflare R2，并用 Remotely Save 实现 Arch、Windows 和 iPhone 同步。",false,"md",null,{},true,"/2026/obsidian",{"text":1585,"minutes":1586,"time":1587,"words":1588},"18 min read",17.33,1039800,3466,{"title":5,"description":1577},{"loc":1583},"posts/2026/obsidian同步教程",[1575,1593,1594,1109,1091,1136],"remotely-save","cloudflare-r2","tech","pQXE8fU5fXK1Qb133LKSIyd3RRjvPzh90rVr67QDOUE",[1598,1580],{"title":1599,"path":1600,"stem":1601,"date":1602,"type":1595,"children":-1},"JavaScript Promise 执行模型：then 回调的真实调用时机","/2026/jspromise","posts/2026/js中的Promise","2026-01-10 19:18:00",1789724782187]