分类归档: Tech.Memo

如何将 Outlook PST 文件内容导入 Gmail

如何将 Outlook 的备份文件( PST 格式)的内容,比如邮件、联系人等信息导入 Gmail 中? 这是我长期以来的一个需求。过去工作中使用 Outlook 备份的邮件,如果查找或者回溯的话,非常不便利。

因为微软的 Outlook PST 文件格式长期以来没有公开(现在似乎可以得到了),所以可以使用的第三方迁移工具非常之少,后来采用了 Google 的工具,加上一次转发,基本达到目标。现将可行的解决方案分享一下。

首先要明确的是目前没有可靠的工具能直接把 Outlook PST 文件导入 Gmail,只得选择一个间接的办法来完成:

PST 文件(源数据) -> Google Apps for Business (中间邮件帐户中转) -> 转发到 Gmail (目标邮件)

Google 提供有 Google Apps Migration for Microsoft Outlook ,但这个工具只能导入到 Google Apps for Business 帐户中(如果你有的话),既然能从 PST 导出,剩下的事情就好办了。

可以免费申请使用 Google App 面向个人与中小团队这个版本(参考地址) ,单个帐户的空间大小是 10GB 。

具体如何申请略过,假定你现在已经有了一个 Google Apps 帐户,在这个帐户中创建一个邮件地址;在迁移之前,还需要在 Google App 的 Domain Settings -> User Settings 里,选中 Enable provisioning API 选项,以便激活 Email 迁移 API 功能(参考此图)。

在前面创建的邮件中设置一个邮件转发(Forwarding),转发到标准 Gmail 帐户(目标帐户)中。

下载并且安装 Google Apps Migration for Microsoft Outlook,然后输入前面在 Google Apps 创建的邮件用户名和密码,之后选择 PST 文件,定义要迁移哪些内容。迁移开始进行,迁移的速度取决于你的网络到 Gmail 服务器之间的速度。检查目标 Gmail 帐户邮件进来的情况。

一些注意事项:Google Apps 邮件的转发规则最好选择转发后删除,否则单个邮件 10GB 的空间可能不够用。而标准 Gmail 帐户可以购买额外的空间,价格也不贵。如果是 Google Apps 帐户购买就太贵了,承受不起。

在目标 Gmail 邮件地址中要配置好各种过滤器,否则大量涌进来的邮件可能带来较大的干扰。

或许个别人也有和我类似的需求,记录一下,希望对你有所参考。如果哪位知道更便利可行的办法,请留言告知。

EOF

更新: 有朋友留言说采用「PST 直接挂到 Outlook 里,Gmail 用 IMAP 方式也挂到 Outlook 里」然后同步,这个方式对正在使用 Outlook 的人是有用的(我已经不用 Outlook 了),另外,要求内容相对较少,如果大量数据,基本上不太适合。

突破电信大亚 DB120-WG 路由限制

根据有关部门的规定,电信宽带一个账号只允许一台电脑上网,一般电信会「借给你」一台功能落后的Modem(并且用户自买的Modem无法拨号),甚至还禁止掉路由功能。这无疑给绝大多数宽带用户带来不变,你要多台机器上网,至少要添加一台路由器,费钱费电,更不环保,线路也会乱糟糟的。

近日在微博投诉电信,宽带保修的时候将我原来出故障 Modem 带走了,留下一个旧 Modem 给我, 这个 Modem 自身不具备无线功能,于是要求电信将我之前同样型号的送一个回来。过了一天,在家门口门洞里(维修人员和我约好放在那地方)发现了一个Modem,大亚 DB120-WG,很破,一层灰,这些都不是问题,毕竟这台机器有无线 AP 功能。

网上可以找到,这款机器默认的超级用户和口令是这样的:

用户:telecomadmin
密码:nE7jA%5m

机器背面有一个低权限的用户,useradmin 以及密码,不过登录之后基本没什么权限,设置 PPPOE 的地方都没有。狗日的电信,非要做功能上的阉割。

我要达到的目的:

  • 通过这台 DB120-WG 进行 ADSL Modem 拨号,也就是说,PPPOE 拨号在这台机器上进行,而不是再另外增加一台路由器;
  • 激活路由功能,默认是禁止掉的;
  • 设置一个个性化的的无线 AP 热点,默认带有一个前缀 ChinaNet;
  • 禁止掉一些隐含的风险,比如禁用电信TRC069远程管理。

机器先不要接电话线,将笔记本(或是台式机)直接和 Modem 上的网络口相连,笔记本本地的 IP 可以设置为 192.168.1.2, 然后访问 Modem 的默认IP: 192.168.1.1。

如果没有人以前修改过默认的密码,应该可以用 telecomadmin 登录进去,找到「网络」 -「宽带设置」,默认有一些配置,杭州地区应该用 8-35(VPI/VCI)的配置进行修改,模式选择路由,注意选择 PPPOE,然后在下面输入你自己的 ADSL 账号。绑定设备则是全选,四个网口以及无线。NAT 那个也选上。保存,重启动。

如果有人修改过默认的 telecomadmin ,这是比较操蛋的事情。需要恢复到默认的出场设置。比较简单的方式是下载 一个 ctce8.cfg 文件(这破文件还真不好找),改名为 ctce8_DB120-WG.cfg , 放到 U 盘根目录下;再在U盘根目录下弄个 e8_Config_Backup 目录,将该文件也扔一份进去。然后将 U 盘插在 Modem 上,重启,会恢复到默认模式,你可以用 telecomadmin 和默认口令登录进去,你不放心这份 ctce8.cfg 的话,在「管理」-「设备管理」,找到恢复「出厂模式」。然后会到一个比较干净的状态。

关于后两个目标,网上介绍有不少方式,都麻烦,最快捷的是这样做:

浏览器访问:http://192.168.1.1/backupsettings.conf

会直接下载 backupsettings.conf ,这是个可读的配置文件(而非 base64 编码的文件), 用文本编辑器打开 该文件, 查找 ChinaNet , 修改自己定义的 AP , 比如 FuckGFW . 再找到默认的那个无线密码,修改为你自己设定的密码。很重要的一点是你要修改掉默认的一些用户名和口令信息。搜索 UserName ,看一下就明白了。不知道修改密码,修改用户名也成,尽管这样不是彻底的安全。

禁用电信TRC069远程管理:找到 tr69c 那一行,将state=”enable” 修改为 state=”disable” ,为了保险,再将后面的 Chinadsl.net 修改为 FuckGFW.net 。

浏览器访问:http://192.168.1.1/updatesettings.html

将修改过的 backupsettings.conf 传上去,等待重启动。然后接上电话线,不出意外,可以顺利访问互联网了。

还有必要做的是,访问:http://192.168.1.1/scsrvcntr.cmd?action=view ,将 telnet 和 ftp 等服务关掉。需要的时候再打开,都是用的默认口令,太他妈的不安全了。

最后的结论,要想痛痛快快上个网真他妈的折腾,难道突破电信 Modem 的限制也要成网民必备技能?去你大爷的有关部门,去你大爷的中国电信!

EOF

此文位于 Tech.Memo on by .
转载须以超链接形式标明文章原始出处和作者信息及版权声明.

Tuning Linode VPS-小规模低性能低流量网站优化实践

偶然看到以前写过的这篇帖子 『小规模低性能低流量网站设计原则』,重新发到微博上引起了一点反响,觉得有必要以 Linode VPS 为例再做个简单的优化实践说明,免得总有人问我,也顺便赚点点击量 :)

假定现在你已经有了一个基本的 VPS 可用,基本内存 512MB 。参考官方提供的各种安装指导将 LAMP 这个组合运行了起来,操作系统一般 Ubuntu ,Web 服务器 Apache ,数据库 MySQL ,然后是 PHP ,以及需要安装的应用软件,WordPress 、Drupal 或是 OpenCart 什么的,一步一步配置好,能够正常的浏览页面。按照官方指导文档操作的一个好处是会包括一些基本的优化一点的配置。不至于出现太大的错误。

一旦应用就绪后,登录到操作系统中,通过 top / iostat / free 等基本操作系统命令收集基准数据,做记录。收集信息越全面,对于后面的优化就越便利。优化没有魔法,只有合理的方法。

1.内存相关的调整
内部测试或是较小范围使用,可能这样也不会遇到太大问题。一旦访问人数多了一点,机器响应可能就有点慢了。对于 VPS ,第一步着手调整的就是各个组件对内存的使用。因为内存受限,对内存的使用一定要精打细算一点。记住一旦内存耗尽,一部分内存调用压到磁盘上,系统负载会飙升,一般就会挂掉。 一般来说,对于 LAMP 环境,以下几个地方要注意:

PHP 程序的内存相关的调整
PHP5 配置文件 php.ini 中 memory_limit 定义的值默认情况是16MB,该参数定义单个 PHP 脚本消耗最大的内存大小(大意)。如果程序某个页面需要的内存超过这个限制,访问者最可能遇到一个 HTTP 500 错误,查看 Web 服务器错误日志也可以看到。多数情况下,这个值需要做相应调整。比如设置为32MB,是否合适,需要做观察。有一个经验方法是观察 top 命令的输出,看相应进程的 SHR 字段的值,实际上总是尽量大一点点。但不能过大,一旦有个别程序写的不好调用的时候占用过多资源,会导致 VPS 挂掉。

经常有人问,这个服务器跑某某 Web 应用,能支持多少并发? 一个大致的思路是估算单个进程占用的内存,看系统能分配多少内存给应用程序,并发的量大致可以估算得到。但实际上,这个提问基本没多大价值。

另外,还有一个比较重要的参数需要修改 output_buffering 需要修改为 On 或是具体数值(eg, 4096)。修改配置后,检查是否生效(如何检查?)。另外,记住error_log的位置,随时查看。

MySQL 数据库内存占用
如果不确定 MySQL 内存使用情况,可以利用 MySQLReport 这个工具收集一下 MySQL 实例的信息报告,不同时间段多收集几次作为对比。然后相应的调整 key_buffer/query_cache_size 等参数的大小, 一次调整一个参数,重启动 MySQL ,继续抽取报告,分析数据,然后调整下一个参数。既然需要编辑配置文件 my.cnf , 建议顺手加大一点 max_connections 这个参数(为什么?)。

多数内存问题都是由数据库 I/O 引起,导致 I/O 问题多由不合理数据库调用有关(这么说严谨么?),解决不合理调用要么修改应用,要么通过查询缓存或是 Key-Value Cache 等办法缓解。这地方说来话长,假定 VPS 上基本不会有这么复杂的环境。

2. 影响 CPU 利用率的调整
这个主要针对 PHP 的 Opcode(Accelerator) 而言,解析、编译PHP代码是相当消耗CPU的操作。常见的要么是 APC, 要么是 eAccelerator 或是 XCache,在 Ubuntu 下安装配置都相对简单,参数调整简单搜索一下就知晓了。如果是 PHP 环境,那么一定要用 Opcode 减少 CPU 的负荷(为什么?)。至于用哪一个关系倒是不大,但前提是必须要有一个。

另外,张磊同学这篇 让进程运行在指定的CPU 对于特定需求的应用,很有借鉴意义。

3. 网络参数控制
修改 /etc/sysctl.conf 文件,增加如下几行:

net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1

然后 sudo sysctl -p 使修改生效。使用如下一行命令观察半连接数量:

$ netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

其实一般来说,网络连接数不会成为最明显的瓶颈。但顺手调整一下也好,「不费电」。有人问,如果遇到 DDoS 怎么办忍着。

4. 应用程序相关的调整
比较流行的开源程序,不安装第三方插件的情况下,性能多少过得去。建议如果没有必要,不要启用过多的第三方插件,尤其是一些带有统计或是「智能」显示内容之类的插件能不用就不用。

这些开源程序也基本上都有面向前端优化的静态化解决方案,比如 WordPress 的 Cache 相关的插件,强烈推荐启用。有时间看看前端优化的实践建议。

Tuning_LAMP.jpg (图片来源)
优化最重要的是找到瓶颈,对症下药。前面已经说到了内存、CPU、网络,大致提了一点 I/O 问题,基本也就够了。PHP 的 Log , MySQL 的慢查询 Log ,Apache 的 Error Log ,常过滤看一下有没有新情况。

补充一点,别忘了修改 OS 的 ulimit 限制:

编辑 /etc/security/limits.conf 增加如下两行(具体数值大点小点问题不大):

*  soft  nofile 40960
* hard nofile 40960

编辑 /etc/pam.d/common-session ,增加如下一行:

session required pam_limits.so

编辑 /etc/profile ,增加如下一行:

ulimit -SHn 40960

重新启动 OS 即可生效。

Linode 后台提供了几个基本的统计图,基本够用。可以设置磁盘 I/O 过高的时候报警,系统会发邮件给你。注意看一下网络流量的使用。不要因为个别文件被盗链而将带宽消耗殆尽。

上面提到的不少修改建议不要照葫芦画瓢,知其然,还要知其所以然。每一步的调整多阅读系统手册,尤其是涉及到具体的参数数值,一定要针对实际情况修改。对基本的配置足够掌握之后,可以根据具体情况尝试性能效率的组件,比如用 Nginx/Lighttpd 替换 Apache ,但是要记住,如果 Apache 不是瓶颈的话,用传说中性能更好的 Web 服务器来替换无疑是折腾。

再次提醒不要过度优化,足够满足需求就行了。有更多的精力完全可以放在其他环节上。另外,如果基本的调整做过之后,想用最省事的办法改善性能,那么,直接向服务商购买额外的内存吧。

好吧,最后我想说的是其实这个优化思路并不局限于 VPS ,这个最小实践套路对于复杂的服务器环境也是基本适用的。 –EOF

Tip:页面不要引用太多的三方脚本。否则也会被拖慢不少。

SSD 趋势小窥

Image representing Andy Bechtolsheim as depict...

Image by idg.com.au via CrunchBase

来自 Sun 的大牛 Andy Bechtolsheim (Sun创始人之一)在 HPTS 2009 上做了题为 Memory Technologies for Data Intensive Computing 的演讲。其中对硬件趋势的演绎很有参考价值。

摩尔定律在未来十年内仍然有效。但是对物理磁盘来说某些方面是需要修改的–速度得不到质上的飞跃了 :)

传统 2.5 寸物理磁盘,能够提供 180 个写 IOPS,320 个读 IOPS,平均一个 IOPS 的价格是 $1(这里指价格处以 IOPS 的平均值,不是累积)。而现在主流 SSD 能够提供 8000 个写 IOPS ,3.5万个读 IOPS,每个IOPS 的成本大约是 $0.1。从性价比上看,SSD 的优势逐渐明显。根据来自 NetApp 的信息,SSD 目前一 GB 大约 $3,而磁盘则为 $ 0.10

而实际上,要想达到百万级别的 IOPS 并非易事,I/O 控制器的处理能力毕竟还有限。SSD 写能力仍然是目前的一大问题,随着时间而写能力下降,”均匀磨损算法”(Wear leveling algorithms)目前也不够完美。

密度每年翻倍,内部延时在未来几年将以每年 50% 的速度减小(现在小于100 usec,磁盘则是大于 5000 usec),而传输能力将每年翻倍。成本也将每年减少 50%。这些都是好事情。未来几年,是 SSD 的天下。而传统物理磁盘将成为磁带,SSD 将成为磁盘。(Disk is Tape,Flash is Disk。这话不是我说的,这是 Jim Gray 的名言)

Tape is Dead
Disk is Tape
Flash is Disk
RAM Locality is King
--Jim Gray 2006

EOF
延伸观看:MySQLConf 09: Andreas von Bechtolsheim, “The Solid State Storage Revolution”