日期:2011-02-23 18:06:00  来源:本站整理

<b>架设Ubuntu源时的两个脚本</b>[服务器安全]

赞助商链接



  本文“<b>架设Ubuntu源时的两个脚本</b>[服务器安全]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

近来在折腾新的Ubuntu的源,向公司申请了一台配置普通的服务器,别的买了一块硬盘,硬件就有了.

然后装了个Ubuntu 9.04 Server,装上ssh,再装上Nginx,略微配置一下,服务就行了,这个历程还是蛮简单的,也很顺利,就不多说了.



接下来便可以开始同步数据了.由于我的目标是一个完好的源,所以就没有效apt-mirror之类的工具,而是直接拿rsync抓取上游的数据了.这个数据量是很大的,所以想尽大概挑选一个速度最快的带rsync的源,但是在茫茫的Ubuntu官方源列表里,这么多源哪个最快呢?当然没有人会奉告你答案,因为每个人的网络环境都不一样啊.所以,最好的办法还是实地测试,所谓磨刀不误砍柴功啊,背面有250G的数据要下载呢,这个测试绝对有代价.

上脚本(不是很完善,够用就行):

#!/bin/bash
urls=`curl https://launchpad.net/Ubuntu/+archivemirrors | \
grep -B 2 '>rsync</a>' | grep http | awk -F '"' '{print $2}'`
rm res
echo "$urls" | while read url;do
rm T
wget -q --no-cache -O T "$url/ls-lR.gz" &
sleep 3
kill %%
echo "testing... $url"
echo -n "$url " >> res
ls -l T >>res
done

sort -k 6 -n res > fast_mirror
rm res T
最后你可以 tail fast_mirror 看到3秒内下载的字节数最多的一个源.我这还真有一个源,能在3秒把7.4M大的ls-lR.gz给下载完的.
然后,你可以先用这个最快的源把大部份数据先更新下来,完了之后,为了保证数据最新,再向官方源更新一次,我用的是这个脚本:

#!/bin/bash
[[ $UID == 0 ]] || { echo "Must be root to run this script."; exit 0; }
LOCK="/data/sync_sh/lock"
LOG="/data/sync_sh/log"

while true; do
echo -e "\nstart sync @ `date`" | tee -a $LOG

if [ -f $LOCK ]; then
echo "another sync is running, I exiting..." | tee -a $LOG
exit 1
fi
touch $LOCK

st=`date +%s`
rsync --timeout=120 --exclude=".~tmp~" -avP --delete-excluded --progress rsync://archive.Ubuntu.com/ubuntu/pool/ /data/mirrors/ubuntu/pool/
res=$?
if [ $res -eq 0 ]; then
echo "rsync pool succ" | tee -a $LOG
et=`date +%s`
echo "pool sync use $(( $et-$st )) sec = $(( ($et-$st)/60 )):$(( ($et-$st)%60 ))" | tee -a $LOG
else
echo "rsync pool failed" $res | tee -a $LOG
fi

st=`date +%s`
rsync --timeout=120 --exclude=".~tmp~" -avP --delete-excluded --progress rsync://archive.Ubuntu.com/ubuntu/ /data/mirrors/ubuntu/
res=$?
if [ $res -eq 0 ]; then
echo "rsync all succ" | tee -a $LOG
et=`date +%s`
echo "all sync use $(( $et-$st )) sec = $(( ($et-$st)/60 )):$(( ($et-$st)%60 ))" | tee -a $LOG
else
echo "rsync all failed" $res | tee -a $LOG
fi

df | grep "/data" | tee -a $LOG
echo -e "end sync @ `date`" | tee -a $LOG

rm $LOCK

sleep 7200
done
这个脚本先更新pool目录,再整个目录更新一遍,这样是为了削减呈现软件列表里已经有某软件,但是却下载不到的情形.
脚本常驻运行,在上次更新完今后的2小时,启动下一次更新,这样应当算是国内最新的源了吧?
PS: 感激服务器达人lupa的walkerxk在我架设源时,给我的热情帮忙.   以上是“<b>架设Ubuntu源时的两个脚本</b>[服务器安全]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .