基本流程
服务器&带宽&存储
同步源选择 ,架构选择
提供的服务:ftp | http | rsync 3.官网获取同步方法或工具,源列表(选择上游源)
配置同步工具
定时同步 (crontable)
备份工作,监控与报警,日常维护,优化
文档编写(Wiki),Submit MirrorsList
其他
0/8.服务器&带宽&存储
服务器: Linux ,maybe windows ?..orz
带宽: 越大越好(上行带宽太小无法提供更好的服务,下行太小无法及时同步完整(按网络情况分时段同步,同时尽量避开负载高峰))。 如果要对外服务,需要一个公网IP,有域名更好。
储存: 越大越好(如果是对外提供大量服务,家用的硬盘估计撑不了一年)。可考虑用SSD作为cache。
1/8.同步源选择 ,架构选择
同步源选择:
按需求选择需要的发行版,稳定性第一,多样性第二,满足需求即可。同时也要注意”性价比“(自用镜像无需考虑),例如 OpenBSD之类的性价比可能很低 ,消耗大量的同步流量和磁盘空间可能性价比不是很大,同时例如大学中的镜像站需要网络中心的支持,所以需要考虑到校内用户的支持和热度(学生支持度不 够,nc的支持可能也会下降),同时校内有一定热度才好传承,所以如果添加类似Ubuntu的发行版”性价比“会很高。 慎重选择上线的发行版(自身资源估计),上线尽量保持稳定。切勿随意更换服务。注意预留足够空间!
感谢中大IGI师兄以上给出的建议。推荐:《搭建linux mirror镜像》
架构选择:
一个发行版可能保护多种架构,(例如debian :alpha、amd64、arm、armel、hppa、hurd-i386、i386、ia64、m68k、mipsel、mips、powerpc、s390、sh and sparc,source,debian现有oldstable,stable ,testing,unstable,还有experimental版本),所以需要按需求选择需要同步的架构(因为磁盘空间不是无限的),一般来说就选择i386,amd64,外加source。
2/8.提供的服务:ftp | http | rsync
FTP:vsftpd ?还有很多,不太了解,囧。
HTTP: Webserver建议选择nginx或lighttpd,因为镜像包含大量的静态文件,这两者据说比Apache更有优势, 记得cn99挂掉后,将Apache换到nginx了? 建议 :nginx, lighttpd
Rsync:为下游提供,例如清华,中科大有开放某些发行版,国内提供rsync的镜像站不多,主要是提供rsync会有很高的IO负载,一般承受不起。如果有意愿提供rsync,google即可。
3/8.官网获取同步方法或工具,源列表(选择上游源)
同步方法或工具: 一般就是Rsync,然后从上游拉东西,可以自己写脚本,也可以用官方提供的工具,例如debian的ftpsync等。 切勿使用wget 等工具!不能保证文件link等属性,也无法做到增量同步,浪费资源!
清华的同步脚本:http://git.tuna.tsinghua.edu.cn/
北交Ideal的Mirror工具:https://github.com/ideal/mirror
(感谢ideal曾经提供的帮助,有意愿搭建镜像站的同学遇到 问题可在Twitter上找到他)Rubygems,PyPI,npm也是同样找寻或自己编写同步脚本后工具,或做反向代理。除了主动拉的,还有是官方主镜像推送到官方其他镜像,例如ArchlinuxARM。
ubuntu还有个同步工具 apt-mirror
上游源:
上发行版官网获取MirrorsList,然后找寻提供rsync服务的镜像,选择上游源,一般选择国内,日本,新加坡,台湾等亚太地区的源。 注意:官方rsync可能只对指定IP开放(负载问题)
4/8.配置同步工具
自己写同步脚本 :
失败邮件报警,同步锁控制,两步同步,其他rsync参数。
Rsync教程:读 igi的同步脚本: http://www.igigo.net/archives/65
使用同步工具:
清华的同步脚本:http://git.tuna.tsinghua.edu.cn/
北交Ideal的Mirror工具:https://github.com/ideal/mirror/
PyPI,Rubygems,npm:
读Rubygems和PyPI同步简单教程 : http://fangpeishi.com/post/da-jian-pypiji-rubygemsjing-xiang
读npm同步教程 :http://maskray.me/blog/2012-11-21-tuna-npm-mirror
注意: 添加同步锁,debian系需要两步同步(先同步pool目录)。
5/8.定时同步 (crontable)
定时同步: 把写好的cron脚本丢进 /etc/cron.d/ 《定时自动任务crontab使用教程》 注意:
/etc/cron.d the file names must conform to the filename requirements of run-parts: they must be entirely made up of let