# File lib/aws/s3/s3_object.rb, line 441
      def copy_from source, options = {}

        copy_opts = { :bucket_name => bucket.name, :key => key }

        copy_opts[:copy_source] = case source
        when S3Object 
          "#{source.bucket.name}/#{source.key}"
        when ObjectVersion 
          copy_opts[:version_id] = source.version_id
          "#{source.object.bucket.name}/#{source.object.key}"
        else
          case 
          when options[:bucket]      then "#{options[:bucket].name}/#{source}"
          when options[:bucket_name] then "#{options[:bucket_name]}/#{source}"
          else "#{self.bucket.name}/#{source}"
          end
        end

        if options[:metadata]
          copy_opts[:metadata] = options[:metadata]
          copy_opts[:metadata_directive] = 'REPLACE'
        else
          copy_opts[:metadata_directive] = 'COPY'
        end

        copy_opts[:acl] = options[:acl] if options[:acl]
        copy_opts[:version_id] = options[:version_id] if options[:version_id]

        if options[:reduced_redundancy]
          copy_opts[:storage_class] = 'REDUCED_REDUNDANCY'
        else
          copy_opts[:storage_class] = 'STANDARD'
        end

        client.copy_object(copy_opts)

        nil

      end