场景: 由于需要把 http://x.x.x.x//VipProcessData/BasicObject/ 下的所有内容同步到远程另一个机器。BasicObject/目录下有9个目录每个目录下有200~1000个文件不等 文件小的几十k大的几百兆 总计27
场景:
由于需要把http://x.x.x.x//VipProcessData/BasicObject/下的所有内容同步到远程另一个机器。BasicObject/目录下有9个目录每个目录下有200~1000个文件不等 文件小的几十k大的几百兆 总计270G
测试wget xxxxxxx 只有1M/s的速度 如果同时启动n个wget xxxxx基本能打到nM/s的速度。
由于"AreaObject ClassObject FullTextObject FundObject MediaObject OrganObject“几个子目录下文件总计都不大 加起来也只有4~5G 因此这几个目录使用
wget -m -np -c -nH http://x.x.x.x/VipProcessData/BasicObject/$name/ ;下载
而其他几个目录 先把文件整理成url列表 然后以
wget -c -i /url1的方式来下载。
shell 以
{}&来模拟一个进程
因此:
################以下是脚本############################# #!/bin/bash #file /usr/local/data/VipProcessData/wget.sh base=/usr/local/data/ #定义基本保存路径 dir="AreaObject ClassObject FullTextObject FundObject MediaObject OrganObject" 定义需要使用wget -m -np -c -nH 来下载的目录名 for name in $dir do { cd "$base" wget -m -np -c -nH http://x.x.x.x/VipProcessData/BasicObject/$name/ }& #实际循环启动了6个后台进程执行wget -m -np -c -nH http://x.x.x.x/VipProcessData/BasicObject/$name/ done wait #等待进程执行完成 echo "finshed the data AreaObject ClassObject FullTextObject FundObject MediaObject OrganObject downloading" { cd /usr/local/data/VipProcessData/BasicObject/SubjectObject && wget -c -i /usr/local/wget/SubjectObject01 }& #启动1个进程执行wget -c -i /usr/local/wget/SubjectObject01 { cd /usr/local/data/VipProcessData/BasicObject/SubjectObject && wget -c -i /usr/local/wget/SubjectObject02 }& #启动1个进程执行wget -c -i /usr/local/wget/SubjectObject02 { cd /usr/local/data/VipProcessData/BasicObject/SubjectObject && wget -c -i /usr/local/wget/SubjectObject03 }& # 启动1个进程执行wget -c -i /usr/local/wget/SubjectObject03 { cd /usr/local/data/VipProcessData/BasicObject/SubjectObject && wget -c -i /usr/local/wget/SubjectObject04 }& # 启动1个进程执行wget -c -i /usr/local/wget/SubjectObject04 { cd /usr/local/data/VipProcessData/BasicObject/WriterObject && wget -c -i /usr/local/wget/WriterObject01 }& # 启动1个进程执行wget -c -i /usr/local/wget/SubjectObject05 wait 等待上述5个进程执行完 echo "finshed thr data of WriterObject and SubjectObject" { cd /usr/local/data/VipProcessData/BasicObject/TitleObject && nohup wget -c -i /usr/local/wget/TitleObject01 }& #启动1个进程执行wget { cd /usr/local/data/VipProcessData/BasicObject/TitleObject && nohup wget -c -i /usr/local/wget/TitleObject02 }& #启动1个进程执行wget { cd /usr/local/data/VipProcessData/BasicObject/TitleObject && nohup wget -c -i /usr/local/wget/TitleObject03 }& #启动1个进程执行wget { cd /usr/local/data/VipProcessData/BasicObject/TitleObject && nohup wget -c -i /usr/local/wget/TitleObject04 }& #启动1个进程执行wget { cd /usr/local/data/VipProcessData/BasicObject/TitleObject && nohup wget -c -i /usr/local/wget/TitleObject05 }& #启动1个进程执行wget { cd /usr/local/data/VipProcessData/BasicObject/TitleObject && nohup wget -c -i /usr/local/wget/TitleObject06 }& #启动1个进程执行wget wait 等待上述6个进程执行完 echo "finshed thr data of TitleObject" echo ”all data download finshed“ ##############以上是脚本#############################
可以看出 脚本先后同时启动n个进程,待进程全部结束后再启动n个进程。缺点,不能保障n个进程每次都能同时或者接近同时完成。因此实际上 上述脚本理论上最大的下载速度是6m/s (最开始同时启动了6个进程)之后就再也没有过同时达到6m/s的下载速度了。
目录遍历