利用云同步盘实现多台电脑部分配置同步问题利用云同步盘实现多台电脑部分配置同步问题怎么解决

我们经常会在公司,个人甚至更多环境不同的电脑进行切换,当然,也存在重装系统、换电脑等问题。而在每次更换之后,都会进行一次环境配置。或者在某台电脑上修改了部分配置而其他电脑又需要再次配置一次。

尤其是类似于 ssh 密钥等配置,每次不光是重新生成一份就行了,还需要去各平台新增,及其麻烦。

当然,使用云盘拷贝备份的方式可行,但是每次修改都需要再次备份,会存在遗忘的情况,有办法让配置自动同步么?

答案是有的!

我们可以利用云同步盘(如 OneDrive)让配置文件自动同步,同时利用文件链接如window的mklink创建文件链接。实际文件存放在云同步盘中,而系统配置中的文件使用链接的方式。

这样不管是修改哪个文件,源文件都会被修改然后被云同步盘自动同步。

例 ssh 下的 config 文件创建文件链接(windows):

@rem 在云盘中的config所在文件夹
mklink config %USERPROFILE%/.ssh/config

这样我们不管是修改云盘中的文件还是C盘下的文件,源文件都会被修改同步。

但是这样我们需要在每台电脑上都进行一次文件链接创建。

所以这里提供一个脚本直接进行链接创建,想来看看目录结构以及说明:

每个目录对应系统中某个文件夹,具体对应的文件夹根目录为当前文件中的 .localpath 的内容。映射时会把当前目录下的所有文件分别链接到 .localpath 所指定的目录并且一一对应。

-- settings/
-- userprofile/ # C 盘目录下 user/用户名 下面配置
-- .ssh/
-- config
-- id_rsa
-- id_rsa.pub
-- .gitconfig
-- .npmrc
-- .yarnrc
-- .localpath # 文件内容:%USERPROFILE%,即系统盘中的"user/用户名"目录
-- others/ # 其他配置
-- .localpath # others 文件所对应的系统目录位置
-- init.bat # 创建软链

这样在执行 settings/init.bat 就会吧 userprofile 文件夹下面的所有文件分别映射到 %USERPROFILE% 对应的文件下,即创建 .npmrc、.yarnrc、.gitconfig、以及 .ssh 下的所有配置进行映射同步。

这样无论 修改 哪里的文件,同步盘中的内容都会跟着更新并同步。同时另外一台有做链接映射的电脑打开的时候同步盘自动更新后,系统配置文件也就自动更新了!

而在重装系统、新增电脑的机器上把同步盘装上同步下来后执行 init.bat 就OK了。

当然,如果是跨平台的操作系统,可以提供更多的配置,如 init.sh 等。

这里附以下 init.bat 文件:

@echo off
setlocal enabledelayedexpansion
@echo off
:: 同步设置的根路径
set SyncSettingsPath=%OneDrive%\settings
:: .localpath的文件名
set LocalPathName=.localpath
:: 遍历当前目录所有文件夹
for /f %%n in ('dir %SyncSettingsPath% /b /a:d') do (
if exist %SyncSettingsPath%\%%n\%LocalPathName% (
:: 读取.localpath
for /f %%i in ('type %SyncSettingsPath%\%%n\%LocalPathName%') do set LocalPathContent=%%i
:: 转换.localpath内容中的变量
for /f %%i in ('echo !LocalPathContent!') do (
:: 递归遍历当前文件夹下非.localpath的文件
for /f %%f in ('dir %SyncSettingsPath%\%%n /s /b /a:-d ^| find /v "%LocalPathName%"') do (
set CurrentSyncFilePath=%%f
set CurrentLocalFilePath=!CurrentSyncFilePath:%SyncSettingsPath%\%%n=%%i!
if exist !CurrentLocalFilePath! del !CurrentLocalFilePath!
mklink !CurrentLocalFilePath! !CurrentSyncFilePath!
)
)
)
)

Published by

风君子

独自遨游何稽首 揭天掀地慰生平