分类: 建站那点事

自动优化及备份网站数据的解决方案(解决了一个困扰我8个月的问题)

2011/05/09日再次更新,脚本还是有变量问题,已修正!

以前,比尔盖子写了一篇关于应用Shell Script和Cron Job来自动备份和优化数据库(远程数据库)的方法,如果想查看比尔盖子写这个脚本的原因和和文章,请猛击这里

两大问题

不过,这段脚本其实是不能用的,因为在语法上出现了一点小小的问题,对,就是那个$stamp变量的写法问题。

但是,困住比尔盖子的并不是这个问题,而是这段脚本根本就无法执行!

PS:如果您不想看比尔盖子解决问题的过程,只想得到一个能用的Script,请直接看“新的解决方案“部分!

(1)执行问题

一执行就会出现Mysql Server Access Denied的提示,一开始是怀疑Godaddy禁止连接,后来发现我将此脚本中的命令一行一行的输入到Shell里面,执行是成功的。

(2)计划任务执行问题

而到了计划任务的时间,比尔盖子就会收到root寄来的邮件,说什么Permissions Denied——还是权限不足。难道是Godaddy还限制了Cron Job计划任务的权限?
就这样,比尔盖子也懒得管它了,一直过了八个月,现在我的邮箱里已经有800多封root寄来的“权限不足报错”的邮件了。

以为问题解决

最近读到了《鸟哥的Linux私房菜》,看到了《Linux文件权限概念》这一章,里面说:“Windows下,一个文件可不可执行要看扩展名,而Linux下文件可不可执行完全看有没有x权限。”

于是马上想到我的Script权限不足的原因可能就在这里!果然如此:只有我自己有rw权限,其它的权限什么都没有,赶紧将权限设置为770!

第二天,我收到了root寄来的邮件。这回Script终于可以执行了,但是执行的结果和我在Shell里面的一样,报错Mysql Server Access Denied。

问题终于解决

今天在学校机房弄了半天,终于发现了这个$stamp变量的问题,于是重写了一个变量,但是依旧Mysql Server Access Denied。有将脚本分行写成Script,一行一行测试,结果发现我新建的脚本上的命令没有任何修改,但是却能执行;而原来脚本上一模一样的内容居然报错!

不但这样,而且当我在服务器上尝试压缩一个文件的时候,明明这个文件在SFTP的列表上是存在的,但是就是提示“No such file or directory”!于是使用ls -l查看一下,发现文件名由“database_backup”变成了”database?_backup”,原来是该死的中文字符编码问题!

回家之后用Linux上的vim重写了(准确的说是重新抄写)了这个Script,上传到服务器,并赋予其“rwxrwx—“的权限,尝试使用Bash执行,成功!

结论

引起比尔盖子困扰的是一下三大问题:

一.文件格式问题

因为Windows下的换行符就和Linux不一样,而且也很难保证这是字符编码没有问题,所以说bash读取到有Windows换行符的文件(脚本)就会误判,导致无法识别真正的命令!

二.变量语法问题

这里面的$stamp变量的语法不正确,导致了备份文件名不正确!

三.权限问题

没有赋予文件(脚本)x权限从而导致脚本没有权限被计划任务执行。

新的解决方案

这回比尔盖子重写了脚本,脚本更加规范,另外,还要强调一次:因为Windows下的换行符就和Linux不一样,所以最好使用Linux编写此脚本,否则请连接到主机远程编写脚本!

#!/bin/bash
# Program:
#   This script can backup Biergaizi's website data!
cd /home/content/44/6531044/backup #切换到备份目录,请按实际情况修改
mysqlcheck -hdiscuzmaogou.db.6531044.hostedresource.com -o discuzmaogou -udiscuzmaogou -pAmaogou4260 >>log #将这里的“数据库地址“等替换成自己的!输出信息保存在log文件
export today=`date '+%Y-%m-%d'` #获得当前日期并写入$today变量
mysqldump -hdiscuzmaogou.db.6531044.hostedresource.com -udiscuzmaogou -pAmaogou4260 discuzmaogou>db_backup_$today.sql #将这里的“数据库地址“等替换成自己的!   将数据库内容转存为SQL文件,文件名为“db_backup_日期.sql 
bzip2 -z -9 -f db_backup_$today.sql #压缩SQL文件并删除原SQL文件,压缩后文件名为“db_backup_日期.bz2

这样,只要将脚本加入Corn Job,定期下载储存备份文件的那个目录就行了,备份的文件名会自己变哦!

修复主题的Bug

最近接到反馈,得知博客无法正常访问,但我并没有发现这个问题,于是禁用了所有的插件。但根据反馈,问题仍没有解决。最后发现是浏览器渲染的问题,比尔盖子将一段图片延迟的Javascript代码插入到header.php中,不料插入的位置有些问题,出现了Bug。但是比尔盖子使用Firefox Beta 4.11,由于渲染比较高级,所以对我这种“问题”式的插入方式还是有比较好的容错机制,但是对于落后数年Internet Explorer来说就没那么简单了,所以导致这两个星期网页的不正常,至此表示歉意。

另外:普及Firefox,点击这里立即下载最新测试版Firefox!

《盘点2010年比尔盖子大事》

庚寅虎年就要过去了,新的一年马上就要到了。在这一年,比尔盖子做了很多事情,有一些非常成功;但也遇到了一些可以说是灾难级的事故。在年末,我来盘点盘点!

1.新年新系统

  • 级别:Good

    在 2010 年 3 月 21 日,比尔盖子换上了 Windows 7 操作系统,体验到了微软新技术!

2.自动采集真给力

  • 级别:Good

    站长终于学会了采集规则,以后再也不用手动复制文章了!

3.备案风波却宁静

  • 级别:Good

    在信产部备案风波下,比尔盖子终于申请到了000webhost。网站在风波之下有难得的平静。

4.Fedora来学习Linux

  • 级别:Good

    下载了Fedora,研究了Linux,进一步提高了计算机水平。

5.免费激活新版Office

  • 级别:Good

    用微软管理上的Bug成功激活了可以通过正版验证的Office 2010,反垄断万岁!

6.无线局域网真快捷

  • 级别:Good

    购买了无线路由器,成功组建家庭无线局域网,实现文件共享,网络共享和远程打印机等功能。

7.网站被停无备份

  • 级别:Critical

    位于000webhost上的网站没有任何警告的被停封,数据无备份,将近半年来的网络数据丢失!

8.购买Godaddy,网站数据部分已丢失

  • 级别:Warning

    最终是折腾够了,购买了Godaddy虚拟主机。但想想网站6个月的数据都丢失,是一大灾难啊! 从这里开始,就进入了事故多发期,我又写了一篇文章,详细的描写了以下部分事故,以下文章的连接好几条都指向那篇文章,不停的出现事故。

9.Bitlocker好心干坏事

  • 级别:Warning

    使用Bitlocker时不幸发生事故,导致电脑两周无法使用和精神损失。

10.电脑风扇不给力

  • 级别:Critical

    就在Bitlocker引起的问题还在修复中,风扇不是时候的出现了故障,花数百元更换。

11.删除系统出问题

  • 级别:Warning

    删除操作系统时破坏系统引导,后修复。

12.刷坏BIOS当学费(上半部分)

  • 级别:Critical

    人品问题导致了很多人刷成功的一个BIOS到我这里来刷坏,最后到百脑汇奸商用编程器刷回,花费70元。

13.有了经验再刷写(下半部分)

  • 级别:Good

    上次刷坏BIOS,增加了经验,这次刷SLIC让两台电脑完美激活。

14.诺基亚,不厚道,刷了手机锁了卡

  • 级别:Critical

    刷正当途径购买的诺基亚时遭遇锁卡,只能更换储存卡。

15.硬盘没坏表损坏

  • 级别:Critical

    我在网上查询我的台式机硬盘相关信息,结果发现我的那批硬盘存在严重问题,不少网友损失惨重。便对硬盘进行检查,幸好我的硬盘不存在任何问题,人品好啊!可后来却戏剧性的,在一次硬盘分区调整操作中,破坏了系统盘,便要修复。却因为软件问题导致硬盘分区表全部损坏,数据全部丢失!

16.临近新年刷坏iPhone

  • 级别:Warning

    由于Temp文件夹空间不足这么偶然的问题导致了刷坏了朋友的Iphone,调整Temp文件夹后刷活。数据有备份,但所有应用程序丢失,精神损失。

轻松解决 WordPress 头像被墙无法显示的问题

Gravatar头像是“Globally Recognized Avatar 全球识别头像”的缩写,他可以让你留言时显示的头像绑定你的常用Email地址,使你不论在哪里留言,都将使用你设定好的Gravatar头像。

而Wordpress的头像全部取自Gravatar的服务器,这就是为什么头像显示慢了。

但是,Gravatar部分服务器长期被墙,我的Wordpress升级到3.0.1后就出现了这样的问题,今天刚刚解决。

找到wp-includes/pluggable.php文件的大约1645行,只要将:

if ( is_ssl() ) {
 $host = ‘https://tomli.blog/gravatar’;
}
 else {
if ( !empty($email) )
 $host = sprintf(“http://%d.gravatar.com”, ( hexdec( $email_hash{0} ) % 2 ) );
 else $host = ‘http://0.gravatar.com’;
}

修改为:

if ( is_ssl() )
 $host = 'https://tomli.blog/gravatar';
 else
 $host = 'http://www.gravatar.com';

就可以了。

原理其实很简单,在Wordpress 3.0.1中,为了加快头像载入的速度,Wordpress会自动判断使用哪台Gravatar的分流服务器。

这本是一个不错的功能,但是Gravatar的副服务器大部分被墙。

但主服务器www.Gravatar.com没有被墙,所以改为从主服务器上获取头像(Wordpress 2.9.2 使用的方法)后恢复正常,但不知道那天会被墙呢。

附:

Gravatar头像的申请方法如下:

1.猛击这里,填写注册邮箱之后,点击”Signup”按钮;

2.到注册的邮箱中查收邮件并点击其中的链接确认;

3.在弹出页面中填写相关内容;

4.点击页面中部框框下的链接”Add one by clicking here!”;

5.如果要从自己的本地硬盘上传一张头像,那就点击第一个链接”My computer’s hard drive”上传头像;

6.进入Crop页面,滑动滑块选择你需要的照片区域后点击页面下部的”CROP”按钮;

7.给自己的头像评定级别。G 普通级、PG 辅导级、R 和 X 为限制级,一般不黄不暴力的选G就行了;

8.点击页面中的头像照片,在弹出的小页面里点击”Confirm”钮确认;

9.到支持Gravatar头像功能的网站发表评论试试吧,要想改头像的话只需要到http://en.gravatar.com/网站里登陆后修改即可。

Akismet,垃圾评论的克星

站长将博客升级到3.0.1之后,就发现Akismet这个插件一直要求我填写Akismet API Key,我也不知道这个插件是何方神圣,便禁用之。

后来,我看到一个人博客的日志上说道,Akismet可以防垃圾评论!
心想:太好了,终于不用为了防广告辛辛苦苦硬着头皮改模板了(本人HTML、PHP皆不好)!

先看看Akismet的自我介绍吧:

对大多数人来说,Akismet 将大量减少甚至彻底消灭垃圾评论和不良 trackback。即使有漏网之鱼,您只需将其标成“垃圾评论”后,Akismet 会自动从失误中学习。获取 WordPress API Key 需要您有账号,如果没有,可以申请一个。

立即去了  http://akismet.com/get/  申请API KEY,却发现需要美元,晕。

仔细看看,原来如果只是个人使用,点击下面的一行文字或猛击这里,就可以免费申请账号,申请过程见下图。

点击Next后,会要求输入验证码。验证码有两个单词,要一起输入,中间不加空格。

然后,你的邮箱会收到电子邮件,内容为:

Thanks for choosing Akismet.

Your Akismet API key is: XXXXXXX(这里是你的密钥)

然后把你的API KEY复制下来,填入Akismet的设置中即可。
如果你有多个博客,可以只使用一个KEY。

P.S:Akismet的网站长期被墙,最近刚解封。如有遇网站被墙的,可浏览联系我帮忙申请或联系我索取一个“比尔盖子 在线代理”的账号,然后使用代理申请。

版权所有 © 2025 比尔盖子 博客

主题设计 Anders Noren返回顶部 ↑