In the area of Linux application development, not much has been done with download accelerators. These timesaving tools establish several concurrent connections to one or more FTP servers and download one large file in multiple parts, only to combine these parts back into the original large file. This saves time on downloading huge files and can ease bandwidth constraints. Here, I will explain how to install and use two such tools, ProZilla and ProzGUI, to help speed up your download time.
The command line vs. the GUI
ProZilla is a console-based download accelerator that is easily installed on server systems. The fact that ProZilla is consoled-based makes it a very flexible tool for IT departments, since many administrators prefer their servers to be sans graphical elements, which limits the amount of tools they have available. Using ProZilla on a server can reduce the time spent downloading system updates, replicating databases and Web servers, and performing backups and other tasks where large file transfers are necessary.
ProzGUI is an X-Windowing System version of ProZilla that provides an easy-to-use command line for both administrators and Linux users. So if you’re an administrator who needs to have a GUI, ProzGUI is your tool. If you are a purist and will use nothing but the command line, ProZilla’s your choice.
Installing and running ProZilla
For this article, I used version 1.3.6-1 of ProZilla (go here and download the file prozilla-1.3.6-1.i386.rpm) and 2.0.4 beta3-4 of ProzGUI (go here and download the file prozgui-2.0.4beta3-1.i386.rpm). The RPM package of ProZilla was installed using the following command, which created the /usr/bin/proz binary, and the /etc/prozilla.conf file.
rpm -ivh prozilla-1.3.6-1.i386.rpm
Once installed, running ProZilla is pretty straightforward. To download a file using the ProZilla default settings, simply type the following command (with the target file as the only argument):
For example, to download the latest release of Mozilla for Ximian-Gnome, run this command:
Drawbacks and workarounds for ProZilla
Download accelerators are great tools, but they come with a price. The biggest drawback is that each concurrent connection to an FTP server consumes available bandwidth. On large networks with loads of bandwidth, this isn't a problem. But on smaller LANs where one or more servers and 20 to 30 users share the same physical network or Internet connection, the bandwidth consumed by accelerating downloads may result in an overall decrease in Internet or LAN access for users. One quick way to get around the issue of bandwidth consumption is to limit the amount of bandwidth a particular download can consume with the --max-bps=n switch.
Administrators can address bandwidth concerns by configuring ProZilla through command-line switches or by editing the /etc/prozilla.conf file to establish the parameters that ProZilla will use when establishing and downloading files. Table A lists the command-line options you can use with ProZilla to overcome the bandwidth usage issue.
|-r||Resumes interrupted download|
|-for --force||Overwrites existing files (no prompting)|
|-1||Uses one connection only|
|-sor --ftpsearch||Performs FTP search for other sites|
|-nor --no-netrc||Ignores ~/.netrc file user/password taken from command line|
|--use-port||Defines specific port|
|-k=n||Establishes n number of connections to FTP server|
|--timeout=n||Connection time equals n seconds|
|-t=n, or --tries=n||Attempts to connect n times|
|--retry-delay=n||The interval between connection attempts|
Here are some typical examples of how ProZilla is used at the command line. To download a file using the ProZilla defaults, use the following command:
This example shows how to download the latest release of Mozilla using ProZilla defaults.
To download the same file in one piece, use this command.
If an FTP site has several servers, ProZilla will use the fastest server available to download a file.
To enable global settings for ProZilla, you must edit the /etc/prozilla.conf file. This file is created when ProZilla is installed and is read whenever ProZilla starts. Lines that begin with a pound symbol (#) are comments. To use commented options, remove the pound symbol (#) from the line. Table B lists the options available through the /etc/prozilla.conf file.
|debug = (on or off)||Enables ProZilla to write debug.log file (Default is off)|
|pingatonce = n||Sets how many servers to ping at once (Default is five)|
|pingtimeout = n||Sets how many seconds ProZilla will wait for server response (Default is 2*4, or 8 seconds)|
|ftpsearch = <URL>||Indicates the URL of FTP server to search|
|mirrors = n||Maximum number of mirrors (Default is 40)|
|timeout = n||Maximum no-response wait time|
|tries = n||Maximum number of connection attempts|
|retrydelay = n||Time, in seconds, between retries|
|forcemode = (on or off)||When set to on, ProZilla overwrites existing files|
|maxredirs = n||Maximum number of redirects (Default is 10)|
|netrc = (on or off)||Uses (on) or ignores (off) the ~/.netrc file|
|pasy = (on or off)||Passive mode on or off|
|maxbps = n||Maximum bandwidth ProZilla will use (Default is 0 or unlimited bandwidth)|
|mainoutputdir = <directory>||Default ProZilla download directory (Default is the current working directory)|
A command-line utility like ProZilla is great for use in server environments, and even though most Linux administrators prefer the command-line tools, the developers have created a graphical front end for ProZilla called ProzGUI. This version of ProZilla is easy to use and install, and still provides a lot of configuration options.
There are Red Hat- and Mandrake-specific packages available, but if you want to install these packages, you will also need to install the Fast Light Toolkit to fulfill dependency issues for the C++ interface (FLTK).
There are also statically linked packages of ProzGUI that should install without dependencies on any system running i386 architecture. For this article, I used prozgui-2.0.4beta3-1.i386.rpm on a Red Hat 7.1 system without having to install FLTK. The RPM package is installed with the command:
rpm -ivh prozgui-2.0.4beta-static.i386.rpm
To run ProzGUI, create a desktop launcher that points to /usr/bin/prozgui or run the prozgui command from the command line. Once the ProzGUI interface opens, you can begin the configuration process.
Need help setting up launchers in Linux? In GNOME, you can add a launcher to the Panel by right-clicking the Panel and selecting Panel | Add to Panel | Launcher. Once the configuration window opens, enter the proper information (which includes the command prozgui). In the KDE environment, you can add a launcher to the Panel by right-clicking the Panel and selecting Panel | Add | Non-KDE Application. Once you make this selection, you must navigate to /usr/bin, select prozgui, and then select OK. The next window will allow you to add command-line options and change the icon.
To start the configuration process, click File | Preferences. Within the Preferences window, you can configure a number of important settings. First, on the General tab, you should set the Number Of Threads. This setting is critical, because if you allow too many threads, you can cause the download to choke the Internet connection. The default setting is four, and I wouldn’t take it much above that unless you have a very fat pipe and there are either very few users on the line or you will be downloading at off-peak times.
Next, configure the download directory. The default directory is /etc/httpd/conf,which is also the directory for Apache configuration files. Change the download directory to something other than this, like /tmp, or create a directory of your own. Under the Proxy tab, you can configure your downloads to work with a Proxy server, should your network employ such service. The FTP Search tab allows you to configure a few key settings for using the search capability of ProzGUI. In the FTP Search tab, you will choose the specific server from a drop-down list. Then, choose the Number Of Mirrors to request from the slider (default is 40), enter the Ping Timeout (default is 8), select the Number Of Mirrors To Ping At Once from the slider (default is 5), and select the option Do FTP Search Automatically (default is off).
Give defaults a try
You may want to try downloading with the ProzGUI defaults before you change any of them. To download a file, click on File | URL and enter the URL for the file you want to download.
Once you've configured ProzGUI, click on File | New URL, and the URL entry panel will appear. Enter the URL for the file you want to download, enable FTP searching if you want that option, and click OK. ProzGUI will then make the connection(s) to the selected server and begin to download the file. ProzGUI will download the file in parts, and once the parts are downloaded, it will put the parts together to re-create the original file.
Though you could come up with plenty of uses for such a tool, for the systems/network administrator, the best use of this utility would be to download kernels, iso images, service packs, and large data files. Because of ProZilla’s ability to resume downloading, the network/system administrator wouldn’t have to worry about a drop-in connection causing data loss. With ProZilla, the download will resume as soon as the connection is reestablished.
By employing the ProZilla command-line tool and the Linux Cron tool, a very simple, automated download system can be set up where nightly data downloads could occur without intervention.
To take ProZilla on a test-drive, I downloaded the latest Linux kernel from Kernel.org. The size of the file was 29,402 Kbps. I first used the default ProZilla command, which resulted in a 52.34-second download and an average speed of 554.76 Kbps, like this.
The second attempt bumped up the number of connections made from four to eight with this command, which resulted in a 23.51-second download with an average speed of 1336.43 Kbps. That's a dramatic increase, don’t you think?