Mac软件设置同步方案

1,619 阅读6分钟

本文介绍同步软件设置的方案是Git仓库+硬链接,实现以下场景的同步:iterm2配置、Chrome书签、zsh配置、个人带图文章等

事先准备

  • 创建gitee或github远程私有仓库(推荐gitee比较快)

  • 安装HomeBrewCN,安装飞快,自动配置国内镜像源

  • 通过HomeBrewCN安装Git

  • Git拉取远程私有仓库到本地目录,本文用目录名指代:

    • ~/app-settings目录存储应用配置文件
    • ~/blog目录存储个人文章

iTerm2配置

以往换新电脑为了同步iTerm2配置,需要先导出配置在拷贝到新机器中,这样稍嫌麻烦

同步配置上Git

打开iTerm2偏好选项,切换到Preferences标签页,开启本地存储配置:

image.png

将配置文件存储到远程仓库目录~/app-settings/iTerm2,然后点击Save Now按钮生成配置,后续iTerm2设置都会读取这个文件,设置变动也会改变这个文件。

最后将文件同步到远程仓库:

cd ~/app-settings
git add .
git commit -m "iTerm2配置文件"
git push

拉取远程iTerm2配置

在新机器上,首先通过Git把远程仓库同步到本地目录~/app-settings

同样打开iTerm2偏好选项,切换到Preferences标签页,开启本地存储,路径配置到目录~/app-settings/iTerm2

注意! ,如果此时弹窗”是否将配置拷贝到本地“,请选择

最后重启iTerm2就可以看到配置生效了。

zsh配置

同步配置上Git

zsh配置文件在~/.zshrc,为了不改变文件路径,我们可以使用硬链接的方式创建副本到~/app-settings/zsh目录下,利用硬链接的特性:任意来源的修改都会作用到同一个文件中。

创建~/.zshrc的硬链接,命令如下:

ln ~/.zshrc ~/app-settings/zsh/.zshrc

最后Git推送上远程仓库

同步远程zsh配置

在新机器上,将远程仓库同步到本地目录~/app-settings

通过-f参数强制创建硬链接到个人目录下:

# 强制生成硬链接,强制覆盖本地源文件
ln -f ~/app-settings/zsh/.zshrc ~/.zshrc
​
# 让zsh配置生效
source .zshrc

以后改动zsh配置文件,用Git同步就可以了。

Chrome书签同步

同步书签上Git

打开链接chrome://version/,找到“个人资料路径”,即chrome配置存储目录,比如我的路径是/Users/<用户名>/Library/Application\ Support/Google/Chrome/Default/

目录下有个Bookmarks文件就是书签数据,创建该文件的硬链接到远程仓库目录下:

ln /Users/<用户名>/Library/Application\ Support/Google/Chrome/Default/Bookmarks ~/app-settings/chrome-bookmarks/Bookmarks

最后通过Git同步上远程仓库。

拉取远程书签

在新电脑上,通过-f参数强制创建硬链接到chrome目录下,命令行如下:

# 强制创建硬链接,强制覆盖Bookmarks源文件
ln -f ~/app-settings/chrome-bookmarks/Bookmarks /Users/<用户名>/Library/Application\ Support/Google/Chrome/Default/Bookmarks

创建成功后,重启Chrome浏览器就能看到书签同步成功了。

硬链接并不完美

可惜的是,修改Chrome浏览器书签后,Chrome会重新创建Bookmarks文件,所以硬链接会失效,每次同步都要用lncp命令拷贝过去,重新同步。

这个问题解决起来比较麻烦,如果是linux系统,通过ln -d创建目录的硬链接可以解决,但mac不支持目录硬链接。我查到的方案是bindfs,需要安装macFuse:

brew install macfuse

还要到mac“恢复recovery“模式下修改安全策略,如果你安装过PlayCover,应该有修改过这个策略。

然后通过bindfs创建目录硬链接:

bindfs /Users/<用户名>/Library/Application\ Support/Google/Chrome/Default/ ~/app-settings/chrome/

然后创建~/app-settings/chrome/目录下的.gitignore文件,让Git忽略大部分文件,只同步Bookmarks文件:

*
!Bookmarks

本人不想修改安全策略,所以没试过,大家有兴趣的可以试下。

Git配置

Git配置文件在~/.gitconfig,同步方式和zsh配置一样,创建硬链接实现双向修改。

这里再推荐另一种方式,将Git配置放在.zshrc文件中统一管理,比如下面场景:

  • Git语言设置为英语
  • 通过-c参数配置Git,解决Git中文乱码问题

.zshrc文件中加入以下语句:

# You may need to manually set your language environment
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8# git
alias git='LANG=en_GB git -c core.quotepath=false '

统一在.zshrc文件中管理配置,这样就不需要单独维护.gitconfig文件了。

大家选择各自喜欢的方式来处理!

Alfred配置

Alfred配置文件比较多,有Workflows、日常功能设置等,单纯拷贝迁移费时费力,所以Alfred配置文件也很适合Git远程同步来管理。

首先打开Alfred偏好设置,切换到“Advance”标签页,找到配置存储目录设置按钮:

image.png

设置到远程仓库目录~/app-settings/Alfred

最后通过Git同步就可以了,Alfred配置文件是一个目录,里面内容比较多,同步会慢很多,但相比微云同步盘的速度,Git还算比较快的了。

个人文章存储

个人感觉印象笔记、有道云笔记之类的比较适合收集零散剪裁信息,Markdown编写体验很差。

所以个人推荐使用Typora编写Markdown文章,记录心得和技术文章。

最棒的是,Typora支持本地图片存储!!! ,在偏好配置-图像中设置:

image.png

勾选项说明:

  • 记得勾选”优先使用相对路径“!!! :勾选后图片文件路径记录为相对路径,相对路径在Gitee和Github远程仓库才能正常显示图片
  • “对网络位置的图片应用上述规则”:当我们在浏览器中右键“复制图像”,然后粘贴到Typora中时,Typora会把线上图像数据保存到本地,而不是图片URL地址。

上述配置后,图片会保存到./{文章名称}.assets目录下,按文章名称分开存储对应的图片资源。

文章编辑好后,通过Git同步到远程仓库中,Gitee和Github文章显示效果很赞,如下:

image.png

BTW,如果大家想在iPad上编辑Git远程文章,可以参考下这个方案:

  • 通过Spck Editor应用拉取Git远程仓库到本地
  • 通过Taio应用编辑本地文章:打开标签页”添加的位置“-添加目录-添加本地文章目录
  • 文章改动后再通过Spck Editor应用同步到Git远程仓库

Taio应用能实现大部分的Markdown功能,但iPad的输入体验实在不好,我后续换了台MacBook Air M1

md用户福音-搜狗输入法字符替换

搜狗输入法自带账户同步功能,这里捎带介绍下字符替换。

Markdown编写代码的时候,会经常用到反引号(`),但中文输入的时候,反引号按钮输出的是英文名分隔符(·),导致我们需要反复的切换中英文输入法,比较麻烦。

分隔符用的比较少,所以我们可以将其替换为反引号。打开搜狗偏好设置,开启字符替换:

image.png 这里第一个输入框可能无法输入分隔符,大家可以复制粘贴进去。

最后

大家有新的思路和建议欢迎评论!