# File lib/backup/archive.rb, line 70
    def perform!
      Logger.message "#{ self.class } has started archiving:\n" +
          paths.map {|path| "  #{path}" }.join("\n")

      archive_path = File.join(Config.tmp_path, @model.trigger, 'archives')
      FileUtils.mkdir_p(archive_path)

      archive_ext = 'tar'
      pipeline = Pipeline.new

      pipeline << "#{ utility(:tar) } #{ tar_args } -cPf - " +
          "#{ paths_to_exclude } #{ paths_to_package }"

      if @model.compressor
        @model.compressor.compress_with do |command, ext|
          pipeline << command
          archive_ext << ext
        end
      end

      pipeline << "cat > '#{ File.join(archive_path, "#{name}.#{archive_ext}") }'"
      pipeline.run
      if pipeline.success?
        Logger.message "#{ self.class } Complete!"
      else
        raise Errors::Archive::PipelineError,
            "Failed to Create Backup Archive\n" +
            pipeline.error_messages
      end
    end