How to copy files from colab or cloud storage to google drive?

11,362

Solution 1

gsutil cp -r does a recursive copy from one or more source files/dirs to some destination directory. E.g. to copy one or more directories into another directory, you'd do:

gsutil cp -r src_folder1/ src_folder2/ dst_folder/

So, let's explain what all is happening in your example above:

  • You first mount the contents of your Google Drive, using some file system adapter magic under the hood via drive.mount(), under the local directory at /content/drive.
  • You then run a gsutil command. gsutil sees the argument "drive" as another source file (or directory) that it should copy to the directory "/content/drive/My Drive/". If the file/dir "drive" doesn't exist, gsutil skips it and complains that it didn't exist (but gsutil will still copy the other source arguments to the destination, due to the -m flag which causes it to continue (where possible) upon encountering a problem).

So, if you wanted to copy an object named "my-object-name" from your bucket to the root of your Google Drive, the command would look something like this:

!gsutil -q -m cp gs://my-bucket-name/my-object-name /content/drive/My\ Drive/

or, to copy the object and name it something different:

!gsutil -q -m cp gs://my-bucket-name/my-object-name /content/drive/My\ Drive/some-new-name

To read more about gsutil, its top-level flags, and its cp command, check out the web docs:

Solution 2

!cp "colab-path" -r "drive-path"
Share:
11,362
user11366694
Author by

user11366694

Updated on June 28, 2022

Comments

  • user11366694
    user11366694 almost 2 years

    I read some code on this problem, but i cannot make sense of the code. Could anybody help explaining the code to me?

    # mount your drive
    from google.colab import drive
    drive.mount('/content/drive')
    !gsutil -q -m cp -r gs://my-bucket-name drive /content/drive/My\ Drive/
    

    I want to transfer files from colab or google cloud storage to gdrive. What 'drive /content/drive/My\ Drive/' stands for in the code? how should I parse this piece of code. If it works for directory, how should I modify this piece of code to make it work for a single file?

  • user11366694
    user11366694 almost 5 years
    Thank you so much for such a detailed explanation!
  • Syed Ali
    Syed Ali over 3 years
    why -r ? I tried without -r and it works fine
  • Riley K
    Riley K over 3 years
    Recursive copy for directory instead of single file.