private boolean wget(String file) {
// wget file
// targetDir must has been created, or cleared if necessary
DirUtils.mkDir(targetDir + "/" + UrlParser.getFilePath(file));
String orig_url = file;
String localFile = targetDir + "/" + file;
file = remoteServerConf.getProtocol() + "://" + file;
String cmd = "wget -t3 -T60 -c " + file + " -O " + localFile;
if (remoteServerConf.getProtocol().equalsIgnoreCase("ftp") == true
&& remoteServerConf.getFTPMode() == 0) {
cmd += " --no-passive-ftp";
}
if (remoteServerConf.getUser() != null && !remoteServerConf.getUser().isEmpty()) {
cmd += " --user " + remoteServerConf.getUser();
cmd += " --password " + remoteServerConf.getPassword();
}
String[] cmds = { "/bin/bash", "-c", cmd };
logger.info("start to exec \t" + cmd);
BufferedReader br = null;
int result = -1;
// 5850K .......... .......... .......... .......... .......... 97% 923K
// 0s
// 350K ,,,,,,, 100% 0.00 =0s
// 0K .......... .......... .......... .......... .......... 0% 309K 19s
// 50K .......... .......... .......... .......... .......... 1% 928K
// 13s
Matcher matcher = Pattern.compile("^\\s*(\\d+)K", Pattern.CASE_INSENSITIVE)
.matcher("");
try {
Runtime t = java.lang.Runtime.getRuntime();
Process p = t.exec(cmds);
br = new BufferedReader(new InputStreamReader(p.getErrorStream()));
long prev_report_size = -(this.reportSizeInterval);
long curr_size = -(this.reportSizeInterval);
String msg = null;
while ((msg = br.readLine()) != null) {
// try to get download size
matcher.reset(msg);
if (matcher.find()) {
curr_size = Long.parseLong(matcher.group(1)) * 1024;
// System.out.println("curr_size: " + curr_size + "\t" +
// file);
if ((curr_size - prev_report_size) >= this.reportSizeInterval) {
updateDownloadSize(curr_size);
// logger.info("Has downloaded: " + curr_size + "\t" +
// file);
prev_report_size = curr_size;
}
}
// try to get length
// Length: 1181995 (1.1M)
// Length: 6213828 (5.9M), 4856852 (4.6M) remaining
// [application/octet-stream]
// Length: 366356 (358K)
// Length: 1181995 (1.1M), 1172559 (1.1M) remaining
else if (msg.startsWith("Length")) {
String[] fields = msg.split(" +");
if (fields.length > 1) {
this.length = Long.parseLong(fields[1]);
updateTotalLength(this.length);
logger.info("Total Length: " + length + "\t" + file);
}
}
}
br.close();
result = p.waitFor();
if (result == 0) {
if (uncompress(orig_url) != true)
{
logger.error("failed to uncompress the file" + orig_url);
}
else
return true;
}
} catch (IOException e) {
logger.error("IOException in wget " + file, e);
} catch (InterruptedException e) {
logger.error("InterruptedException in wget " + file, e);
} finally {
try {
br.close();
} catch (IOException e) {
logger.error("IOException in closing buffer reader " + file, e);
}
}
return result == 0 ? true : false;
}
分享到:
相关推荐
wget是一款广泛使用的开源网络数据下载工具,它支持多种协议,包括HTTP、HTTPS和FTP,同时具备断点续传和镜像功能,非常适合在Linux环境中进行批量或无人值守的下载任务。 ### wget简介 wget是GNU项目的一部分,由...
`wget-1.14-15.el7.x86_64.rpm` 是一个针对Linux系统...通过安装`wget-1.14-15.el7.x86_64.rpm`,用户可以在没有图形界面的Linux服务器上方便地下载文件,执行自动化脚本,或者在无法使用其他下载工具时作为备选方案。
wget是Linux系统中一个强大的命令行工具,用于从互联网上下载文件。它的全名是“World Wide Web Get”,可以从HTTP、HTTPS和FTP协议获取文件,甚至支持通过HTTP代理下载。在给定的场景中,用户遇到了一个问题:尝试...
2. **API接口**:提供了易于使用的API接口,使得在Node.js应用中下载文件变得更加简单,如`wget.download(url, options)`,可以方便地配置下载参数。 3. **自定义设置**:支持设置各种下载选项,包括代理服务器、...
在wget-1.19.5.tar.gz这个压缩包中,包含的“wget-1.19.5”文件很可能是源代码文件。要安装这个版本的wget,首先需要解压,使用`tar -zxvf wget-1.19.5.tar.gz`命令,然后进入解压后的目录,执行`./configure`进行...
2. **HTTP、HTTPS和FTP支持**:`wget`支持三种主要的互联网协议,可以下载网页、文件甚至整个网站。 3. **断点续传**:如果下载过程中因网络问题中断,`wget`可以记录下载进度并在下次启动时继续从断点处下载,避免...
wget是Linux环境中广泛使用的命令行工具,用于从网络上下载文件。这个压缩包"wget-1.19.tar.gz"包含的是wget的1.19版本的源代码。源码包通常用于开发者编译和定制软件,或者在没有预编译二进制包的情况下构建软件。...
4. **时间戳比较**:如果服务器上的文件比本地已有的文件新,wget将仅下载更新的文件,从而节省带宽。 5. **HTTP/HTTPS/FTP支持**:wget支持多种协议,包括HTTP、HTTPS(安全超文本传输协议)和FTP(文件传输协议)...
wget是Linux环境中广泛使用的命令行工具,用于从互联网上下载文件。wget的全称是World Wide Web Get,它是一个开源的、非交互式的网络数据下载器。在标题中提到的"wget-1.13.4.tar.gz",这是一个源码压缩包,包含了...
- **性能优化**:如果大量使用`wget`下载,可能会影响服务器性能。考虑使用多线程、批量下载或者利用PHP的缓存机制来优化。 ### 示例代码(wget.php) 下面是一个简单的`wget.php`示例,它会下载一个网页并将其...
wget是Linux环境中广泛使用的命令行工具,用于从互联网上下载文件。它的全名是World Wide Web Get,顾名思义,就是从Web上获取资源。这个版本是1.7.1,表明它是一个较早的版本,可能适用于某些特定的环境或者作为...
wget是Linux环境中广泛使用的命令行工具,用于从互联网上下载文件。它的全称是World Wide Web Get,由GNU项目开发并维护。在这个“wget-1.8.tar.gz”压缩包中,我们拥有wget的1.8版本源代码,这是一个历史悠久且稳定...
在Linux系统中,`wget`是一个非常重要的命令行工具,用于从互联网上下载文件。它支持HTTP、HTTPS和FTP协议,还可以通过代理服务器工作。在本案例中,我们讨论的是`wget`的一个特定版本——`wget-1.13.tar.gz`,这是...
wget是Linux环境中广泛使用的命令行工具,用于从网络上下载文件。它的全称是World Wide Web Get,由GNU项目开发并维护。在本例中,我们关注的是wget的1.11.1版本,该版本的源代码被打包成一个名为"wget-1.11.1.tar....
wget是Linux环境中广泛使用的命令行工具,用于从网络上下载文件。它的全名是“World Wide Web Get”,正如其名,它可以从万维网上获取资源,支持HTTP、HTTPS和FTP协议,甚至可以通过代理服务器进行下载。`wget-1.7....
wget是Linux环境中广泛使用的命令行工具,用于从网络上下载文件。这个压缩包"wget-1.8.1.tar.gz"包含的是wget的1.8.1版本源代码。源代码是程序的基础形式,允许用户根据自己的需求进行编译和定制。在Linux系统中,"....
wget是Linux环境中广泛使用的命令行工具,用于从万维网(World Wide Web)上下载文件。这个工具是非交互式的,这意味着你可以安排它在后台运行,甚至在没有用户交互的情况下进行下载。`wget-1.8.2.tar.gz` 是wget的...
wget是Linux环境中广泛使用的命令行工具,用于从互联网上下载文件。wget的全名是World Wide Web Get,正如其名,它可以从Web上获取资源,包括网页、图像、视频等。这里的“wget-1.20.1.tar.gz”是一个包含wget源码的...
wget是Linux环境中广泛使用的命令行工具,用于从互联网上下载文件。它的全名是World Wide Web Get,顾名思义,就是从Web上获取资源。在这个特定的版本中,我们看到的是wget 1.11.2的源代码包,以`.tar.gz`格式提供,...
至于标签中的“源码”和“工具”,`wget`常用于下载开源软件的源代码文件,如Git仓库、ZIP或TAR.GZ格式的源代码包。而“dataStructure”这个文件名可能指的是某个关于数据结构的资料,可能是一个ZIP压缩文件,包含了...