Archive

Archive for November, 2006

Mutt中转发邮件的几种方式

November 29th, 2006 Fwolf No comments

邮件转发,包括转发邮件附件,或者是转发html格式的邮件(以第一个附件的方式包含在邮件中),在强大的Mutt中,大概有以下几种方式,注意所有的操作键都为默认设置:

  • 最简单的方式,按“b”原封不动的转出去!
  • 按“Esc E”,把当前邮件作为模板进行编辑,然后当成自己的进行发送,不过编辑完记得用“Esc F”把发件人改成自己,否则发信服务器有可能会拒发。
  • 按“v”查看附件,然后选中想转发的附件,按“f”把当前附件转发走,或者是用“t”标记上所有想转发的附件,然后按“;f”一次全部转发走。
  • 在设置中把“mime_forward_decode”选项设置为yes,然后按“f”正常转发邮件,被转发的邮件会被整体打包为一个附件发走,虽然可用但估计浏览起来不会太方便。如果不设置“mime_forward_decode”,那么手工编辑转发的邮件太痛苦了。(我测试的结果是,如果直接按“f”转发,怎么也带不上附件)

编辑转发邮件时,如果附件的说明或文件名是乱码,可以按“d”修改为正常名称。

不管怎样,转发html格式的邮件还是非常不理想。

参考:[vox-tech] HOWTO: fiddle with mutt

Related posts

Categories: Tools Tags:

mysql错误:Can’t find file: ‘tbl_name’ (errno: 2)

November 28th, 2006 Fwolf No comments

配置好mutt收发邮件之后,才发现cron每天执行的时候,如果执行中有错误提示或者输出,虽然用户看不见,但他会发一封本地邮件给管理员,在mutt中能够收到。比如,我就收到了这么一封邮件:

From: Cron Daemon <root> To: fwolf Subject: Cron <fwolf@fwolf> backup_mysql > /tmp/backup_mysql.log X-Cron-Env: <PATH=/bin:/sbin:/usr/bin:/usr/sbin:~/bin> X-Cron-Env: <HOME=/home/fwolf> X-Cron-Env: <SHELL=/bin/bash> X-Cron-Env: <LOGNAME=fwolf> mysqldump: Got error: 1017: Can’t find file: ‘ads’ (errno: 2) when using LOCK TABLES

我也是这样才发现每天备份数据库的时候都有错误了,表ads的数据根本就没有备份出来,再衍生查询一下,好几个表都这样,恐怖啊,幸亏及时发现,看来费这么大的力气来搞mutt还是有点用处的。

再来看这个错误,“Can’t find file: ‘tbl_name’ (errno: 2)”这个错误产生的原因在mysql手册中有解释,存储数据表的文件名是有大小写的,大小写错误了就会“找不到”,即使是在不去分文件名大小写的操作系统(比如windows)下,查询中引用的表名也应保持大小写的一致性。

而我产生这个错误的表,原来是在windows服务器下使用的,现在转到linux服务器下了,并且在很长的时间里都没有访问,只是一直舍不得扔掉,每次备份的时候都带着。以前这些数据表都保存在fat32分区中,上次倒腾硬盘的时候,都转换成了ext3分区。再查看一下文件名,果然存在文件名大小写的问题。

一般采用分散文件方式保存的mysql数据表(MyIsam默认,InnoDb也可以通过选项innodb_file_per_table设置),每个表一般有三个文件,扩展名分别是.frm .MYD .MYI,注意大小写!我那些提示出错的表,扩展名三个都是小写的!于是把扩展名MYD MYI都改成大写,问题解决!

至于这些表名为什么成了小写,应该是原来在fat32分区上,windows服务器的时候造成的,因为一般windows下文件的扩展名都是小写的。

Related posts

Categories: Database Tags:

SVN并不完全记录文件的属性

November 27th, 2006 Fwolf No comments

今天刚刚发现的,新建的一个Respontory,提交了一些文件进去,有的带有+x可执行属性,有的带有700非owner不可读属性,但是从仓库中再checkout之后,发现所有的文件属性都变成了755,再一查资料,原来svn并不记录和处理文件的这些属性,也没有什么svn chmod命令。

如果项目中确实对文件属性有要求,可以采用一个笨一点的替代的办法,就是自己写个脚本,比如叫svn_fa_modifier,把所有文件属性的设定都写在里面,每当checkout之后文件属性乱套的时候,就执行一下。(如果一直是在工作目录中checkin和update,文件属性应该不会乱)

至于svn_fa_modifier文件本身每次都要chmod +x么?其实也不用,可以用svn的propset命令来为其设定一个“可执行文件”属性,比如:

svn propset svn:executable ON svn_fa_modifier

这样svn_fa_modifier应该就永远都会带有+x属性了,不过propset中再也没有找到其他更改文件属性的资料。

参考一参考二参考三参考四(似乎svn中checkout出来的文件默认属性都是755?)。

PS: 顺便响应一下豆瓣的blog claim,doubanclaim8b95642ba743d85d,呵呵。

Related posts

Categories: Svn/Git Tags:

用unison来同步你的远程文件夹

November 26th, 2006 Fwolf 8 comments

不知不觉从邮件客户端切换到使用web的gmail已经很久了,以前使用客户端时的习惯早以丢弃了,同时还养成了把gmail当作工作台的习惯 :) 。不过时间流逝,以前只能在公司上网(速度快)收发邮件,现在家里的宽带也不错,同时工作越来越忙,很多时候都要在家里处理一些事情,那么,如果我在公司用mutt把邮件都收下来了,在家里怎么才能看到呢?有没有一种软件能够让我同步公司和家里两台电脑上的maildir目录呢?

答案当然是肯定的,不过不是rsync,rsync只能用来单向传输数据,可如果我在家里收、发了邮件,我希望回到公司之后也能够继续处理,所以我需要双向传输。顺藤摸瓜,就又找到了unison这个好东西,它可以实现双向传输,并且为了节省带宽,只传输变动了的文件,甚至还能够在不同文件系统之间同步。

安装:

apt-get install unison

我安装的版本为2.13.16,不过据unison的官方网站介绍,它已经不再作新的开发了,只是继续维护和小的改进,原来的创始人Benjamin C. Pierce现在在带头搞Harmony,另外一个更广泛意义上的同步工具,不过查了下harmory的资料太少了,并且ubuntu的源中也没有,所以还是先用着unison吧。

直接运行一下unison,就会创建空的配置文件$HOME/.unison/default.prf了,unison的配置文件很有意思,默认的叫default.prf,还可以任意创建多个单独的配置文件(在unison文档中,这些被叫做preference file),在调用的时候,可以指定不同的配置文件,这一点还是非常方便的。

现在,我来创建一个配置文件mail2home.prf,用来同步家里和公司电脑上的$HOME/mail目录,就是mutt的邮件存储目录,内容如下:

# Unison preferences file
# Sync between these too folders
# .prf file cannot recoginize ~, and NOTICE // in ssh address
root = /home/fwolf/
root = ssh://address_of_company_pc//home/fwolf/

# Only process these sub-directories
path = mail
path = .muttrc
path = .unison/default.prf
path = .unison/mail2home.prf

# Include another perference file(.prf)
#Include foo

# ignore all .mp3 files anywhere
ignore = Name *.mp3

# ignore all files with .unison somewhere in their full path
#ignore = Path .unison

# Fastcheck can be open if both side are linux
#fastcheck = yes

log = true
logfile = /home/fwolf/log/unison.log

# imports settings from default.prf
include default

这样,我就可以用一行命令来同步邮件了,注意同步的两台电脑上都要安装unison:

#测试一下。。。
unison mail2home -testserver
#正常运行,有文件需要传输时会提示
unison mail2home
#批模式运行,没有需要merge的情况就不提示啦
unison mail2home -batch

unison通过在$HOME/.unison下创建控制文件来记忆两端的文件状态,并且控制文件在同步的两端也是同步的,所以如果这个文件变得庞大无比,在一次全部同步并保证两端都暂时不会改变的情况下,应该可以删除这个控制文件并且重新开始同步。注意我还没遇到过这种情况,也没有测试过是否可行。

同步位置中有ssh地址时,会提示用户输入ssh的密码,如果ssh能够配置为使用key登录,应该就更方便了,也可以放到cron中定时执行了。

unison同步的速度还是很快的,不过要注意使用-batch同步的时候,一般是以文件最后修改时间来判断覆盖关系的,所以一是要让两端电脑的时间都别太错得离谱,二是记得要使用其他手段备份重要数据!

参考一参考二参考三

hmm…下一步打算注册个大米到gfans论坛玩玩,如果顺利的话,就可以全面启用mutt咯。

Update @ 2008-03-09

发现在path = ???中不能使用表示上级目录的../,加上以后带../的这个文件是同步了,可其它文件却被unison跳过了,如果再加上表示当前目录的.,成了./../以后就更离谱了,差点把我的硬盘全部扫描一遍。

但是部分在replica之外的文件怎么办呢?有一个变通的办法,ln -s到replica目录下,也就是在两个root的目录覆盖范围之下,千万不要再用../了,然后在prf文件中添加:

follow = Name mail_archived.prf
或者
follow = Path links/book

这个例子中,replica定义的是root = /bak/mail,而mail_archived.prf位于/home/fwolf/.unison/下,所以link文件就是:/bak/mail/mail_archived.prf -> /home/fwolf/.unison/mail_archived.prf

注意,如果link在某端的replica中不存在,需要事先创建好,然后就可以通过unison同步了,因为follow=让unison像真实文件一样对待link文件,不存在的话会被同步出一个实体文件来。

Related posts

Categories: Linux, Tools Tags: , , ,

The Ringer / 圈套 / 扮猪吃老虎

November 25th, 2006 Fwolf 1 comment

健康的身体是一切好事情的开端,但是在这个世界上,有一些人虽然拥有健康强壮的身体,大脑却有残疾,学名大概称之为“智障”,损一点的俗话就是叫“傻子”,他们其实生活在另外一个世界中。

和很多电影一样,开始部分的装疯扮傻很无聊,不过这都是剧情需要,不然戏怎么演呢。不过智障人士并不“傻”,他们只是思维方式和我们不一样而已,所以在美女Lynn都看不出破绽的时候,就已经揭穿了Steve的诡计,多么讽刺啊。同样在比赛中,智障人士也给了Steve很大的压力,作为一个正常人,想超过经过训练的智障人士也并非容易,投入就会有回报,这句话用在这里太合适了。

虽然标榜为喜剧片,但我想只是指他的结果而已,毕竟这么一个美好的故事,谁会期待其他的结局呢?故事的过程倒趋向于伦理片,只是借用了喜剧的手法罢了,因为观众们不愿看到智障人士生活的苦涩一面。在他们的大笑之后,除了Steve的烦恼,还透这一丝无奈,或许他们自己体会不到,那样就幸福多了。不管怎样,每个人都有自己的烦恼要面对,尊重自己,尊重他人,学会以苦为乐,生活就像天上的云,没准儿会变成什么样子的。

下次公司再裁员,记得学学Stavi,也许你的老板会心软的。

片中押1000美金在Steve身上的人,是听他忏悔然后把他赶出教堂的那位神父么?谁看清了?

Related posts

Categories: Movie Tags: