This page shows you how to download objects from your buckets in Cloud Storage to persistent storage. You can also download objects into memory.
Required roles
In order to get the required permissions for downloading objects, ask your
administrator to grant you the Storage Object Viewer
(roles/storage.objectViewer) role on the bucket. If you plan on using the
Google Cloud console, ask your administrator to grant you the Storage Admin
(roles/storage.admin) role on the bucket instead.
These roles contain the permissions required to download objects. To see the exact permissions that are required, expand the Required permissions section:
Required permissions
- storage.buckets.list- This permission is only required for using the Google Cloud console to perform the tasks on this page.
 
- storage.objects.get
- storage.objects.list- This permission is only required for using the Google Cloud console to perform the tasks on this page.
 
You might also be able to get these permissions with other predefined roles or custom roles.
For instructions on granting roles on buckets, see Set and manage IAM policies on buckets.
Download an object from a bucket
Complete the following instructions to download an object from a bucket:
Console
- In the Google Cloud console, go to the Cloud Storage Buckets page.
 
- In the list of buckets, click the name of the bucket that contains the object you want to download. - The Bucket details page opens, with the Objects tab selected. 
- Navigate to the object, which may be located in a folder. 
- Click the Download icon associated with the object. - Your browser settings control the download location for the object. 
To learn how to get detailed error information about failed Cloud Storage operations in the Google Cloud console, see Troubleshooting.
Command line
Use the gcloud storage cp command:
gcloud storage cp gs://BUCKET_NAME/OBJECT_NAME SAVE_TO_LOCATION
Where:
- BUCKET_NAMEis the name of the bucket containing the object you are downloading. For example,- my-bucket.
- OBJECT_NAMEis the name of object you are downloading. For example,- pets/dog.png.
- SAVE_TO_LOCATIONis the local path where you are saving your object. For example,- Desktop/Images.
If successful, the response looks like the following example:
Completed files 1/1 | 164.3kiB/164.3kiB
If your download is interrupted prior to completion, run the same cp
command to resume the download from where it left off.
Client libraries
  
  
  
    
  
 
      
      
  For more information, see the
  Cloud Storage C++ API
    reference documentation.
  
     
      To authenticate to Cloud Storage, set up Application Default Credentials.
      For more information, see
      
        Set up authentication for client libraries.
      
     
      
      
  For more information, see the
  Cloud Storage C# API
    reference documentation.
  
     
      To authenticate to Cloud Storage, set up Application Default Credentials.
      For more information, see
      
        Set up authentication for client libraries.
      
     
      
      
  For more information, see the
  Cloud Storage Go API
    reference documentation.
  
     
      To authenticate to Cloud Storage, set up Application Default Credentials.
      For more information, see
      
        Set up authentication for client libraries.
      
     
      
      
  For more information, see the
  Cloud Storage Java API
    reference documentation.
  
     
      To authenticate to Cloud Storage, set up Application Default Credentials.
      For more information, see
      
        Set up authentication for client libraries.
      
     The following sample downloads an individual object: The following sample downloads multiple objects using multiple processes: The following sample downloads all objects with a common prefix using multiple processes: 
      
      
  For more information, see the
  Cloud Storage Node.js API
    reference documentation.
  
     
      To authenticate to Cloud Storage, set up Application Default Credentials.
      For more information, see
      
        Set up authentication for client libraries.
      
     The following sample downloads an individual object: The following sample downloads multiple objects using multiple processes: The following sample downloads all objects with a common prefix using multiple processes: 
      
      
  For more information, see the
  Cloud Storage PHP API
    reference documentation.
  
     
      To authenticate to Cloud Storage, set up Application Default Credentials.
      For more information, see
      
        Set up authentication for client libraries.
      
     
      
      
  For more information, see the
  Cloud Storage Python API
    reference documentation.
  
     
      To authenticate to Cloud Storage, set up Application Default Credentials.
      For more information, see
      
        Set up authentication for client libraries.
      
     The following sample downloads an individual object: The following sample downloads multiple objects using multiple processes: The following sample downloads all objects in a bucket using multiple processes: 
      
      
  For more information, see the
  Cloud Storage Ruby API
    reference documentation.
  
     
      To authenticate to Cloud Storage, set up Application Default Credentials.
      For more information, see
      
        Set up authentication for client libraries.
      
    C++
  
  
    
    C#
  
  
    
    Go
  
  
    
    Java
  
  
    
    Node.js
  
  
    
    PHP
  
  
    
    Python
  
  
    
    Ruby
  
  
    
    
REST APIs
JSON API
- Have gcloud CLI installed and initialized, which lets you generate an access token for the - Authorizationheader.
- Use - cURLto call the JSON API with a- GETObject request:- curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -o "SAVE_TO_LOCATION" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME?alt=media" - Where: - SAVE_TO_LOCATIONis the path to the location where you want to save your object. For example,- Desktop/dog.png.
- BUCKET_NAMEis the name of the bucket containing the object you are downloading. For example,- my-bucket.
- OBJECT_NAMEis the URL-encoded name of the object you are downloading. For example,- pets/dog.png, URL-encoded as- pets%2Fdog.png.
 
XML API
- Have gcloud CLI installed and initialized, which lets you generate an access token for the - Authorizationheader.
- Use - cURLto call the XML API with a- GETObject request:- curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -o "SAVE_TO_LOCATION" \ "https://storage.googleapis.com/BUCKET_NAME/OBJECT_NAME" - Where: - SAVE_TO_LOCATIONis the path to the location where you want to save your object. For example,- Desktop/dog.png.
- BUCKET_NAMEis the name of the bucket containing the object you are downloading. For example,- my-bucket.
- OBJECT_NAMEis the URL-encoded name of the object you are downloading. For example,- pets/dog.png, URL-encoded as- pets%2Fdog.png.
 
To more efficiently download all objects in a bucket or subdirectory, use the
gcloud storage cp command or a client library:
gcloud storage cp --recursive gs://BUCKET_NAME/FOLDER_NAME .
Download a portion of an object
If your download gets interrupted, you can resume where you left off by requesting only the portion of the object that's left. Complete the following instructions to download a portion of an object.
Console
The Google Cloud console does not support downloading portions of an object. Use the gcloud CLI instead.
Command line
The Google Cloud CLI automatically attempts to resume interrupted downloads,
except when performing streaming downloads. If your download gets
interrupted, a partially downloaded temporary file becomes visible in
the destination hierarchy. Run the same cp command to resume the
download where it left off.
When the download is complete, the temporary file is deleted and
replaced with the downloaded contents. Temporary files are stored in a
configurable location, which by default is in the user's home directory
under .config/gcloud/surface_data/storage/tracker_files. You can
change or view the location that temporary files are stored by running
gcloud config get storage/tracker_files_directory.
Client libraries
  
  
  
    
  
 
      
      
  For more information, see the
  Cloud Storage C++ API
    reference documentation.
  
     
      To authenticate to Cloud Storage, set up Application Default Credentials.
      For more information, see
      
        Set up authentication for client libraries.
      
     
      
      
  For more information, see the
  Cloud Storage C# API
    reference documentation.
  
     
      To authenticate to Cloud Storage, set up Application Default Credentials.
      For more information, see
      
        Set up authentication for client libraries.
      
     
      
      
  For more information, see the
  Cloud Storage Go API
    reference documentation.
  
     
      To authenticate to Cloud Storage, set up Application Default Credentials.
      For more information, see
      
        Set up authentication for client libraries.
      
     
      
      
  For more information, see the
  Cloud Storage Java API
    reference documentation.
  
     
      To authenticate to Cloud Storage, set up Application Default Credentials.
      For more information, see
      
        Set up authentication for client libraries.
      
     
      
      
  For more information, see the
  Cloud Storage Node.js API
    reference documentation.
  
     
      To authenticate to Cloud Storage, set up Application Default Credentials.
      For more information, see
      
        Set up authentication for client libraries.
      
     
      
      
  For more information, see the
  Cloud Storage PHP API
    reference documentation.
  
     
      To authenticate to Cloud Storage, set up Application Default Credentials.
      For more information, see
      
        Set up authentication for client libraries.
      
     
      
      
  For more information, see the
  Cloud Storage Python API
    reference documentation.
  
     
      To authenticate to Cloud Storage, set up Application Default Credentials.
      For more information, see
      
        Set up authentication for client libraries.
      
     
      
      
  For more information, see the
  Cloud Storage Ruby API
    reference documentation.
  
     
      To authenticate to Cloud Storage, set up Application Default Credentials.
      For more information, see
      
        Set up authentication for client libraries.
      
    C++
  
  
    
    C#
  
  
    
    Go
  
  
    
    Java
  
  
    
    Node.js
  
  
    
    PHP
  
  
    
    Python
  
  
    
    Ruby
  
  
    
    
REST APIs
JSON API
Use the Range header in your request to download a portion of
an object.
- Have gcloud CLI installed and initialized, which lets you generate an access token for the - Authorizationheader.
- Use - cURLto call the JSON API with a- GETObject request:- curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Range: bytes=FIRST_BYTE-LAST_BYTE" \ -o "SAVE_TO_LOCATION" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME?alt=media" - Where: - FIRST_BYTEis the first byte in the range of bytes you want to download. For example,- 1000.
- LAST_BYTEis the last byte in the range of bytes you want to download. For example,- 1999.
- SAVE_TO_LOCATIONis the path to the location where you want to save your object. For example,- Desktop/dog.png.
- BUCKET_NAMEis the name of the bucket containing the object you are downloading. For example,- my-bucket.
- OBJECT_NAMEis the URL-encoded name of the object you are downloading. For example,- pets/dog.png, URL-encoded as- pets%2Fdog.png.
 
XML API
Use the Range header in your request to download a portion of
an object.
- Have gcloud CLI installed and initialized, which lets you generate an access token for the - Authorizationheader.
- Use - cURLto call the XML API with a- GETObject request:- curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Range: bytes=FIRST_BYTE-LAST_BYTE" \ -o "SAVE_TO_LOCATION" \ "https://storage.googleapis.com/BUCKET_NAME/OBJECT_NAME" - Where: - FIRST_BYTEis the first byte in the range of bytes you want to download. For example,- 1000.
- LAST_BYTEis the last byte in the range of bytes you want to download. For example,- 1999.
- SAVE_TO_LOCATIONis the path to the location where you want to save your object. For example,- $HOME/Desktop/dog.png.
- BUCKET_NAMEis the name of the bucket containing the object you are downloading. For example,- my-bucket.
- OBJECT_NAMEis the URL-encoded name of the object you are downloading. For example,- pets/dog.png, URL-encoded as- pets%2Fdog.png.
 
What's next
- Read the conceptual overview for uploading and downloading, including advanced download strategies.
- Transfer data from cloud providers or other online sources, such as URL lists.
- Transfer objects to your Compute Engine instance.
- Learn how you can bill Cloud Storage access charges to requesters.
- Learn how Cloud Storage can serve gzipped files in an uncompressed state.
Try it for yourself
If you're new to Google Cloud, create an account to evaluate how Cloud Storage performs in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
Try Cloud Storage free