用wget多线程从ibm下载补丁

情景:bim的系统补丁下载,会告诉你一个ftp服务器地址和目录,该目录是所需补丁的文件链接,而不是实际文件,如lrwxrwxrwx   1 17590    446              62 Jul 12 20:34 72.bff -> /aix/fixes/byCompID/5765E6200/bos.rte/bos.rte.aio.5.2.0.75.bff。这样的链接,在用linux自带的ftp登录后get/mget下载时, 文件名是链接名,内容为实际文件,此时下载是成功的。

问题1:如果下载文件比较多,用get方式下载速度慢而且不保险,一旦断掉再次下载就很麻烦,因为你不知道下到哪里了。

问题2:ibm下载站点登录的时间非常长,大概需要4分钟时间才出现登录画面,这样的时间让多数windows的ftp软件超时,如cuteftp,smartftp没有设置超时的配置,ftprush最高时间为200秒。

问题3:windows explorer是可以登录的,但必须一个文件一个文件的另存为下载,flashxp可以设置很长的超时时间,可以登录,但下载到文件是链接文件,而不是实际文件。wget也可以下载,但它也是下载链接文件而不是实际文件。

解决方法:wget不受登录时间影响,实际连接地址可以根据连接文件得到,wget是可以用shell脚本方式调用的。所以先拿到连接文件,再得到连接地址,然后用shell循环调用wget(比ftp的get快很多),可以快速下载。

代码示例如下,其中files.txt为下载的连接地址,totalrunning表示同时下在的进程数。
INPUT=files.txt
LOGFILE=wgetibm.log
totaltasknum=`wc $INPUT | awk '{print $1}'`
dotasknum=0
totalrunning=10

echo total task is $totaltasknum

for file in `awk '{ print $11 }' $INPUT`
do
  URL=ftp://www7b.boulder.ibm.com$file
  tmppn=`ps -ef | grep wget | grep -v grep | wc | awk '{print $1}'`
  echo wget processes count : $tmppn
  while [ $tmppn -ge $totalrunning ]
  do
    echo wait for process release......
    sleep 10
    tmppn=`ps -ef | grep wget | grep -v grep | wc | awk '{print $1}'`
  done
  echo begin wget from url $URL
  nohup wget ftp://www7b.boulder.ibm.com$file >> $LOGFILE &
done

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值