# File lib/automateit/shell_manager/portable.rb, line 32
  def backup(*sources)
    sources, opts = args_and_opts(*sources)

    targets = []
    for source in sources
      is_dir = File.directory?(source)

      tempster_opts = {
        :verbose => false,
        :noop => noop?,
        :delete => false,
        :dir => File.dirname(source),
        :prefix => "%s.%s" % [File.basename(source), Time.now.to_i],
        :suffix => ".bak",
        :kind => is_dir ? :directory : :file,
      }

      target = ::Tempster.tempster(tempster_opts)

      log.silence(opts[:quiet] ? Logger::WARN : log.level) do
        if is_dir
          cp_opts = {}
          cp_opts[:recursive] = true if is_dir
          cp_opts[:preserve] = :try

          source_children = _directory_contents(source)
          #puts "sc: %s" % source_children.inspect

          interpreter.cp_r(source_children, target, cp_opts)
        else
          interpreter.cp(source, target)
        end
      end

      targets << target
    end
    return sources.size == 1 ? targets.first : targets
  end