博客又有活儿得干了

王志勇 发表于 2026年11月02日 08:52

昨天图片的服务器在维护,大约有16个小时不能访问,和停电的感觉是一样的,今天已经恢复正常。一直没有做双服务器文件同步备份的功能,现在必须把这个功能做出来,因为最近PHP出现Shell的重大漏洞,网络上又出现了勒索病毒。网站的文件丢失,或者被黑了,损失会十分惨重,那是多年的心血。

这个功能需要考虑性能,因为需要大量遍历整个站点的文件,昨天测试PHP的速度,Windows本机运行累加1000万次耗时0.09秒,用虚拟硬盘(高速)测试重复获取一个1字节的文件的修改时间1000万次,耗时0.43秒。然后,用一个3兆多的MP3文件做测试,重复获取这个3兆多的文件的修改时间1000万次,同样耗时0.43秒。

在Linux的Debian系统下做同样的测试(也用虚拟硬盘测试),结果一样,即无论文件多大,获取这个文件的信息(如修改时间、文件大小),耗时是完全一样的。有了这个测试结果,即使站点有20万个文件,遍历一遍也不会那么占资源。当然,达到20万个文件的站点,需要相应的解决方案。

因为现在的服务器都是固态硬盘,遍历文件的这个操作,读取能力比机械硬盘强的不是一星半点。而且这个备份文件用到的遍历文件的功能,也不是很常用,每天、或者每7天,最多执行1次。

这个功能分2个版块:
1. 双服务器文件备份,即另一个服务器远程完全复刻某个站点,文件+程序+数据库100%相同;
2. 服务器的文件一键自动备份到本机电脑。(Windows本机的DOS命令,必须安装wget命令。)

这些年手动备份的方法是定期打压缩包,然后下载,耗时耗力。这个功能完成之后,是遍历整个站点目录,只更新时间节点之后的文件。只能用这个方法,如果想节省硬盘读取,需要在原来的每个数据写入的文件,都建立更新日志,工作量特别大,而且容易有遗漏。

防止PHP超时的方法
PHP运行超时默认的时间是几十秒。为了防止PHP超时,每次更新时,把10个~20个文件分为一组,更新下载之后,再更新下一组的10~20个文件。

对于勤于更新的站点,每次同步的备份一般总共不超时10个文件。

功能完成之后
能让站点一键全自动备份,能备份所有的站点。一旦主力站点出现不能访问,可以临时解析到临时的服务器,数据是100%相同的。

0条评论:

发表评论:
名字: (*必填)
博客: (可省)

正文:

  记住信息? 是 否

王志勇:1980-09-26 (46周岁)
程序设计,Web站长

版权声明:本博客所有文章,均符合原创的定义,禁止转载,违者将必究;正确的方法是贴原文的标题和网址即可。

与此相关的链接
自由勇专栏

Blog存档 Archives

2025年-2026年03月(10)
2024年(13)
2023年 +

2022年 +
2021年 +
2020年 +
2019年 +
2018年 +
2016年-2017年(9)
2014年06月-09月(10)
2013年 +
2012年 +
2011年 +
2010年 +
2009年 +
2008年 +
2007年 +
2006年 +
2005年09月(4)

Copyright © 2006-2026 auiou.com All rights reserved.
此Blog程序由王志勇编写
生产环境提示:博客属专业平台,访问者多为专业用户,http模式能承载更高的峰值吞吐量。