def compress(files, verbose=false)
      if files.any? { |f| !File.file?(f) }
        raise ArgumentError, "Files supplied must all be real, actual files -- not directories or symlinks."
      end

      configure_archive
      compress_files(files, verbose)
      free_archive
    end
def compress(files, verbose=false)
      if files.any? { |f| !File.file?(f) }
        raise ArgumentError, "Files supplied must all be real, actual files -- not directories or symlinks."
      end

      configure_archive
      compress_files(files, verbose)
      free_archive
    end
Create a new Compress object. Takes a filename as string, and args as
 hash.

 args is a hash that contains two values, :type and :compression.

 * :type may be :tar or :zip
 * :compression may be :gzip, :bzip2, or nil (no compression)

 If the type :zip is selected, no compression will be used. Additionally,
 files in the .zip will all be stored as binary files.

 The default set of arguments is

     { :type => :tar, :compression => :gzip }


 Run the compression. Files are an array of filenames. Optional flag for
 verbosity; if true, will print each file it adds to the archive to
 stdout.

 Files must be real files. No symlinks, directories, unix sockets,
 character devices, etc. This method will raise ArgumentError if you
 provide any.