wget

 wget  is a unix utility for recursively downloading and archiving webpages, although it has some limitations that are solved by other tools like Spiderpig.

Linux
Most linux distros should come with wget installed. If not, use your applicable package manager.

Mac OS X

 * I installed wget via homebrew, and don’t recall having any problems, although homebrew can be a pain if you install lots of stuff from source.  --Waterpigs.co.uk 09:39, 26 April 2013 (PDT)

Windows
The easiest way to install wget on Windows is to use Chocolatey:

Archive a Site
Creating a full mirror of a site can be a challenge, especially if any of the site's content is loaded via Javascript. Depending on the URL structure of your site, there are some limits to wget that are solved by other tools like Spiderpig.

Assuming you have a typical HTML-only site, you can create a mirror with the following command:

wget --mirror --page-requisites --convert-links -e robots=off -P. http://example.com/

Add  if you have assets on other domains or subdomains that are required to display the page. (Be sure to include the primary domain here too)

wget will fetch the first page then recursively follow all the links it finds (including CSS, JS and images) on the same domain into a folder in the current directory called whatever the site domain is.

You can then browse through all the site's files, and most links should work, since the  option will rewrite the links it finds in the HTML to the local version. You can also configure a local web server to serve this folder at a URL.

To download everything, including images, javascripts, etc, use:

wget \ -e robots=off \ --timeout=360 \ --no-clobber \ --no-directories \ --adjust-extension \ --span-hosts \ --wait=1 \ --random-wait \ --convert-links \ --page-requisites \ --directory-prefix=[dir to save to] \ [url]

Serve the archive with nginx
server { listen 80; server_name archive.example.com; root /web/sites/example.com; # set this to wherever your archive is stored index index.html; default_type text/html; # treat files with unknown extensions as html rather than prompt the browser to download the file }