标签:shell

在debian上mutt提示附件加载失败

今天发现原来用于备份数据库并邮寄到信箱的脚本不能用了,调试了一下得到mutt发送email失败的提示。

root@n3yang:~# mutt -a n3yang-backup-20120425.sql.gz -s 'backup' backup@gmail.com
backup@gmail.com: unable to attach file.

这个脚本一直运行的很好,mutt也命令用过很多次,不应该有什么问题才对⋯⋯正当百思不得骑姐的时候,随手打了一下–help看看了帮助,发现比以前看多了一行提示:

  -- treat remaining arguments as addr even if starting with a dash
	when using -a with multiple filenames using -- is mandatory

恍然大悟,原来这个版本的mutt支持了多附件,在使用-a参数之后的需要使用 “–” 明确指出邮件地址:

root@n3yang:~# mutt -a n3yang-backup-20120425.sql.gz -s 'backup' -- backup@gmail.com

或者把邮件地址放到最前面,这样写:

root@n3yang:~# mutt backup@gmail.com -a n3yang-backup-20120425.sql.gz -s 'backup'

问题解决了,再找一台CentOS 5.5看看上面mutt的版本,和我这台debian果然不一样。在CentOS 5.5上的版本是

Mutt 1.4.2.2i (2006-07-14)

debian 6上的是

Mutt 1.5.20 (2009-06-14)

验证了之前版本不一样的推断。

WordPress自动备份脚本

blog也运行3个月了,一直没有备份,今天写了个自动备份数据脚本,备份步骤:
1、连接数据库,导出SQL备份脚本到临时目录并压缩
2、使用mutt邮寄到备份信箱
3、删除临时文件

为了安全起见,先为脚本分配独立的只读用户和密码:

grant select on niu3y.* to niu3ybak@'localhost' identified by 'backup';

编写shell 脚本:

# 数据库配置
DBNAME=niu3y
DBPASS=backup
DBUSER=niu3ybak
# 备份的邮件地址
EMAIL="niu3yang@gmail.com"

/usr/bin/mysqldump --skip-opt -u $DBUSER -p$DBPASS $DBNAME > backup.sql
/usr/bin/gzip backup.sql
DATE=`date +%Y%m%d`
/bin/mv backup.sql.gz $DBNAME-$DATE.sql.gz
# 用mutt
/usr/bin/mutt -a $DBNAME-$DATE.sql.gz $EMAIL -s "n3yang.com MySQL Backup $DATE"
# 没有mutt的时候用mail
# /usr/bin/uuencode $DBNAME-$DATE.sql.gz $DBNAME-$DATE.sql.gz | /bin/mail -s 'n3yang.com MySQL Backup $DATE' $EMAIL
/bin/rm $DBNAME-$DATE.sql.gz

最后加入crontab,每周日运行

3 2 * * 0 /root/crontab/niu3y.backup.db.sh