使用wget进行两个服务器间单向文件同步

之前曾经使用过FTPSync进行非实时网站同步的实现,结果发现wget已有类似功能,而且更加简单

例如:
wget -m --no-remove-listing -nH -P /home/xxx/bak/ ftp://username:password@www.xxx.com/*
务必注意最后ftp路径后面有个*,否则wget只会下载生成一个目录列表文件index.html,而不会同步文件

参数含义:
-m 开启单向镜像
--no-remove-listing 不生成目录列表文件index.html
-nH 不创建以主机名命名的目录
-P 下载保存路径

wget很强大,可以做很多参数配置,例如:
-w 下载间隔时间
-X 排除某些目录
......


-----------以下2009-11-05 23:00添加-----------
wget只能实现下载,远程如果删除了文件,本地不会同步删除,比较适合一次性将文件全部抓取回来或者不需要删除的情况;FTPSync则可以同步删除。

如何让没有Shell权限的用户可以使用Proftpd的FTP服务

默认Proftpd是需要检查连接用户在/etc/passwd中配置的shell类型是否在/etc/shells中存在的,所以默认配置了/sbin/nologin或/bin/false的用户登录FTP会提示530 Login incorrect

解决方法有两种:
1、将/sbin/nologin或/bin/false添加到/etc/shells中就可以
2、在Proftpd的配置文件/etc/proftpd.conf中关闭检查项RequireValidShell,具体可以参考Proftpd手册http://www.proftpd.org/docs/directives/linked/config_ref_RequireValidShell.html

非实时网站同步的实现

现状:
现有两个站点,分别称为SiteR和SiteF,两者都可以通过FTP管理,且SiteR有Shell权限并支持perl

目的:
将SiteF作为主站,定时将SiteF上的WEB内容和数据库数据同步到SiteR,同步是非实时且单向的

实现方法:
1、在SiteR上使用FTPSync.pl脚本实现通过FTP方式的SiteF到SiteR的文件同步(下载地址http://ossw.ibcl.at/FTPSync/

2、在SiteF上编写一个php页面,作用是定时将数据库数据导出成文本格式并压缩,核心代码如下,原理是使用system方法执行MySQL的备份命令mysqldump,同时使用find命令删除过期备份文件
[quote]$command = "mysqldump -h数据库地址 -u用户名 -p密码 --default-character-set=utf8 数据库名|gzip>生成的文本备份文件路径及名称";
system($command, $retval);

$command = "find 备份路径/*.gz -mtime +10 -exec rm {} \\;";
system($command, $retval);[/quote]

3、在SiteR上编写Shell脚本,核心代码如下
[quote]//远程调用SiteF备份页面,生成数据库备份
wget http://xxx.xxx/xxx/xxx.php

//同步远程文件到本地
ftpsync.pl ftpuser=FTP帐号 ftppasswd=FTP密码 本地目的路径 ftp://远程FTP源地址//[/quote]
如果源FTP地址是从根目录开始,最后要写两个/,这个貌似是FTPSync的一个BUG,我使用的是1.3.01

4、在cron中定时调用第3步的Shell脚本
[quote]#每天凌晨0点
0 0 * * * /xxx/xxx[/quote]

此方法的必备条件:
1、各个站点可通过FTP获取源文件
2、其中一个站点有Shell权限,且支持perl,且可以使用cron

网站内容如何进行索引擎优化

索引擎优化(SEO)是当前互联网研究的一个热点,基本方法是通过优化站点页面的关键内容输出、在其他优秀站点导入链接(从外部网站的页面上链回您的网站的链接)等方法,提高搜索引擎对于站点的“识别能力”和给予更高的评分。

针对搜索效果较差的情况,可采取相关的优化有:
1、站点根目录建立robots.txt,显示声明搜索路径,并提供sitemap链接,帮助搜索引擎“找门”,例如
User-agent: *
Disallow: /admin/
Allow: /blog/
Sitemap: http://www.xxx.com/sitemap.xml

2、定期生成站点地图sitemap文件,声明站点内容和更新周期,帮助搜索引擎“识路”,例如
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://www.xxx.com/index.jsp</loc>
<lastmod>2009-02-06T08:36:00+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>http://www.xxx.com/a.jsp</loc>
<lastmod>2009-02-06T08:36:00+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>0.8</priority>
</url>
<loc>http://www.xxx.com/singer/837/</loc>
<lastmod>2008-08-31T03:32:10+00:00</lastmod>
<changefreq>weekly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>http://www.xxx.com/bussiness/686/</loc>
<lastmod>2007-10-11T16:07:19+00:00</lastmod>
<changefreq>monthly</changefreq>
<priority>0.4</priority>
</url>
<url>
<loc>http://www.xxx.com/song/3/</loc>
<lastmod>2003-08-30T17:12:38+00:00</lastmod>
<changefreq>yearly</changefreq>
<priority>0.2</priority>
</url>
</urlset>

3、优化链接架构,便于浏览

  • 确保网页只需通过首页的几次点击就能到达;
  • 符合用户习惯的导航设置:在首页可通过你提供的导航链接找到想要的信息:用户如果是通过一个外部链接找网站的,首先到达的不一定是首页,要确保他们能够顺利的找到首页及其他相关部分的链接;
  • 为搜索引擎设置可抓取的链接:文字链接是很容易被搜索引擎发现的;
  • 使用描述性定位文字:也就是通常看到的在链接中可以点击的词语,是一个对搜索引擎和用户很有帮助的信号;
  • 导航中尽量使用文字链;
  • 使用面包屑(breadcrumb)式的导航模式,例如“首页 > 彩铃 > 免费专区“;
  • 更好的链接锚文本(anchor text):锚文本是链接上可以被点击的文字,通常被放在锚标记<a href="..."></a>中,文字要简短、清晰;

4、图片优化:

  • 图片链接增加alt属性的描述,并使用简短但是描述性很强文字;
  • 当图片作为链接使用时,一定要提供alt文本;
  • 将图片保存在一个专用的目录下;

5、更好的元描述来改善页面摘要

  • 为每个网页创建独特的标题标签,在描述中明确包含标记性事实,准确描述网页内容;
  • 创建独特、准确的页面标题:重视<title>页面标题</title>和<meta name="description" content="本页的描述">:多数搜索引擎以此作为页面搜索的主要内容信息来源,description一般会显示在搜索结果的页面描述内容中;

6、优化URL结构:搜索引擎长于抓取各类型的URL结构

  • 在URL中使用单词:URL中的单词也会被作为搜索的依据之一;
  • 使用简单的目录结构:目录结构应该能够很好地归纳网站内容,并且使用户轻松地知道处于网站的哪个位置;
  • 为同一文档提供统一的URL;
  • 动态URL重写为静态URL;

7、建立有用的404网页:用户偶尔会因点击失效的链接或输入错误的URL而访问一些在不存在的页面,使用自定义404网页能有效地帮助用户回到网站中有效页面,将大大提高用户体验;自定义404网页中可提供回到主页的链接,热门内容页面的链接和站内搜索的功能。


除开内容,其他优化方法:
1、在优秀的网站上导出外链

2、充分利用免费的网站管理员工具http://www.google.cn/webmasters/

  • 使用工具分析网站搜索情况,作出对应改进
  • 当网站在Google上产生网站链接后,使用“网站管理员工具>控制台>链接>网站链接”功能,维护网站链接;


SEO是个漫长的过程,优化的效果需要一定时间才能反映,要有耐心,而且要反复、持续的进行~~



参考资料:
1、http://www.googlechinawebmaster.com
2、《Google's Search Engine Optimization Starter Guide》
下载
3、http://www.seotest.cn
4、http://www.seo168.com
5、http://www.seowhy.com

虚拟内存不足

现在在用一台Lenovo的X200,感觉质量还是比原来IBM差些,用了一个月多点,已经莫名蓝屏2次了。

另外还有一个令我不爽的问题就是,经常会提示虚拟内存不足(我设置了4GB),也没有发现中毒,关了很多无用的服务也无效,单从任务管理器里面看,最大的程序也就只占用了几十兆,找了很多工具,例如procexp来观察也没能发现问题,只好用1-2天就重启。

有时间了又来研究,终于还是让我找到了问题,原来是指纹认证服务的问题,虽然任务管理器中看只占用了2xMB的虚拟内存,但是一旦重启这个服务,虚拟内存就会从3.xGB的占用量猛降到600MB左右。Google了一下,有人说是在XP SP3可能有这样的问题,最新的程序也一样,不管如何了,发现问题就好办,写个批处理放到XP的计划任务里面定时重启"AuthenTec Fingerprint Service"服务就暂时将就用吧,等新版本升级来解决咯。

RestartService.bat

net stop "AuthenTec Fingerprint Service"
net start "AuthenTec Fingerprint Service"

当然,如果你不使用指纹识别功能,可以把这个服务禁用掉,我还是蛮喜欢这个功能的,所以只好这样解决了。

网页导出EXCEL格式数据,长数字变为科学计数法的解决方法

通过声明header的方法,可以从页面将表格导出成为EXCEL格式,header的声明方法如下:
header("Content-type:application/vnd.ms-excel");
header("Content-Disposition:attachment; filename=xxx.xls");

但是如果数据中存在长数字,例如600902000005643612,导出后会自动变为科学计数法表示为6.00902E+17,数字也变为600902000005643000,后面几位全部变为0丢失,可以将有问题的字段采用以下样式表风格解决:
<style type="text/css">
<!--
xxx {
mso-number-format:"\@";
}
-->
</style>

公交查询

http://bus.mapbar.com/

关于DNS的NS记录

这里有篇不错的文章,虽然简短,但是说得很明白:http://oldblog.mllm.org/node/30

看看文章中对于在不同级域名DNS服务器上NS记录配置的例子,就会很清晰的了解NS记录的应该如何使用。正如CCPN给我解释的:“上一级有,自己上面也要配置,dns之间相互查询的时候要用到这个东西”

同时,还可以了解到NS记录不是独立存在的,而是要依托于对应的A记录或者CNAME记录的。在Windows的DNS管理中,如果新增了一个NS记录,会对应创建一条A记录。例如新增N记录ns1.t.net,同时会创建名称为ns1的A记录指向对应的IP,而NS记录只是指向了这个A记录。

域控制器中Server服务禁用后导致域用户无法通过远程桌面方式登录

一个域环境中,错误的使用域组策略禁用了所有服务器的Server服务,几分钟后,在域控制器和域成员上都无法使用域帐号进行远程桌面登录,表现为输入正确的帐号密码后,远程桌面停滞在桌面背景底色的界面一段时候,最后报告域控制器不存在或者无法连通,无法使用远程桌面登陆。

原因是在域环境下,域用户登录从远程桌面登录,是需要从域控制器的SYSVOL共享目录中获取一些数据,Server服务禁用导致了共享文件服务失效,于是登录就出现了问题。

首先要想办法进入域控制器桌面,根据Windows的特性,在无法连通网络的情况下,如果使用物理终端(就是走到服务器面前,接上鼠标键盘显示器,你说你有KVM!Lucky!不用去机房了)直接登录,Windows默认是可以使用缓存的之前成功登陆的N个帐号中的某个成功登陆的;这个特性可以在组策略中调整次数,默认为10个。

使用这个方法,虽然是一个比较缓慢的登录过程,但是还是成功进入了域控制器的桌面,但此时无法使用组策略工具连接域进行配置,同样提示域可能不存在。

组策略最终也是放置在SYSVOL共享目录下的,实际是文本文件可以编译,考虑到如此,可以手工修改,删除禁用Server服务的策略,路径为%systemroot%/sysvol/sysvol/域名/Policies/策略的GUID/MACHINE/Microsoft/Windows NT/SecEdit/GptTmpl.inf

策略的GUID:
默认域的策略的GUID为31B2F340-016D-11D2-945F-00C04FB984F9
默认域控制器的策略的GUID为6AC1786C-016F-11D2-945F-00C04FB984F9

这里我们由于是错误设置了域策略,所以修改GUID为31B2F340-016D-11D2-945F-00C04FB984F9目录下的GptTmpl.inf。使用记事本打开,发现有[Service General Setting]中有一行"lanmanserver",4,"",将这行删除,保存文件。

为了使修改后的组策略生效,还需要修改组策略的版本号,路径为%systemroot%/sysvol/sysvol/域名/Policies/策略的GUID/GPT.ini,将版本号数字增加100(看你喜好)。

先重启登录修改的域控制器,再重启其他域控制器,故障消失。

有趣的人面识别网站

http://www.myheritage.cn/%E5%90%8D%E4%BA%BA%E4%BA%BA%E8%84%B8%E8%AF%86%E5%88%AB