我相信很多有两台电脑以上的人会碰到这种情况:对一台电脑上的软件配置做了相应的改动,由于没有一个高度自动化的方法来同步这些文件,所以在另外一台电脑上的配置还是旧的。
举个栗子:比如我在工作电脑上对Sublime的自定义键的设置做了改动,用的很顺手,回家后在自己电脑上却还是之前老的配置,这样用起来便会不太顺手了。
有人可能会说可以用Dropbox、iCloud之类的云盘工具来同步,对于大多数普通用户,它们已经足够了。但是针对技术人员,它们有两个缺点:
- 需要手动将文件移动到同步目录下
- 不能对文件的改动做记录和回滚改动
本文将提出一个针对以上问题的简单的解决方案,并附上此解决方案的一个开源实现。
思路
我们将分别对之前提出的缺点进行分析。
需要手动将文件移动到同步目录下
关键在于去除手动的过程,因为我们在修改某个软件配置时,并不会记起还要把这个配置文件放到同步盘里去。
需要对待同步的文件持续保持监控,一旦它们有变化,则把它们复制到同步目录去。
Python的Watchdog模块可以实现这一点,此外,它还是跨平台的。
接下来我们只需要在系统启动的时候自动运行这个监控脚本即可。
不能对文件的改动做记录和回滚改动
这个功能其实就是一个版本管理器。我们没有必要造轮子,直接选用Git即可。
每当监控脚本监测到文件改动时,我们就可以把改动的文件复制到一个本地的Git仓库,然后贮存,提交,推送到远端即可。
远端的仓库有各种免费的解决方案,比如最大的Git托管商Github。
综上,整个同步过程是免费而且完全自动化的。
实现
基于上述思路,我用Python实现了一个简单的工具来做了上述的两件事。
我在README里做了详细的使用说明,目前在OS X和Windows下通过测试。
通过这个工具,我可以做到只要修改想要同步的配置文件,什么都不做,配置文件可以自动同步到Github,而且每一次改动都会被记录。
代码托管于Github:https://github.com/iWoz/file_sync
私有代码仓库推荐 coding.net
已知,谢谢。据我了解,针对个人Bitbucket也有免费的私有仓库服务
比方两个比较本 一个mac 一个Windows
在mac本地某个文件夹放你vim的配置文件a
用了这个修改自动同步的工具
下次比方我用家里Windows机子的时候,先用git去远程仓库把自己本地的文件给更新了再使用?
对。。这个工具只是用来自动同步修改的东西到远端备份,然后记录提交以便回滚,在另外一台机器上需要手动从远端拉取同步