Dropbox是什么?
请参考官网或者简书搜索关键词Dropbox
Dropbox可以给我带来什么?
- 下班前编辑了一半的代码、文档,到家后可以继续
- 上班时修改了IDEA的一个快捷键,回家发现已经生效了
- 甚至连git的工作目录的状态都一模一样,完全不需要和remote交互
- 在家往Alfred中增加了一个workflow,上班后发现已经出现在工作电脑上
- Zotero添加了一篇文献,回家想再研究的时候已经就可以打开了
- 所以呢,上下班可以和电脑说拜拜
那么如何实现?
基本要求
- 系统保持一致,我目前统一使用Mac OS X 10.11.6
- 软件保持一致,包括但不限于用户名(家目录),各种软件、运行库(JDK)版本
同步代码工作目录(jmh-samples为例)
目标是同步src
, pom.xml
, .git
,不同步.idea
,target
,jmh-samples.iml
文件,原始目录结构如下:
$ tree ~/SDK/code/jmh-1.17.3/jmh-samples
├── .idea 400k
├── .git 385k
├── src 380k
│ ├── main
│ │ ├── java
│ │ └── resources
│ └── test
│ ├── java
│ └── resources
├── target 13M
├── jmh-samples.iml 4k
└── pom.xml 8k
如果我们可以把工作目录做成如下结构,就可以实现目标。
-
. origin
目录指向Dropbox的jmh-samples,方便cd进去使用git,如果命名为.git
IDEA就不会显示这个目录 -
.idea
,jmh-samples.iml
,target
存在于SDK的jmh-samples目录下 -
pom.xml
,src
目录指向Dropbox的jmh-samples下的文件 -
.git
目录只存在于Dropbox的jmh-samples下
$ ll ~/SDK/code/jmh-1.17.3/jmh-samples
lrwxr-xr-x .origin -> ~/Dropbox/code/jmh-1.17.3/jmh-samples
drwxr-xr-x .idea
-rw-r--r-- jmh-samples.iml
lrwxr-xr-x pom.xml -> ~/Dropbox/code/jmh-1.17.3/jmh-samples/pom.xml
lrwxr-xr-x src -> ~/Dropbox/code/jmh-1.17.3/jmh-samples/src
drwxrwxrwx target
同步软件的配置
Mac(包括其他Linux系统)比Windows在这方面有优势的是Mac是基于文件的,并且Mac的配置一般会在~/Library下,Mac的软件xxx.app也是不允许修改包内容的。而Windows基于注册表的,一些软件会甚至会把配置放在各种地方(家目录,C:\Windows目录,注册表)。所以同步配置这件事情上,Mac会比Windows软件容易得多。
下面以开发软件IDEA为例
- 在A电脑上在Library中搜索IDEA
find ~/Library -name "*Idea*" -ls
-
IdeaIC2016.3
软连接到Dropbox中 - 在B电脑上新建软连接,并且备份原文件
IdeaIC2016.3.old
$ find ~/Library -name "*Idea*" -ls
drwxr-xr-x ~/Library/Application Support/IdeaIC2016.3
drwxr-xr-x ~/Library/Caches/IdeaIC2016.3
drwxr-xr-x ~/Library/Logs/IdeaIC2016.3
lrwxr-xr-x ~/Library/Preferences/IdeaIC2016.3 -> ~/Dropbox/app/IDEA/Preferences/IdeaIC2016.3
drwxr-xr-x ~/Library/Preferences/IdeaIC2016.3.old
▲上面是最终结果,Caches
和Logs
目录可以忽略,配置文件常常存在于目录Application Support
和Preferences
中,这边没有同步Application Support
中的IdeaIC2016.3
,需要注意的是多台电脑上的JDK版本和安装路径要保持一致。