Ubuntu个人数据迁移记录

1. Windows为什么要有注册表而Unix就不需要?

回答一:

Windows的可配置项比通常的UNIX发行版多了可能有2个数量级(除了有系统服务的参数、内置应用的参数、各种个人偏好设置,还有数量巨大的组策略选项、COM组件注册信息)。如果你考虑到这一点,就会发现用文件来配置Windows几乎不可行

  1. 注册表实际上是一个层次型数据库,用来储存系统和应用的海量配置信息
  2. 做成数据库可以保证多进程、多线程同时读写不出错
  3. 注册表有索引,值又是强类型的,所以性能比用文件快,而且占用资源小。这在Windows早期是很重要的特性
  4. 做成数据库还可以支持视图:比如,HKEY_CURRENT_USER,方便应用编程
  5. 软件卸载不干净是反安装程序没写好,和注册表无关。同理,反安装程序忘删文件的话,也不能怪文件系统不好
回答二:

注册表,是微软的做法:把所有配置都存在一个地方(树形数据库);
*nix的做法是:每个应用自己有一套小的配置文件。

各有优劣:
前者统一存储,找起来方便,不容易遗漏,但是坏了后果严重(危及整个系统),想复制一个应用的配置,比较麻烦(有些应用的配置不仅仅是在一个分支里的);
后者各自配置,分散、凌乱,但坏了只影响自己(一个应用),复制一个应用的配置比较方便。

总的来说,还是*nix的做法更好一些。
因为备份所有配置的机会不多,恢复到别的电脑,意义不大。
复制个别应用的配置到另一台电脑的机会比较多。

win下的应用,直接使用配置文件也可以的,注册表出现前,就是都使用ini的。
我写的win下的应用,也是都使用ini的,尽量不注册表(除非是需要操作系统自动做什么)
这样的程序才绿色(即拷即用,即删即清)

2. 为什么Linux上的软件不需要“安装”& 为什么很多软件不做成“绿色软件”?

软件是否需要安装,与os无关
是软件本身是否【绿色】决定的

windows和linux下的应用软件,都有绿色(即拷即用,即删即清)和非绿色(需要安装)的
windows下 非绿色的应用软件 多一些,是因为 windows的注册表机制
Windows 为什么要有注册表而 Unix 就不需要?

但是,windows下的软件,也是可以不利用注册表,而像nix一样,应用自己维护一套配置文本文件(ini或xml)的,但是,如果涉及系统自动加载的部分,可能不得不在注册表里告诉系统
如果这个【告诉】可以在应用运行后自动进行,而不是之前进行(安装),也算是 绿色 了:
即拷即用,即删即清(但 注册表里的告知信息 没机会清了)
这一点,
nix也一样,如系统自动运行的设置,即使应用在运行后能自动设置,但是直接删除应用所在的子目录,肯定也没机会清除

为什么不把所有的软件做成“绿色”软件?这样一来重装系统之后不就不需要重新安装了吗?
这个主要是由于软件往往使用到一些公共库(win下是dll,linux下是so),软件不想自己再准备一分,而是希望借助于系统已经附带的(这样软件的大小会小很多)
高层的库还需要底层的库,有些依赖关系复杂、深远,如果各个应用、库所依赖的公共库相同,但是它们不同版本的接口不兼容,更加导致互相影响(你能运行了,我就不能运行;我能运行了,你就不能运行)
就导致了所谓的 dll地狱 !
(说明,虽然叫dll地狱,其实so也是一样的。java程序,可能叫jar地狱,甚至jvm地狱:这个java程序需要A版本的jvm,那个java程序需要B版本的jvm)

3. 数据迁移

​ 从上面内容可以看出来,Ubuntu的配置文件多以文件的形式保存在用户目录下,我只需要将我的用户目录完整地备份,然后取代即可。

5. 参考资料

  1. Windows为什么要有注册表而Unix就不需要?

  2. 为什么Linux上的软件不需要“安装”& 为什么很多软件不做成“绿色软件”