Obsidian github同步方案記錄,新增webdav还有s3的更新

今天把obsidian的git同步解决了。分享以下过程以及遇到的问题。

Git同步

使用 github/gitee 同步自建也行

  1. 新建仓库:

  2. 在本地创建一个文件夹用于存放日记

  3. CD 到新建的文件夹里。

  4. 输入下面指令

    git init
    
  5. 在 obsidian 打开这个仓库(文件夹/vault)

  6. 复制 git 的 https 地址,在控制台刚才 cd 的文件夹里输入一下命令。

    git remote add origin https://github.com/用户名/仓库名.git
    
    #正常不会提示什么,如果提示 error: remote origin already exists.
    #说明已经存在了。输入一下命令查看。
    
    git remote -v #查看存在的根源文件
    git remote remove origin #可以删除
    
    然后一次输入以下命令,目的是创建master分支,以便后续push
    
    git add --all
    git commit -m "随便写"
    git push -u origin "master"  #有些人的可能不是master,比如我的是main。替换一下
    

    以上步骤完成后,输入用户名和密码后可能会出现一个错误

    remote: Support for password authentication was removed on August 13, 2021.
    
    remote: Please see https://docs.github.com/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
    
    fatal: Authentication failed for 'https://github.com/xxxx/xxx.git/'
    
    
  7. 解决方案

    1. 使用个人访问令牌(Personal Access Token)

      1. 登录您的GitHub账号,点击右上角头像,选择Settings
      2. 在左侧边栏找到Developer settings
      3. 选择Personal access tokens,点击Generate new token
      4. 填写token描述,设置过期时间(Expiration),选择权限范围(建议至少勾选repo权限),自己用可以全选,无所谓。
      5. 点击Generate token按钮生成令牌
      6. 保存好生成的token( :point_right:这很重要,因为它只显示一次
      7. 之后使用git push时,输入用户名和密码时,密码部分使用这个token
    2. 使用SSH方式(推荐,更方便)

      1. 生成SSH密钥对:
      ssh-keygen -t rsa -C "您的邮箱"
      

      按照提示操作,可以直接按回车使用默认设置
      2. 将公钥添加到GitHub:
      - 查看公钥内容:cat ~/.ssh/id_rsa.pub
      - 复制公钥内容
      - 登录GitHub,进入Settings → SSH and GPG keys
      - 点击New SSH key,粘贴公钥内容并保存
      3. 如果您已经使用HTTPS方式克隆了仓库,需要修改远程仓库URL:
      git remote set-url origin [email protected]:您的用户名/您的仓库名.git
      4. 如果是新仓库,直接使用SSH方式克隆:

       git clone [email protected]:您的用户名/您的仓库名.git
      

    使用SSH方式后,您就不需要每次都输入用户名和密码了,这种方式更安全也更方便

  8. 我选择用 tokens 来登录。

     git remote -v #查看存在的根源文件
     git remote remove origin #删除之前增加的避免冲突
     git remote add origin https://<tokens>@github.com/用户名/仓库名.git
     #这次在前面加了tokens
     
     然后一次输入以下命令,目的是创建master分支,以便后续push
     
     git add --all
     git commit -m "随便写"
     git push -u origin "master"  #有些人的可能不是master,比如我的是main。替换一下
    

    如果出现下面这个提示

     ! [rejected]        main -> main (fetch first)
     error: failed to push some refs to 'https://github.com/dongfox/Ob.git'
     hint: Updates were rejected because the remote contains work that you do
     hint: not have locally. This is usually caused by another repository pushing
     hint: to the same ref. You may want to first integrate the remote changes
     hint: (e.g., 'git pull ...') before pushing again.
     hint: See the 'Note about fast-forwards' in 'git push --help' for details.
     
     #依次输入
     git fetch origin
     下面选择合适的自己的
     git pull origin main #如果您想将远程更改与本地更改合并:如果有需要解决的冲突,这可能会创建一个合并提交。
     or
     git pull --rebase origin main #如果您更喜欢在远程更改之上重新应用您的更改:这样可以避免合并提交,但在rebase过程中可能需要解决冲突。
     git push origin main
    

    会看到文件上传合并的进度!:full_moon_face:离成功差最后一个插件。

  9. 在 obsidian 里安装

可以愉快的同步Obsidian文件了。不过ios还需要购买working copy来应用。git一个还是不放心的话,可以搭配remotely save,livesync,还可以合租官网同步。

S3/R2更新

创建 Cloudflare 相关服务

使用 Cloudflare
  1. 注册Cloudflare 账号
  2. 用账号绑定支付的卡片(中国境内的 Visa、Master、AMEX 经过测试都可以,银联借记卡不太清楚,可以尝试一下。如果银联借记卡不行,可以通过 Cloudflare→绑 PayPal→绑境内借记卡实现)
申请 Cloudflare 的 R2
  1. 打开 https://dash.cloudflare.com/?to=/:account/r2/new
  2. 页面会要求你设置一个存储桶的名字,我这里输入了obsidian-sync (记住这个一会儿要用),你可以输入你想要的名字
  3. 下面的「位置」「默认存储类」保持默认
  4. 点击创建存储桶

图是最新cloudflare网页操作路径

获取存储桶的服务地址
  1. 打开刚刚创建的存储桶的详情页,记得中间的存储桶名字换成你刚刚起的名字 https://dash.cloudflare.com/?to=/:account/r2/default/buckets/ 这里换成你的存储桶名字 /settings
  2. 在这个页面找到「存储桶详细信息」-「S3 API」,你会找到一个形如 https://xxxxxxxxxxxxx.r2.cloudflarestorage.com/ 你的存储桶名字 的链接
  3. 复制这个链接,然后移除最后的名字部分 即:https://xxxxxxxxxxxxx.r2.cloudflarestorage.com 就是我们要的服务地址 (记住这个一会儿要用)
创建一个 Cloudflare API Token
  1. 打开 https://dash.cloudflare.com/?to=/:account/r2/api-tokens/create
  2. 这个页面上来会要求你起一个名字,名字随意,你能认出来就好
  3. 权限这里,选择「管理员读和写」,其他不变
  4. 点击创建 API 令牌
  5. 复制「访问密钥 ID」「机密访问密钥」(记住这个一会儿要用)

:backhand_index_pointing_right:R2 Object Storage 里的 API - Manage API tokens - Create API token

在 Obsidian 里面使用
  1. 下载安装并启用 Remotely Save 插件
  2. 按下图的方式填入,没有提到的保持默认


3. PC 和移动端的同步移动端需要先安装并启动这个 Remotely Save 插件,Vaults 的名字要和 PC 上完全一样 在手机上粘贴 PC 生成的链接,点确定即可

  1. 还有一个插件 LiveSync 也可以使用 S3 ,但必须打开 :backhand_index_pointing_right:使用自定义HTTP处理程序才能正常连接。

以上所有操作根据Lainbo博主进行操作和完善。

Webdav

同样也是用Remotely Save,选择webdav的选项

我是用的方案是注册infini-cloud,注册可以有20免费空间,需要输入邀请码还能获得5GB。在个人主页里面这个位置,Enter Friends Referral Code 输入SS3RV便能获得5GB.

在这个位置打开apps connection 就可以开启webdav了。

输入得到的dav地址还有id和密码就能正常连接了。

remotely save自建alist或者webdav,就是iOS系统安全协议原因,需要https的链接才能成功同步。暂时搁置了,等哪天想折腾了再更新补充。


暂时这些是常用的同步方式。刚意识到github有免费额度500mb,如果有服务器的话可以自己部署git,用github主要是可以看到所有修改的历史记录。

还有的方法是syncthing来进行p2p的传输,有服务器的话也会方便许多。当然也不能把所有的东西都同时部署到一个服务器上,那么安全性也会降低很多。我同时用这几个也是为了分开备份,加强安全。

当然还有onedrive,iOS独有的iCloud。手动备份到baidu云盘的本地映射。其他玩法大家自己探索,一起多多交流学习。

52 个赞

我在用cloudflare r2,还弄了个jp的webdav做备选方案。我感觉这种方式比git要简单很多,除非你要保留修改的历史记录,否则我觉得git意义并不大。

进来学习

我也关注了cloudflare r2 我记得有一定的免费额度,说是还不错。其实git就是前面不懂才走的磕磕绊绊,知道怎么部署本地同步了就还行。部署git的一个原因也是想记录一下历史记录。后期再用其他的一起同步备份。

用webdav 日本那个 很方便 又不要钱

2 个赞

看见大佬了,互相学习!!

1 个赞

日本那个?说的是哪个

1 个赞

应该 infini 那家吧,25g的免费空间

1 个赞

佬这个有教程吗

1 个赞

onedrive也很方便,还有版本修改记录

1 个赞

恩看到了 我再找找还有没有支持webdav的网盘 除了国产那个

1 个赞

onedrive连接老是转圈圈 就没考虑了。本来还弄了e5的那么大空间也没用过

1 个赞

感谢佬,我去研究研究

手机版可以同步吗?

如果你附件是本地存,不用对象存储,笔记一多很快会达到GitHub的仓库容量上限
我随便记一记就几百MB了
所以我转向佛祖的R2去同步

可以,最近出了新的app git sync
非常简单,比之前安卓上弄git同步简单许多

1 个赞

可以,ios需要下载working copy 那个才能push

:joy:随便记一记几百mb
佬友记得啥那么大

笔记没多少,一两百篇,但是图片附件大,高清。
外链图片现在暂时还不是我的选择。
GitHub免费限制500MB,还不如用R2,佛祖是免费给用量,好像没限制总上限。