:mod:`airflow.contrib.operators.gcs_to_gcs`
===========================================

.. py:module:: airflow.contrib.operators.gcs_to_gcs


Module Contents
---------------

.. data:: WILDCARD
   :annotation: = *

   

.. py:class:: GoogleCloudStorageToGoogleCloudStorageOperator(source_bucket, source_object, destination_bucket=None, destination_object=None, move_object=False, google_cloud_storage_conn_id='google_cloud_default', delegate_to=None, last_modified_time=None, *args, **kwargs)

   Bases: :class:`airflow.models.BaseOperator`

   Copies objects from a bucket to another, with renaming if requested.

   :param source_bucket: The source Google cloud storage bucket where the
        object is. (templated)
   :type source_bucket: str
   :param source_object: The source name of the object to copy in the Google cloud
       storage bucket. (templated)
       You can use only one wildcard for objects (filenames) within your
       bucket. The wildcard can appear inside the object name or at the
       end of the object name. Appending a wildcard to the bucket name is
       unsupported.
   :type source_object: str
   :param destination_bucket: The destination Google cloud storage bucket
       where the object should be. If the destination_bucket is None, it defaults
       to source_bucket. (templated)
   :type destination_bucket: str
   :param destination_object: The destination name of the object in the
       destination Google cloud storage bucket. (templated)
       If a wildcard is supplied in the source_object argument, this is the
       prefix that will be prepended to the final destination objects' paths.
       Note that the source path's part before the wildcard will be removed;
       if it needs to be retained it should be appended to destination_object.
       For example, with prefix ``foo/*`` and destination_object ``blah/``, the
       file ``foo/baz`` will be copied to ``blah/baz``; to retain the prefix write
       the destination_object as e.g. ``blah/foo``, in which case the copied file
       will be named ``blah/foo/baz``.
   :type destination_object: str
   :param move_object: When move object is True, the object is moved instead
       of copied to the new location. This is the equivalent of a mv command
       as opposed to a cp command.
   :type move_object: bool
   :param google_cloud_storage_conn_id: The connection ID to use when
       connecting to Google cloud storage.
   :type google_cloud_storage_conn_id: str
   :param delegate_to: The account to impersonate, if any.
       For this to work, the service account making the request must have
       domain-wide delegation enabled.
   :type delegate_to: str
   :param last_modified_time: When specified, the objects will be copied or moved,
       only if they were modified after last_modified_time.
       If tzinfo has not been set, UTC will be assumed.
   :type last_modified_time: datetime.datetime

   :Example:

   The following Operator would copy a single file named
   ``sales/sales-2017/january.avro`` in the ``data`` bucket to the file named
   ``copied_sales/2017/january-backup.avro`` in the ``data_backup`` bucket ::

       copy_single_file = GoogleCloudStorageToGoogleCloudStorageOperator(
           task_id='copy_single_file',
           source_bucket='data',
           source_object='sales/sales-2017/january.avro',
           destination_bucket='data_backup',
           destination_object='copied_sales/2017/january-backup.avro',
           google_cloud_storage_conn_id=google_cloud_conn_id
       )

   The following Operator would copy all the Avro files from ``sales/sales-2017``
   folder (i.e. with names starting with that prefix) in ``data`` bucket to the
   ``copied_sales/2017`` folder in the ``data_backup`` bucket. ::

       copy_files = GoogleCloudStorageToGoogleCloudStorageOperator(
           task_id='copy_files',
           source_bucket='data',
           source_object='sales/sales-2017/*.avro',
           destination_bucket='data_backup',
           destination_object='copied_sales/2017/',
           google_cloud_storage_conn_id=google_cloud_conn_id
       )

   The following Operator would move all the Avro files from ``sales/sales-2017``
   folder (i.e. with names starting with that prefix) in ``data`` bucket to the
   same folder in the ``data_backup`` bucket, deleting the original files in the
   process. ::

       move_files = GoogleCloudStorageToGoogleCloudStorageOperator(
           task_id='move_files',
           source_bucket='data',
           source_object='sales/sales-2017/*.avro',
           destination_bucket='data_backup',
           move_object=True,
           google_cloud_storage_conn_id=google_cloud_conn_id
       )

   .. attribute:: template_fields
      :annotation: = ['source_bucket', 'source_object', 'destination_bucket', 'destination_object']

      

   .. attribute:: ui_color
      :annotation: = #f0eee4

      

   
   .. method:: execute(self, context)



   
   .. method:: _copy_single_object(self, hook, source_object, destination_object)




