微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

尤其是类似于 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!

)

)

)

)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐