ℹ️ Skipped - page is already crawled
| Filter | Status | Condition | Details |
|---|---|---|---|
| HTTP status | PASS | download_http_code = 200 | HTTP 200 |
| Age cutoff | PASS | download_stamp > now() - 6 MONTH | 0 months ago |
| History drop | PASS | isNull(history_drop_reason) | No drop reason |
| Spam/ban | PASS | fh_dont_index != 1 AND ml_spam_score = 0 | ml_spam_score=0 |
| Canonical | PASS | meta_canonical IS NULL OR = '' OR = src_unparsed | Not set |
| Property | Value |
|---|---|
| URL | https://rclone.org/drive/ |
| Last Crawled | 2026-04-06 21:49:54 (11 hours ago) |
| First Indexed | 2017-03-30 10:36:24 (9 years ago) |
| HTTP Status Code | 200 |
| Meta Title | Google drive |
| Meta Description | Rclone docs for Google drive |
| Meta Canonical | null |
| Boilerpipe Text | added in v0.91
Tier 1
Paths are specified as
drive:path
Drive paths may be as deep as required, e.g.
drive:directory/subdirectory
.
Configuration
The initial setup for drive involves getting a token from Google drive
which you need to do in your browser.
rclone config
walks you
through it.
Here is an example of how to make a remote called
remote
. First run:
rclone config
This will guide you through an interactive setup process:
No remotes found, make a new one?
n) New remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
n/r/c/s/q> n
name> remote
Type of storage to configure.
Choose a number from below, or type in your own value
[snip]
XX / Google Drive
\ "drive"
[snip]
Storage> drive
Google Application Client Id - leave blank normally.
client_id>
Google Application Client Secret - leave blank normally.
client_secret>
Scope that rclone should use when requesting access from drive.
Choose a number from below, or type in your own value
1 / Full access all files, excluding Application Data Folder.
\ "drive"
2 / Read-only access to file metadata and file contents.
\ "drive.readonly"
/ Access to files created by rclone only.
3 | These are visible in the drive website.
| File authorization is revoked when the user deauthorizes the app.
\ "drive.file"
/ Allows read and write access to the Application Data folder.
4 | This is not visible in the drive website.
\ "drive.appfolder"
/ Allows read-only access to file metadata but
5 | does not allow any access to read or download file content.
\ "drive.metadata.readonly"
scope> 1
Service Account Credentials JSON file path - needed only if you want use SA instead of interactive login.
service_account_file>
Remote config
Use web browser to automatically authenticate rclone with remote?
* Say Y if the machine running rclone has a web browser you can use
* Say N if running rclone on a (remote) machine without web browser access
If not sure try Y. If Y failed, try N.
y) Yes
n) No
y/n> y
If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth
Log in and authorize rclone for access
Waiting for code...
Got code
Configure this as a Shared Drive (Team Drive)?
y) Yes
n) No
y/n> n
Configuration complete.
Options:
type: drive
- client_id:
- client_secret:
- scope: drive
- root_folder_id:
- service_account_file:
- token: {"access_token":"XXX","token_type":"Bearer","refresh_token":"XXX","expiry":"2014-03-16T13:57:58.955387075Z"}
Keep this "remote" remote?
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y
See the
remote setup docs
for how to set it up on a
machine without an internet-connected web browser available.
Note that rclone runs a webserver on your local machine to collect the
token as returned from Google if using web browser to automatically
authenticate. This only
runs from the moment it opens your browser to the moment you get back
the verification code. This is on
http://127.0.0.1:53682/
and it
may require you to unblock it temporarily if you are running a host
firewall, or use manual mode.
You can then use it like this,
List directories in top level of your drive
rclone lsd remote:
List all the files in your drive
rclone ls remote:
To copy a local directory to a drive directory called backup
rclone copy /home/source remote:backup
Scopes
Rclone allows you to select which scope you would like for rclone to
use. This changes what type of token is granted to rclone.
The
scopes are defined
here
.
A comma-separated list is allowed e.g.
drive.readonly,drive.file
.
The scope are
drive
This is the default scope and allows full access to all files, except
for the Application Data Folder (see below).
Choose this one if you aren't sure.
drive.readonly
This allows read only access to all files. Files may be listed and
downloaded but not uploaded, renamed or deleted.
drive.file
With this scope rclone can read/view/modify only those files and
folders it creates.
So if you uploaded files to drive via the web interface (or any other
means) they will not be visible to rclone.
This can be useful if you are using rclone to backup data and you want
to be sure confidential data on your drive is not visible to rclone.
Files created with this scope are visible in the web interface.
drive.appfolder
This gives rclone its own private area to store files. Rclone will
not be able to see any other files on your drive and you won't be able
to see rclone's files from the web interface either.
drive.metadata.readonly
This allows read only access to file names only. It does not allow
rclone to download or upload data, or rename or delete files or
directories.
Root folder ID
This option has been moved to the advanced section. You can set the
root_folder_id
for rclone. This is the directory (identified by its
Folder ID
) that rclone considers to be the root of your drive.
Normally you will leave this blank and rclone will determine the
correct root to use itself.
However you can set this to restrict rclone to a specific folder
hierarchy or to access data within the "Computers" tab on the drive
web interface (where files from Google's Backup and Sync desktop
program go).
In order to do this you will have to find the
Folder ID
of the
directory you wish rclone to display. This will be the last segment
of the URL when you open the relevant folder in the drive web
interface.
So if the folder you want rclone to use has a URL which looks like
https://drive.google.com/drive/folders/1XyfxxxxxxxxxxxxxxxxxxxxxxxxxKHCh
in the browser, then you use
1XyfxxxxxxxxxxxxxxxxxxxxxxxxxKHCh
as
the
root_folder_id
in the config.
NB
folders under the "Computers" tab seem to be read only (drive
gives a 500 error) when using rclone.
There doesn't appear to be an API to discover the folder IDs of the
"Computers" tab - please contact us if you know otherwise!
Note also that rclone can't access any data under the "Backups" tab on
the google drive web interface yet.
Service Account support
You can set up rclone with Google Drive in an unattended mode,
i.e. not tied to a specific end-user Google account. This is useful
when you want to synchronise files onto machines that don't have
actively logged-in users, for example build machines.
To use a Service Account instead of OAuth2 token flow, enter the path
to your Service Account credentials at the
service_account_file
prompt during
rclone config
and rclone won't use the browser based
authentication flow. If you'd rather stuff the contents of the
credentials file into the rclone config file, you can set
service_account_credentials
with the actual contents of the file
instead, or set the equivalent environment variable.
Use case - Google Workspace account and individual Drive
Let's say that you are the administrator of a Google Workspace. The
goal is to read or write data on an individual's Drive account, who IS
a member of the domain. We'll call the domain <example.com>, and the
user
foo@example.com
.
There's a few steps we need to go through to accomplish this:
1. Create a service account for example.com
To create a service account and obtain its credentials, go to the
Google Developer Console
.
You must have a project - create one if you don't and make sure you are
on the selected project.
Then go to "IAM & admin" -> "Service Accounts".
Use the "Create Service Account" button. Fill in "Service account name"
and "Service account ID" with something that identifies your client.
Select "Create And Continue". Step 2 and 3 are optional.
Click on the newly created service account
Click "Keys" and then "Add Key" and then "Create new key"
Choose type "JSON" and click create
This will download a small JSON file that rclone will use for authentication.
If you ever need to remove access, press the "Delete service
account key" button.
2. Allowing API access to example.com Google Drive
Go to example.com's
Workspace Admin Console
Go into "Security" (or use the search bar)
Select "Access and data control" and then "API controls"
Click "Manage domain-wide delegation"
Click "Add new"
In the "Client ID" field enter the service account's
"Client ID" - this can be found in the Developer Console under
"IAM & Admin" -> "Service Accounts", then "View Client ID" for
the newly created service account.
It is a ~21 character numerical string.
In the next field, "OAuth Scopes", enter
https://www.googleapis.com/auth/drive
to grant read/write access to Google Drive specifically.
You can also use
https://www.googleapis.com/auth/drive.readonly
for read
only access with
--drive-scope=drive.readonly
.
Click "Authorise"
3. Configure rclone, assuming a new install
rclone config
n/s/q> n # New
name>gdrive # Gdrive is an example name
Storage> # Type drive
client_id> # Can be left blank
client_secret> # Can be left blank
scope> # Select the scope use used in step 2
root_folder_id> # Can be left blank
service_account_file> /home/foo/myJSONfile.json # Path to the JSON file you downloaded in step 1.
y/n> # Auto config, n
4. Verify that it's working
rclone -v --drive-impersonate foo@example.com lsf gdrive:backup
The arguments do:
-v
- verbose logging
--drive-impersonate foo@example.com
- this is what does
the magic, pretending to be user foo.
lsf
- list files in a parsing friendly way
gdrive:backup
- use the remote called gdrive, work in
the folder named backup.
Note: in case you configured a specific root folder on gdrive and rclone is
unable to access the contents of that folder when using
--drive-impersonate
,
do this instead:
in the gdrive web interface, share your root folder with the user/email of the
new Service Account you created/selected at step 1
use rclone without specifying the
--drive-impersonate
option, like this:
rclone -v lsf gdrive:backup
Shared drives (team drives)
If you want to configure the remote to point to a Google Shared Drive
(previously known as Team Drives) then answer
y
to the question
Configure this as a Shared Drive (Team Drive)?
.
This will fetch the list of Shared Drives from google and allow you to
configure which one you want to use. You can also type in a Shared
Drive ID if you prefer.
For example:
Configure this as a Shared Drive (Team Drive)?
y) Yes
n) No
y/n> y
Fetching Shared Drive list...
Choose a number from below, or type in your own value
1 / Rclone Test
\ "xxxxxxxxxxxxxxxxxxxx"
2 / Rclone Test 2
\ "yyyyyyyyyyyyyyyyyyyy"
3 / Rclone Test 3
\ "zzzzzzzzzzzzzzzzzzzz"
Enter a Shared Drive ID> 1
Configuration complete.
Options:
- type: drive
- client_id:
- client_secret:
- token: {"AccessToken":"xxxx.x.xxxxx_xxxxxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","RefreshToken":"1/xxxxxxxxxxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxx","Expiry":"2014-03-16T13:57:58.955387075Z","Extra":null}
- team_drive: xxxxxxxxxxxxxxxxxxxx
Keep this "remote" remote?
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y
--fast-list
This remote supports
--fast-list
which allows you to use fewer
transactions in exchange for more memory. See the
rclone
docs
for more details.
It does this by combining multiple
list
calls into a single API request.
This works by combining many
'%s' in parents
filters into one expression.
To list the contents of directories a, b and c, the following requests will be
send by the regular
List
function:
trashed=false and 'a' in parents
trashed=false and 'b' in parents
trashed=false and 'c' in parents
These can now be combined into a single request:
trashed=false and ('a' in parents or 'b' in parents or 'c' in parents)
The implementation of
ListR
will put up to 50
parents
filters into one request.
It will use the
--checkers
value to specify the number of requests to run in parallel.
In tests, these batch requests were up to 20x faster than the regular method.
Running the following command against different sized folders gives:
rclone lsjson -vv -R --checkers=6 gdrive:folder
small folder (220 directories, 700 files):
without
--fast-list
: 38s
with
--fast-list
: 10s
large folder (10600 directories, 39000 files):
without
--fast-list
: 22:05 min
with
--fast-list
: 58s
Modification times and hashes
Google drive stores modification times accurate to 1 ms.
Hash algorithms MD5, SHA1 and SHA256 are supported. Note, however,
that a small fraction of files uploaded may not have SHA1 or SHA256
hashes especially if they were uploaded before 2018.
Restricted filename characters
Only Invalid UTF-8 bytes will be
replaced
,
as they can't be used in JSON strings.
In contrast to other backends,
/
can also be used in names and
.
or
..
are valid names.
Revisions
Google drive stores revisions of files. When you upload a change to
an existing file to google drive using rclone it will create a new
revision of that file.
Revisions follow the standard google policy which at time of writing
was
They are deleted after 30 days or 100 revisions (whatever comes first).
They do not count towards a user storage quota.
Deleting files
By default rclone will send all files to the trash when deleting
files. If deleting them permanently is required then use the
--drive-use-trash=false
flag, or set the equivalent environment
variable.
Shortcuts
In March 2020 Google introduced a new feature in Google Drive called
drive shortcuts
(
API
). These
will (by September 2020)
replace the ability for files or folders to
be in multiple folders at once
.
Shortcuts are files that link to other files on Google Drive somewhat
like a symlink in unix, except they point to the underlying file data
(e.g. the inode in unix terms) so they don't break if the source is
renamed or moved about.
By default rclone treats these as follows.
For shortcuts pointing to files:
When listing a file shortcut appears as the destination file.
When downloading the contents of the destination file is downloaded.
When updating shortcut file with a non shortcut file, the shortcut is removed
then a new file is uploaded in place of the shortcut.
When server-side moving (renaming) the shortcut is renamed, not the destination
file.
When server-side copying the shortcut is copied, not the contents of the shortcut.
(unless
--drive-copy-shortcut-content
is in use in which case the contents of
the shortcut gets copied).
When deleting the shortcut is deleted not the linked file.
When setting the modification time, the modification time of the linked file
will be set.
For shortcuts pointing to folders:
When listing the shortcut appears as a folder and that folder will contain the
contents of the linked folder appear (including any sub folders)
When downloading the contents of the linked folder and sub contents are downloaded
When uploading to a shortcut folder the file will be placed in the linked folder
When server-side moving (renaming) the shortcut is renamed, not the destination
folder
When server-side copying the contents of the linked folder is copied, not the shortcut.
When deleting with
rclone rmdir
or
rclone purge
the shortcut is deleted not
the linked folder.
NB
When deleting with
rclone remove
or
rclone mount
the contents of the
linked folder will be deleted.
The
rclone backend
command can be
used to create shortcuts.
Shortcuts can be completely ignored with the
--drive-skip-shortcuts
flag
or the corresponding
skip_shortcuts
configuration setting.
If you have shortcuts that lead to an infinite recursion in your drive (e.g. a
shortcut pointing to a parent folder),
skip_shortcuts
might be mandatory to
be able to copy the drive.
Emptying trash
If you wish to empty your trash you can use the
rclone cleanup remote:
command which will permanently delete all your trashed files. This command
does not take any path arguments.
Note that Google Drive takes some time (minutes to days) to empty the
trash even though the command returns within a few seconds. No output
is echoed, so there will be no confirmation even using -v or -vv.
Quota information
To view your current quota you can use the
rclone about remote:
command which will display your usage limit (quota), the usage in Google
Drive, the size of all files in the Trash and the space used by other
Google services such as Gmail. This command does not take any path
arguments.
Import/Export of google documents
Google documents can be exported from and uploaded to Google Drive.
When rclone downloads a Google doc it chooses a format to download
depending upon the
--drive-export-formats
setting.
By default the export formats are
docx,xlsx,pptx,svg
which are a
sensible default for an editable document.
When choosing a format, rclone runs down the list provided in order
and chooses the first file format the doc can be exported as from the
list. If the file can't be exported to a format on the formats list,
then rclone will choose a format from the default list.
If you prefer an archive copy then you might use
--drive-export-formats pdf
, or if you prefer openoffice/libreoffice formats you might use
--drive-export-formats ods,odt,odp
.
Note that rclone adds the extension to the google doc, so if it is
called
My Spreadsheet
on google docs, it will be exported as
My Spreadsheet.xlsx
or
My Spreadsheet.pdf
etc.
When importing files into Google Drive, rclone will convert all
files with an extension in
--drive-import-formats
to their
associated document type.
rclone will not convert any files by default, since the conversion
is lossy process.
The conversion must result in a file with the same extension when
the
--drive-export-formats
rules are applied to the uploaded document.
Here are some examples for allowed and prohibited conversions.
export-formats
import-formats
Upload Ext
Document Ext
Allowed
odt
odt
odt
odt
Yes
odt
docx,odt
odt
odt
Yes
docx
docx
docx
Yes
odt
odt
docx
No
odt,docx
docx,odt
docx
odt
No
docx,odt
docx,odt
docx
docx
Yes
docx,odt
docx,odt
odt
docx
No
This limitation can be disabled by specifying
--drive-allow-import-name-change
.
When using this flag, rclone can convert multiple files types resulting
in the same document type at once, e.g. with
--drive-import-formats docx,odt,txt
,
all files having these extension would result in a document represented as a
docx file.
This brings the additional risk of overwriting a document, if multiple files
have the same stem. Many rclone operations will not handle this name change
in any way. They assume an equal name when copying files and might copy the
file again or delete them when the name changes.
Here are the possible export extensions with their corresponding mime types.
Most of these can also be used for importing, but there more that are not
listed here. Some of these additional ones might only be available when
the operating system provides the correct MIME type entries.
This list can be changed by Google Drive at any time and might not
represent the currently available conversions.
Extension
Mime Type
Description
bmp
image/bmp
Windows Bitmap format
csv
text/csv
Standard CSV format for Spreadsheets
doc
application/msword
Classic Word file
docx
application/vnd.openxmlformats-officedocument.wordprocessingml.document
Microsoft Office Document
epub
application/epub+zip
E-book format
html
text/html
An HTML Document
jpg
image/jpeg
A JPEG Image File
json
application/vnd.google-apps.script+json
JSON Text Format for Google Apps scripts
md
text/markdown
Markdown Text Format
odp
application/vnd.oasis.opendocument.presentation
Openoffice Presentation
ods
application/vnd.oasis.opendocument.spreadsheet
Openoffice Spreadsheet
ods
application/x-vnd.oasis.opendocument.spreadsheet
Openoffice Spreadsheet
odt
application/vnd.oasis.opendocument.text
Openoffice Document
pdf
application/pdf
Adobe PDF Format
pjpeg
image/pjpeg
Progressive JPEG Image
png
image/png
PNG Image Format
pptx
application/vnd.openxmlformats-officedocument.presentationml.presentation
Microsoft Office Powerpoint
rtf
application/rtf
Rich Text Format
svg
image/svg+xml
Scalable Vector Graphics Format
tsv
text/tab-separated-values
Standard TSV format for spreadsheets
txt
text/plain
Plain Text
wmf
application/x-msmetafile
Windows Meta File
xls
application/vnd.ms-excel
Classic Excel file
xlsx
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Microsoft Office Spreadsheet
zip
application/zip
A ZIP file of HTML, Images CSS
Google documents can also be exported as link files. These files will
open a browser window for the Google Docs website of that document
when opened. The link file extension has to be specified as a
--drive-export-formats
parameter. They will match all available
Google Documents.
Extension
Description
OS Support
desktop
freedesktop.org specified desktop entry
Linux
link.html
An HTML Document with a redirect
All
url
INI style link file
macOS, Windows
webloc
macOS specific XML format
macOS
Standard options
Here are the Standard options specific to drive (Google Drive).
--drive-client-id
Google Application Client Id
Setting your own is recommended.
See
https://rclone.org/drive/#making-your-own-client-id
for how to create your own.
If you leave this blank, it will use an internal key which is low performance.
Properties:
Config: client_id
Env Var: RCLONE_DRIVE_CLIENT_ID
Type: string
Required: false
--drive-client-secret
OAuth Client Secret.
Leave blank normally.
Properties:
Config: client_secret
Env Var: RCLONE_DRIVE_CLIENT_SECRET
Type: string
Required: false
--drive-scope
Comma separated list of scopes that rclone should use when requesting access from drive.
Properties:
Config: scope
Env Var: RCLONE_DRIVE_SCOPE
Type: string
Required: false
Examples:
"drive"
Full access all files, excluding Application Data Folder.
"drive.readonly"
Read-only access to file metadata and file contents.
"drive.file"
Access to files created by rclone only.
These are visible in the drive website.
File authorization is revoked when the user deauthorizes the app.
"drive.appfolder"
Allows read and write access to the Application Data folder.
This is not visible in the drive website.
"drive.metadata.readonly"
Allows read-only access to file metadata but
does not allow any access to read or download file content.
--drive-service-account-file
Service Account Credentials JSON file path.
Leave blank normally.
Needed only if you want use SA instead of interactive login.
Leading
~
will be expanded in the file name as will environment variables such as
${RCLONE_CONFIG_DIR}
.
Properties:
Config: service_account_file
Env Var: RCLONE_DRIVE_SERVICE_ACCOUNT_FILE
Type: string
Required: false
--drive-alternate-export
Deprecated: No longer needed.
Properties:
Config: alternate_export
Env Var: RCLONE_DRIVE_ALTERNATE_EXPORT
Type: bool
Default: false
Advanced options
Here are the Advanced options specific to drive (Google Drive).
--drive-token
OAuth Access Token as a JSON blob.
Properties:
Config: token
Env Var: RCLONE_DRIVE_TOKEN
Type: string
Required: false
--drive-auth-url
Auth server URL.
Leave blank to use the provider defaults.
Properties:
Config: auth_url
Env Var: RCLONE_DRIVE_AUTH_URL
Type: string
Required: false
--drive-token-url
Token server url.
Leave blank to use the provider defaults.
Properties:
Config: token_url
Env Var: RCLONE_DRIVE_TOKEN_URL
Type: string
Required: false
--drive-client-credentials
Use client credentials OAuth flow.
This will use the OAUTH2 client Credentials Flow as described in RFC 6749.
Note that this option is NOT supported by all backends.
Properties:
Config: client_credentials
Env Var: RCLONE_DRIVE_CLIENT_CREDENTIALS
Type: bool
Default: false
--drive-root-folder-id
ID of the root folder.
Leave blank normally.
Fill in to access "Computers" folders (see docs), or for rclone to use
a non root folder as its starting point.
Properties:
Config: root_folder_id
Env Var: RCLONE_DRIVE_ROOT_FOLDER_ID
Type: string
Required: false
--drive-service-account-credentials
Service Account Credentials JSON blob.
Leave blank normally.
Needed only if you want use SA instead of interactive login.
Properties:
Config: service_account_credentials
Env Var: RCLONE_DRIVE_SERVICE_ACCOUNT_CREDENTIALS
Type: string
Required: false
--drive-team-drive
ID of the Shared Drive (Team Drive).
Properties:
Config: team_drive
Env Var: RCLONE_DRIVE_TEAM_DRIVE
Type: string
Required: false
--drive-auth-owner-only
Only consider files owned by the authenticated user.
Properties:
Config: auth_owner_only
Env Var: RCLONE_DRIVE_AUTH_OWNER_ONLY
Type: bool
Default: false
--drive-use-trash
Send files to the trash instead of deleting permanently.
Defaults to true, namely sending files to the trash.
Use
--drive-use-trash=false
to delete files permanently instead.
Properties:
Config: use_trash
Env Var: RCLONE_DRIVE_USE_TRASH
Type: bool
Default: true
--drive-copy-shortcut-content
Server side copy contents of shortcuts instead of the shortcut.
When doing server side copies, normally rclone will copy shortcuts as
shortcuts.
If this flag is used then rclone will copy the contents of shortcuts
rather than shortcuts themselves when doing server side copies.
Properties:
Config: copy_shortcut_content
Env Var: RCLONE_DRIVE_COPY_SHORTCUT_CONTENT
Type: bool
Default: false
--drive-skip-gdocs
Skip google documents in all listings.
If given, gdocs practically become invisible to rclone.
Properties:
Config: skip_gdocs
Env Var: RCLONE_DRIVE_SKIP_GDOCS
Type: bool
Default: false
--drive-show-all-gdocs
Show all Google Docs including non-exportable ones in listings.
If you try a server side copy on a Google Form without this flag, you
will get this error:
No export formats found for "application/vnd.google-apps.form"
However adding this flag will allow the form to be server side copied.
Note that rclone doesn't add extensions to the Google Docs file names
in this mode.
Do
not
use this flag when trying to download Google Docs - rclone
will fail to download them.
Properties:
Config: show_all_gdocs
Env Var: RCLONE_DRIVE_SHOW_ALL_GDOCS
Type: bool
Default: false
--drive-skip-checksum-gphotos
Skip checksums on Google photos and videos only.
Use this if you get checksum errors when transferring Google photos or
videos.
Setting this flag will cause Google photos and videos to return a
blank checksums.
Google photos are identified by being in the "photos" space.
Corrupted checksums are caused by Google modifying the image/video but
not updating the checksum.
Properties:
Config: skip_checksum_gphotos
Env Var: RCLONE_DRIVE_SKIP_CHECKSUM_GPHOTOS
Type: bool
Default: false
--drive-shared-with-me
Only show files that are shared with me.
Instructs rclone to operate on your "Shared with me" folder (where
Google Drive lets you access the files and folders others have shared
with you).
This works both with the "list" (lsd, lsl, etc.) and the "copy"
commands (copy, sync, etc.), and with all other commands too.
Properties:
Config: shared_with_me
Env Var: RCLONE_DRIVE_SHARED_WITH_ME
Type: bool
Default: false
--drive-trashed-only
Only show files that are in the trash.
This will show trashed files in their original directory structure.
Properties:
Config: trashed_only
Env Var: RCLONE_DRIVE_TRASHED_ONLY
Type: bool
Default: false
--drive-starred-only
Only show files that are starred.
Properties:
Config: starred_only
Env Var: RCLONE_DRIVE_STARRED_ONLY
Type: bool
Default: false
--drive-formats
Deprecated: See export_formats.
Properties:
Config: formats
Env Var: RCLONE_DRIVE_FORMATS
Type: string
Required: false
--drive-export-formats
Comma separated list of preferred formats for downloading Google docs.
Properties:
Config: export_formats
Env Var: RCLONE_DRIVE_EXPORT_FORMATS
Type: string
Default: "docx,xlsx,pptx,svg"
--drive-import-formats
Comma separated list of preferred formats for uploading Google docs.
Properties:
Config: import_formats
Env Var: RCLONE_DRIVE_IMPORT_FORMATS
Type: string
Required: false
--drive-allow-import-name-change
Allow the filetype to change when uploading Google docs.
E.g. file.doc to file.docx. This will confuse sync and reupload every time.
Properties:
Config: allow_import_name_change
Env Var: RCLONE_DRIVE_ALLOW_IMPORT_NAME_CHANGE
Type: bool
Default: false
--drive-use-created-date
Use file created date instead of modified date.
Useful when downloading data and you want the creation date used in
place of the last modified date.
WARNING
: This flag may have some unexpected consequences.
When uploading to your drive all files will be overwritten unless they
haven't been modified since their creation. And the inverse will occur
while downloading. This side effect can be avoided by using the
"--checksum" flag.
This feature was implemented to retain photos capture date as recorded
by google photos. You will first need to check the "Create a Google
Photos folder" option in your google drive settings. You can then copy
or move the photos locally and use the date the image was taken
(created) set as the modification date.
Properties:
Config: use_created_date
Env Var: RCLONE_DRIVE_USE_CREATED_DATE
Type: bool
Default: false
--drive-use-shared-date
Use date file was shared instead of modified date.
Note that, as with "--drive-use-created-date", this flag may have
unexpected consequences when uploading/downloading files.
If both this flag and "--drive-use-created-date" are set, the created
date is used.
Properties:
Config: use_shared_date
Env Var: RCLONE_DRIVE_USE_SHARED_DATE
Type: bool
Default: false
--drive-list-chunk
Size of listing chunk 100-1000, 0 to disable.
Properties:
Config: list_chunk
Env Var: RCLONE_DRIVE_LIST_CHUNK
Type: int
Default: 1000
--drive-impersonate
Impersonate this user when using a service account.
Properties:
Config: impersonate
Env Var: RCLONE_DRIVE_IMPERSONATE
Type: string
Required: false
--drive-upload-cutoff
Cutoff for switching to chunked upload.
Properties:
Config: upload_cutoff
Env Var: RCLONE_DRIVE_UPLOAD_CUTOFF
Type: SizeSuffix
Default: 8Mi
--drive-chunk-size
Upload chunk size.
Must a power of 2 >= 256k.
Making this larger will improve performance, but note that each chunk
is buffered in memory one per transfer.
Reducing this will reduce memory usage but decrease performance.
Properties:
Config: chunk_size
Env Var: RCLONE_DRIVE_CHUNK_SIZE
Type: SizeSuffix
Default: 8Mi
--drive-acknowledge-abuse
Set to allow files which return cannotDownloadAbusiveFile to be downloaded.
If downloading a file returns the error "This file has been identified
as malware or spam and cannot be downloaded" with the error code
"cannotDownloadAbusiveFile" then supply this flag to rclone to
indicate you acknowledge the risks of downloading the file and rclone
will download it anyway.
Note that if you are using service account it will need Manager
permission (not Content Manager) to for this flag to work. If the SA
does not have the right permission, Google will just ignore the flag.
Properties:
Config: acknowledge_abuse
Env Var: RCLONE_DRIVE_ACKNOWLEDGE_ABUSE
Type: bool
Default: false
--drive-keep-revision-forever
Keep new head revision of each file forever.
Properties:
Config: keep_revision_forever
Env Var: RCLONE_DRIVE_KEEP_REVISION_FOREVER
Type: bool
Default: false
--drive-size-as-quota
Show sizes as storage quota usage, not actual size.
Show the size of a file as the storage quota used. This is the
current version plus any older versions that have been set to keep
forever.
WARNING
: This flag may have some unexpected consequences.
It is not recommended to set this flag in your config - the
recommended usage is using the flag form --drive-size-as-quota when
doing rclone ls/lsl/lsf/lsjson/etc only.
If you do use this flag for syncing (not recommended) then you will
need to use --ignore size also.
Properties:
Config: size_as_quota
Env Var: RCLONE_DRIVE_SIZE_AS_QUOTA
Type: bool
Default: false
--drive-v2-download-min-size
If Object's are greater, use drive v2 API to download.
Properties:
Config: v2_download_min_size
Env Var: RCLONE_DRIVE_V2_DOWNLOAD_MIN_SIZE
Type: SizeSuffix
Default: off
--drive-pacer-min-sleep
Minimum time to sleep between API calls.
Properties:
Config: pacer_min_sleep
Env Var: RCLONE_DRIVE_PACER_MIN_SLEEP
Type: Duration
Default: 100ms
--drive-pacer-burst
Number of API calls to allow without sleeping.
Properties:
Config: pacer_burst
Env Var: RCLONE_DRIVE_PACER_BURST
Type: int
Default: 100
--drive-server-side-across-configs
Deprecated: use --server-side-across-configs instead.
Allow server-side operations (e.g. copy) to work across different drive configs.
This can be useful if you wish to do a server-side copy between two
different Google drives. Note that this isn't enabled by default
because it isn't easy to tell if it will work between any two
configurations.
Properties:
Config: server_side_across_configs
Env Var: RCLONE_DRIVE_SERVER_SIDE_ACROSS_CONFIGS
Type: bool
Default: false
--drive-disable-http2
Disable drive using http2.
There is currently an unsolved issue with the google drive backend and
HTTP/2. HTTP/2 is therefore disabled by default for the drive backend
but can be re-enabled here. When the issue is solved this flag will
be removed.
See:
https://github.com/rclone/rclone/issues/3631
Properties:
Config: disable_http2
Env Var: RCLONE_DRIVE_DISABLE_HTTP2
Type: bool
Default: true
--drive-stop-on-upload-limit
Make upload limit errors be fatal.
At the time of writing it is only possible to upload 750 GiB of data to
Google Drive a day (this is an undocumented limit). When this limit is
reached Google Drive produces a slightly different error message. When
this flag is set it causes these errors to be fatal. These will stop
the in-progress sync.
Note that this detection is relying on error message strings which
Google don't document so it may break in the future.
See:
https://github.com/rclone/rclone/issues/3857
Properties:
Config: stop_on_upload_limit
Env Var: RCLONE_DRIVE_STOP_ON_UPLOAD_LIMIT
Type: bool
Default: false
--drive-stop-on-download-limit
Make download limit errors be fatal.
At the time of writing it is only possible to download 10 TiB of data from
Google Drive a day (this is an undocumented limit). When this limit is
reached Google Drive produces a slightly different error message. When
this flag is set it causes these errors to be fatal. These will stop
the in-progress sync.
Note that this detection is relying on error message strings which
Google don't document so it may break in the future.
Properties:
Config: stop_on_download_limit
Env Var: RCLONE_DRIVE_STOP_ON_DOWNLOAD_LIMIT
Type: bool
Default: false
--drive-skip-shortcuts
If set skip shortcut files.
Normally rclone dereferences shortcut files making them appear as if
they are the original file (see
the shortcuts section
).
If this flag is set then rclone will ignore shortcut files completely.
Properties:
Config: skip_shortcuts
Env Var: RCLONE_DRIVE_SKIP_SHORTCUTS
Type: bool
Default: false
--drive-skip-dangling-shortcuts
If set skip dangling shortcut files.
If this is set then rclone will not show any dangling shortcuts in listings.
Properties:
Config: skip_dangling_shortcuts
Env Var: RCLONE_DRIVE_SKIP_DANGLING_SHORTCUTS
Type: bool
Default: false
--drive-resource-key
Resource key for accessing a link-shared file.
If you need to access files shared with a link like this
https://drive.google.com/drive/folders/XXX?resourcekey=YYY&usp=sharing
Then you will need to use the first part "XXX" as the "root_folder_id"
and the second part "YYY" as the "resource_key" otherwise you will get
404 not found errors when trying to access the directory.
See:
https://developers.google.com/drive/api/guides/resource-keys
This resource key requirement only applies to a subset of old files.
Note also that opening the folder once in the web interface (with the
user you've authenticated rclone with) seems to be enough so that the
resource key is not needed.
Properties:
Config: resource_key
Env Var: RCLONE_DRIVE_RESOURCE_KEY
Type: string
Required: false
--drive-fast-list-bug-fix
Work around a bug in Google Drive listing.
Normally rclone will work around a bug in Google Drive when using
--fast-list (ListR) where the search "(A in parents) or (B in
parents)" returns nothing sometimes. See #3114, #4289 and
https://issuetracker.google.com/issues/149522397
Rclone detects this by finding no items in more than one directory
when listing and retries them as lists of individual directories.
This means that if you have a lot of empty directories rclone will end
up listing them all individually and this can take many more API
calls.
This flag allows the work-around to be disabled. This is
not
recommended in normal use - only if you have a particular case you are
having trouble with like many empty directories.
Properties:
Config: fast_list_bug_fix
Env Var: RCLONE_DRIVE_FAST_LIST_BUG_FIX
Type: bool
Default: true
--drive-metadata-owner
Control whether owner should be read or written in metadata.
Owner is a standard part of the file metadata so is easy to read. But it
isn't always desirable to set the owner from the metadata.
Note that you can't set the owner on Shared Drives, and that setting
ownership will generate an email to the new owner (this can't be
disabled), and you can't transfer ownership to someone outside your
organization.
Properties:
Config: metadata_owner
Env Var: RCLONE_DRIVE_METADATA_OWNER
Type: Bits
Default: read
Examples:
"off"
Do not read or write the value
"read"
Read the value only
"write"
Write the value only
"failok"
If writing fails log errors only, don't fail the transfer
"read,write"
Read and Write the value.
--drive-metadata-permissions
Control whether permissions should be read or written in metadata.
Reading permissions metadata from files can be done quickly, but it
isn't always desirable to set the permissions from the metadata.
Note that rclone drops any inherited permissions on Shared Drives and
any owner permission on My Drives as these are duplicated in the owner
metadata.
Properties:
Config: metadata_permissions
Env Var: RCLONE_DRIVE_METADATA_PERMISSIONS
Type: Bits
Default: off
Examples:
"off"
Do not read or write the value
"read"
Read the value only
"write"
Write the value only
"failok"
If writing fails log errors only, don't fail the transfer
"read,write"
Read and Write the value.
--drive-metadata-labels
Control whether labels should be read or written in metadata.
Reading labels metadata from files takes an extra API transaction and
will slow down listings. It isn't always desirable to set the labels
from the metadata.
The format of labels is documented in the drive API documentation at
https://developers.google.com/drive/api/reference/rest/v3/Label
-
rclone just provides a JSON dump of this format.
When setting labels, the label and fields must already exist - rclone
will not create them. This means that if you are transferring labels
from two different accounts you will have to create the labels in
advance and use the metadata mapper to translate the IDs between the
two accounts.
Properties:
Config: metadata_labels
Env Var: RCLONE_DRIVE_METADATA_LABELS
Type: Bits
Default: off
Examples:
"off"
Do not read or write the value
"read"
Read the value only
"write"
Write the value only
"failok"
If writing fails log errors only, don't fail the transfer
"read,write"
Read and Write the value.
--drive-metadata-enforce-expansive-access
Whether the request should enforce expansive access rules.
From Feb 2026 this flag will be set by default so this flag can be used for
testing before then.
See:
https://developers.google.com/workspace/drive/api/guides/limited-expansive-access
Properties:
Config: metadata_enforce_expansive_access
Env Var: RCLONE_DRIVE_METADATA_ENFORCE_EXPANSIVE_ACCESS
Type: bool
Default: false
--drive-encoding
The encoding for the backend.
See the
encoding section in the overview
for more info.
Properties:
Config: encoding
Env Var: RCLONE_DRIVE_ENCODING
Type: Encoding
Default: InvalidUtf8
--drive-env-auth
Get IAM credentials from runtime (environment variables or instance meta data if no env vars).
Only applies if service_account_file and service_account_credentials is blank.
Properties:
Config: env_auth
Env Var: RCLONE_DRIVE_ENV_AUTH
Type: bool
Default: false
Examples:
"false"
Enter credentials in the next step.
"true"
Get GCP IAM credentials from the environment (env vars or IAM).
--drive-description
Description of the remote.
Properties:
Config: description
Env Var: RCLONE_DRIVE_DESCRIPTION
Type: string
Required: false
Metadata
User metadata is stored in the properties field of the drive object.
Metadata is supported on files and directories.
Here are the possible system metadata items for the drive backend.
Name
Help
Type
Example
Read Only
btime
Time of file birth (creation) with mS accuracy. Note that this is only writable on fresh uploads - it can't be written for updates.
RFC 3339
2006-01-02T15:04:05.999Z07:00
N
content-type
The MIME type of the file.
string
text/plain
N
copy-requires-writer-permission
Whether the options to copy, print, or download this file, should be disabled for readers and commenters.
boolean
true
N
description
A short description of the file.
string
Contract for signing
N
folder-color-rgb
The color for a folder or a shortcut to a folder as an RGB hex string.
string
881133
N
labels
Labels attached to this file in a JSON dump of Googled drive format. Enable with --drive-metadata-labels.
JSON
[]
N
mtime
Time of last modification with mS accuracy.
RFC 3339
2006-01-02T15:04:05.999Z07:00
N
owner
The owner of the file. Usually an email address. Enable with --drive-metadata-owner.
string
user@example.com
N
permissions
Permissions in a JSON dump of Google drive format. On shared drives these will only be present if they aren't inherited. Enable with --drive-metadata-permissions.
JSON
{}
N
starred
Whether the user has starred the file.
boolean
false
N
viewed-by-me
Whether the file has been viewed by this user.
boolean
true
Y
writers-can-share
Whether users with only writer permission can modify the file's permissions. Not populated and ignored when setting for items in shared drives.
boolean
false
N
See the
metadata
docs for more info.
Backend commands
Here are the commands specific to the drive backend.
Run them with:
rclone backend COMMAND remote:
The help below will explain what arguments each command takes.
See the
backend
command for more
info on how to pass options and arguments.
These can be run on a running backend using the rc command
backend/command
.
get
Get command for fetching the drive config parameters.
rclone backend get remote: [options] [<arguments>+]
This is a get command which will be used to fetch the various drive config
parameters.
Usage examples:
rclone backend get drive: [-o service_account_file] [-o chunk_size]
rclone rc backend/command command=get fs=drive: [-o service_account_file] [-o chunk_size]
Options:
"chunk_size": Show the current upload chunk size.
"service_account_file": Show the current service account file.
set
Set command for updating the drive config parameters.
rclone backend set remote: [options] [<arguments>+]
This is a set command which will be used to update the various drive config
parameters.
Usage examples:
rclone backend set drive: [-o service_account_file=sa.json] [-o chunk_size=67108864]
rclone rc backend/command command=set fs=drive: [-o service_account_file=sa.json] [-o chunk_size=67108864]
Options:
"chunk_size": Update the current upload chunk size.
"service_account_file": Update the current service account file.
shortcut
Create shortcuts from files or directories.
rclone backend shortcut remote: [options] [<arguments>+]
This command creates shortcuts from files or directories.
Usage examples:
rclone backend shortcut drive: source_item destination_shortcut
rclone backend shortcut drive: source_item -o target=drive2: destination_shortcut
In the first example this creates a shortcut from the "source_item"
which can be a file or a directory to the "destination_shortcut". The
"source_item" and the "destination_shortcut" should be relative paths
from "drive:"
In the second example this creates a shortcut from the "source_item"
relative to "drive:" to the "destination_shortcut" relative to
"drive2:". This may fail with a permission error if the user
authenticated with "drive2:" can't read files from "drive:".
Options:
"target": Optional target remote for the shortcut destination.
drives
List the Shared Drives available to this account.
rclone backend drives remote: [options] [<arguments>+]
This command lists the Shared Drives (Team Drives) available to this
account.
Usage example:
rclone backend [-o config] drives drive:
This will return a JSON list of objects like this:
[
{
"id"
:
"0ABCDEF-01234567890"
,
"kind"
:
"drive#teamDrive"
,
"name"
:
"My Drive"
},
{
"id"
:
"0ABCDEFabcdefghijkl"
,
"kind"
:
"drive#teamDrive"
,
"name"
:
"Test Drive"
}
]
With the -o config parameter it will output the list in a format
suitable for adding to a config file to make aliases for all the
drives found and a combined drive.
[My Drive]
type
=
alias
remote
=
drive,team_drive=0ABCDEF-01234567890,root_folder_id=:
[Test Drive]
type
=
alias
remote
=
drive,team_drive=0ABCDEFabcdefghijkl,root_folder_id=:
[AllDrives]
type
=
combine
upstreams
=
"My Drive=My Drive:" "Test Drive=Test Drive:"
Adding this to the rclone config file will cause those team drives to
be accessible with the aliases shown. Any illegal characters will be
substituted with "_" and duplicate names will have numbers suffixed.
It will also add a remote called AllDrives which shows all the shared
drives combined into one directory tree.
untrash
Untrash files and directories.
rclone backend untrash remote: [options] [<arguments>+]
This command untrashes all the files and directories in the directory
passed in recursively.
Usage example:
rclone backend untrash drive:directory
rclone backend --interactive untrash drive:directory subdir
This takes an optional directory to trash which make this easier to
use via the API.
Use the --interactive/-i or --dry-run flag to see what would be restored before
restoring it.
Result:
{
"Untrashed"
:
17
,
"Errors"
:
0
}
copyid
Copy files by ID.
rclone backend copyid remote: [options] [<arguments>+]
This command copies files by ID.
Usage examples:
rclone backend copyid drive: ID path
rclone backend copyid drive: ID1 path1 ID2 path2
It copies the drive file with ID given to the path (an rclone path which
will be passed internally to rclone copyto). The ID and path pairs can be
repeated.
The path should end with a / to indicate copy the file as named to
this directory. If it doesn't end with a / then the last path
component will be used as the file name.
If the destination is a drive backend then server-side copying will be
attempted if possible.
Use the --interactive/-i or --dry-run flag to see what would be copied before
copying.
moveid
Move files by ID.
rclone backend moveid remote: [options] [<arguments>+]
This command moves files by ID.
Usage examples:
rclone backend moveid drive: ID path
rclone backend moveid drive: ID1 path1 ID2 path2
It moves the drive file with ID given to the path (an rclone path which
will be passed internally to rclone moveto).
The path should end with a / to indicate move the file as named to
this directory. If it doesn't end with a / then the last path
component will be used as the file name.
If the destination is a drive backend then server-side moving will be
attempted if possible.
Use the --interactive/-i or --dry-run flag to see what would be moved beforehand.
exportformats
Dump the export formats for debug purposes.
rclone backend exportformats remote: [options] [<arguments>+]
importformats
Dump the import formats for debug purposes.
rclone backend importformats remote: [options] [<arguments>+]
query
List files using Google Drive query language.
rclone backend query remote: [options] [<arguments>+]
This command lists files based on a query.
Usage example:
rclone backend query drive: query
The query syntax is documented at
Google Drive Search query terms and
operators
.
For example:
rclone backend query drive: "'0ABc9DEFGHIJKLMNop0QRatUVW3X' in parents and name contains 'foo'"
If the query contains literal ' or \ characters, these need to be escaped with
\ characters. "'" becomes "'" and "" becomes "\", for example to match a
file named "foo ' .txt":
rclone backend query drive: "name = 'foo \' \\\.txt'"
The result is a JSON array of matches, for example:
[
{
"createdTime"
:
"2017-06-29T19:58:28.537Z"
,
"id"
:
"0AxBe_CDEF4zkGHI4d0FjYko2QkD"
,
"md5Checksum"
:
"68518d16be0c6fbfab918be61d658032"
,
"mimeType"
:
"text/plain"
,
"modifiedTime"
:
"2024-02-02T10:40:02.874Z"
,
"name"
:
"foo ' \\.txt"
,
"parents"
:
[
"0BxAe_BCDE4zkFGZpcWJGek0xbzC"
],
"resourceKey"
:
"0-ABCDEFGHIXJQpIGqBJq3MC"
,
"sha1Checksum"
:
"8f284fa768bfb4e45d076a579ab3905ab6bfa893"
,
"size"
:
"311"
,
"webViewLink"
:
"https://drive.google.com/file/d/0AxBe_CDEF4zkGHI4d0FjYko2QkD/view?usp=drivesdk\u0026resourcekey=0-ABCDEFGHIXJQpIGqBJq3MC"
}
]
```console
###
rescue
Rescue
or
delete
any
orphaned
files.
```console
rclone
backend
rescue
remote:
[
options
]
[
<arguments>+
]
This command rescues or deletes any orphaned files or directories.
Sometimes files can get orphaned in Google Drive. This means that they
are no longer in any folder in Google Drive.
This command finds those files and either rescues them to a directory
you specify or deletes them.
This can be used in 3 ways.
First, list all orphaned files:
rclone backend rescue drive:
Second rescue all orphaned files to the directory indicated:
rclone backend rescue drive: "relative/path/to/rescue/directory"
E.g. to rescue all orphans to a directory called "Orphans" in the top level:
rclone backend rescue drive: Orphans
Third delete all orphaned files to the trash:
rclone backend rescue drive: -o delete
Limitations
Drive has quite a lot of rate limiting. This causes rclone to be
limited to transferring about 2 files per second only. Individual
files may be transferred much faster at 100s of MiB/s but lots of
small files can take a long time.
Server side copies are also subject to a separate rate limit. If you
see User rate limit exceeded errors, wait at least 24 hours and retry.
You can disable server-side copies with
--disable copy
to download
and upload the files if you prefer.
Limitations of Google Docs
Google docs will appear as size -1 in
rclone ls
,
rclone ncdu
etc,
and as size 0 in anything which uses the VFS layer, e.g.
rclone mount
and
rclone serve
. When calculating directory totals, e.g. in
rclone size
and
rclone ncdu
, they will be counted in as empty
files.
This is because rclone can't find out the size of the Google docs
without downloading them.
Google docs will transfer correctly with
rclone sync
,
rclone copy
etc as rclone knows to ignore the size when doing the transfer.
However an unfortunate consequence of this is that you may not be able
to download Google docs using
rclone mount
. If it doesn't work you
will get a 0 sized file. If you try again the doc may gain its
correct size and be downloadable. Whether it will work on not depends
on the application accessing the mount and the OS you are running -
experiment to find out if it does work for you!
Duplicated files
Sometimes, for no reason I've been able to track down, drive will
duplicate a file that rclone uploads. Drive unlike all the other
remotes can have duplicated files.
Duplicated files cause problems with the syncing and you will see
messages in the log about duplicates.
Use
rclone dedupe
to fix duplicated files.
Note that this isn't just a problem with rclone, even Google Photos on
Android duplicates files on drive sometimes.
Rclone appears to be re-copying files it shouldn't
The most likely cause of this is the duplicated file issue above - run
rclone dedupe
and check your logs for duplicate object or directory
messages.
This can also be caused by a delay/caching on google drive's end when
comparing directory listings. Specifically with team drives used in
combination with --fast-list. Files that were uploaded recently may
not appear on the directory list sent to rclone when using --fast-list.
Waiting a moderate period of time between attempts (estimated to be
approximately 1 hour) and/or not using --fast-list both seem to be
effective in preventing the problem.
SHA1 or SHA256 hashes may be missing
All files have MD5 hashes, but a small fraction of files uploaded may
not have SHA1 or SHA256 hashes especially if they were uploaded before 2018.
Making your own client_id
When you use rclone with Google drive in its default configuration you
are using rclone's client_id. This is shared between all the rclone
users. There is a global rate limit on the number of queries per
second that each client_id can do set by Google. rclone already has a
high quota and I will continue to make sure it is high enough by
contacting Google.
It is strongly recommended to use your own client ID as the default
rclone ID is heavily used. If you have multiple services running, it
is recommended to use an API key for each service. The default Google
quota is 10 transactions per second so it is recommended to stay under
that number as if you use more than that, it will cause rclone to rate
limit and make things slower.
Here is how to create your own Google Drive client ID for rclone:
Log into the
Google API
Console
with your Google
account. It doesn't matter what Google account you use. (It need not
be the same account as the Google Drive you want to access)
Select a project or create a new project.
Under "ENABLE APIS AND SERVICES" search for "Drive", and enable the
"Google Drive API".
Click "Credentials" in the left-side panel (not "Create
credentials", which opens the wizard).
If you already configured an "Oauth Consent Screen", then skip
to the next step; if not, click on "CONFIGURE CONSENT SCREEN" button
(near the top right corner of the right panel), then click "Get started".
On the next screen, enter an "Application name"
("rclone" is OK); enter "User Support Email" (your own email is OK);
Next, under Audience select "External". Next enter your own contact information,
agree to terms and click "Create". You should now see rclone (or your project name)
in a box in the top left of the screen.
(PS: if you are a GSuite user, you could also select "Internal" instead
of "External" above, but this will restrict API use to Google Workspace
users in your organisation).
You will also have to add
some scopes
,
including
https://www.googleapis.com/auth/docs
https://www.googleapis.com/auth/drive
in order to be able to edit,
create and delete files with RClone.
https://www.googleapis.com/auth/drive.metadata.readonly
which you may
also want to add.
To do this, click Data Access on the left side panel, click "add or
remove scopes" and select the three above and press update or go to the
"Manually add scopes" text box (scroll down) and enter
"https://www.googleapis.com/auth/docs,https://www.googleapis.com/auth/drive,https://www.googleapis.com/auth/drive.metadata.readonly", press add to table then update.
You should now see the three scopes on your Data access page. Now press save
at the bottom!
After adding scopes, click Audience
Scroll down and click "+ Add users". Add yourself as a test user and press save.
Go to Overview on the left panel, click "Create OAuth client". Choose
an application type of "Desktop app" and click "Create". (the default name is fine)
It will show you a client ID and client secret. Make a note of these.
(If you selected "External" at Step 5 continue to Step 9.
If you chose "Internal" you don't need to publish and can skip straight to
Step 10 but your destination drive must be part of the same Google Workspace.)
Go to "Audience" and then click "PUBLISH APP" button and confirm.
Add yourself as a test user if you haven't already.
Provide the noted client ID and client secret to rclone.
Be aware that, due to the "enhanced security" recently introduced by
Google, you are theoretically expected to "submit your app for verification"
and then wait a few weeks(!) for their response; in practice, you can go right
ahead and use the client ID and client secret with rclone, the only issue will
be a very scary confirmation screen shown when you connect via your browser
for rclone to be able to get its token-id (but as this only happens during
the remote configuration, it's not such a big deal). Keeping the application in
"Testing" will work as well, but the limitation is that any grants will expire
after a week, which can be annoying to refresh constantly. If, for whatever
reason, a short grant time is not a problem, then keeping the application in
testing mode would also be sufficient.
(Thanks to @balazer on github for these instructions.)
Sometimes, creation of an OAuth consent in Google API Console fails due to an
error message "The request failed because changes to one of the field of the
resource is not supported". As a convenient workaround, the necessary Google
Drive API key can be created on the
Python Quickstart
page. Just push the Enable the Drive API button to receive the Client ID and Secret.
Note that it will automatically create a new project in the API Console. |
| Markdown | [](https://rclone.org/)
- [Downloads](https://rclone.org/downloads/)
- [Docs](https://rclone.org/drive/)
[Installation](https://rclone.org/install/) [Usage](https://rclone.org/docs/) [Filtering](https://rclone.org/filtering/) [GUI](https://rclone.org/gui/) [Remote Control](https://rclone.org/rc/) [Remote Setup](https://rclone.org/remote_setup/) [Changelog](https://rclone.org/changelog/) [Bugs](https://rclone.org/bugs/) [FAQ](https://rclone.org/faq/) [Flags](https://rclone.org/flags/) [Licence](https://rclone.org/licence/) [Authors](https://rclone.org/authors/) [Privacy Policy](https://rclone.org/privacy/)
- [Commands](https://rclone.org/drive/)
[Overview](https://rclone.org/commands/)
[rclone](https://rclone.org/commands/rclone/) [rclone about](https://rclone.org/commands/rclone_about/) [rclone archive](https://rclone.org/commands/rclone_archive/) [rclone authorize](https://rclone.org/commands/rclone_authorize/) [rclone backend](https://rclone.org/commands/rclone_backend/) [rclone bisync](https://rclone.org/commands/rclone_bisync/) [rclone cat](https://rclone.org/commands/rclone_cat/) [rclone check](https://rclone.org/commands/rclone_check/) [rclone checksum](https://rclone.org/commands/rclone_checksum/) [rclone cleanup](https://rclone.org/commands/rclone_cleanup/) [rclone completion](https://rclone.org/commands/rclone_completion/) [rclone config](https://rclone.org/commands/rclone_config/) [rclone convmv](https://rclone.org/commands/rclone_convmv/) [rclone copy](https://rclone.org/commands/rclone_copy/) [rclone copyto](https://rclone.org/commands/rclone_copyto/) [rclone copyurl](https://rclone.org/commands/rclone_copyurl/) [rclone cryptcheck](https://rclone.org/commands/rclone_cryptcheck/) [rclone cryptdecode](https://rclone.org/commands/rclone_cryptdecode/) [rclone dedupe](https://rclone.org/commands/rclone_dedupe/) [rclone delete](https://rclone.org/commands/rclone_delete/) [rclone deletefile](https://rclone.org/commands/rclone_deletefile/) [rclone gendocs](https://rclone.org/commands/rclone_gendocs/) [rclone gitannex](https://rclone.org/commands/rclone_gitannex/) [rclone hashsum](https://rclone.org/commands/rclone_hashsum/) [rclone link](https://rclone.org/commands/rclone_link/) [rclone listremotes](https://rclone.org/commands/rclone_listremotes/) [rclone ls](https://rclone.org/commands/rclone_ls/) [rclone lsd](https://rclone.org/commands/rclone_lsd/) [rclone lsf](https://rclone.org/commands/rclone_lsf/) [rclone lsjson](https://rclone.org/commands/rclone_lsjson/) [rclone lsl](https://rclone.org/commands/rclone_lsl/) [rclone md5sum](https://rclone.org/commands/rclone_md5sum/) [rclone mkdir](https://rclone.org/commands/rclone_mkdir/) [rclone mount](https://rclone.org/commands/rclone_mount/) [rclone move](https://rclone.org/commands/rclone_move/) [rclone moveto](https://rclone.org/commands/rclone_moveto/) [rclone ncdu](https://rclone.org/commands/rclone_ncdu/) [rclone nfsmount](https://rclone.org/commands/rclone_nfsmount/) [rclone obscure](https://rclone.org/commands/rclone_obscure/) [rclone purge](https://rclone.org/commands/rclone_purge/) [rclone rc](https://rclone.org/commands/rclone_rc/) [rclone rcat](https://rclone.org/commands/rclone_rcat/) [rclone rcd](https://rclone.org/commands/rclone_rcd/) [rclone rmdir](https://rclone.org/commands/rclone_rmdir/) [rclone rmdirs](https://rclone.org/commands/rclone_rmdirs/) [rclone selfupdate](https://rclone.org/commands/rclone_selfupdate/) [rclone serve](https://rclone.org/commands/rclone_serve/) [rclone settier](https://rclone.org/commands/rclone_settier/) [rclone sha1sum](https://rclone.org/commands/rclone_sha1sum/) [rclone size](https://rclone.org/commands/rclone_size/) [rclone sync](https://rclone.org/commands/rclone_sync/) [rclone test](https://rclone.org/commands/rclone_test/) [rclone touch](https://rclone.org/commands/rclone_touch/) [rclone tree](https://rclone.org/commands/rclone_tree/) [rclone version](https://rclone.org/commands/rclone_version/)
- [Storage Systems](https://rclone.org/drive/)
[Overview](https://rclone.org/overview/) [Support Tiers](https://rclone.org/tiers/)
[1Fichier](https://rclone.org/fichier/) [Akamai NetStorage](https://rclone.org/netstorage/) [Alias](https://rclone.org/alias/) [Amazon S3 Storage Providers](https://rclone.org/s3/) [Archive](https://rclone.org/archive/) [Backblaze B2](https://rclone.org/b2/) [Box](https://rclone.org/box/) [Chunker (splits large files)](https://rclone.org/chunker/) [Cloudinary](https://rclone.org/cloudinary/) [Compress (transparent gzip compression)](https://rclone.org/compress/) [Combine (remotes into a directory tree)](https://rclone.org/combine/) [Citrix ShareFile](https://rclone.org/sharefile/) [Crypt (encrypts the others)](https://rclone.org/crypt/) [Digi Storage](https://rclone.org/koofr/#digi-storage) [Drime](https://rclone.org/drime/) [Dropbox](https://rclone.org/dropbox/) [Enterprise File Fabric](https://rclone.org/filefabric/) [FileLu Cloud Storage](https://rclone.org/filelu/) [FileLu S5 (S3-Compatible)](https://rclone.org/s3/#filelu-s5) [Filen](https://rclone.org/filen/) [Files.com](https://rclone.org/filescom/) [FTP](https://rclone.org/ftp/) [Gofile](https://rclone.org/gofile/) [Google Cloud Storage](https://rclone.org/googlecloudstorage/) [Google Drive](https://rclone.org/drive/) [Google Photos](https://rclone.org/googlephotos/) [Hasher (better checksums for others)](https://rclone.org/hasher/) [HDFS (Hadoop Distributed Filesystem)](https://rclone.org/hdfs/) [HiDrive](https://rclone.org/hidrive/) [HTTP](https://rclone.org/http/) [iCloud Drive](https://rclone.org/iclouddrive/) [ImageKit](https://rclone.org/imagekit/) [Internet Archive](https://rclone.org/internetarchive/) [Internxt](https://rclone.org/internxt/) [Jottacloud](https://rclone.org/jottacloud/) [Koofr](https://rclone.org/koofr/) [Linkbox](https://rclone.org/linkbox/) [Mail.ru Cloud](https://rclone.org/mailru/) [Mega](https://rclone.org/mega/) [Mega S4 (S3-Compatible)](https://rclone.org/s3/#mega) [Memory](https://rclone.org/memory/) [Microsoft Azure Blob Storage](https://rclone.org/azureblob/) [Microsoft Azure Files Storage](https://rclone.org/azurefiles/) [Microsoft OneDrive](https://rclone.org/onedrive/) [OpenDrive](https://rclone.org/opendrive/) [QingStor](https://rclone.org/qingstor/) [Openstack Swift](https://rclone.org/swift/) [Oracle Object Storage](https://rclone.org/oracleobjectstorage/) [pCloud](https://rclone.org/pcloud/) [PikPak](https://rclone.org/pikpak/) [Pixeldrain](https://rclone.org/pixeldrain/) [premiumize.me](https://rclone.org/premiumizeme/) [put.io](https://rclone.org/putio/) [Proton Drive](https://rclone.org/protondrive/) [Quatrix](https://rclone.org/quatrix/) [Seafile](https://rclone.org/seafile/) [SFTP](https://rclone.org/sftp/) [Sia](https://rclone.org/sia/) [Shade](https://rclone.org/shade/) [SMB / CIFS](https://rclone.org/smb/) [Storj](https://rclone.org/storj/) [SugarSync](https://rclone.org/sugarsync/) [Uloz.to](https://rclone.org/ulozto/) [Union (merge backends)](https://rclone.org/union/) [WebDAV](https://rclone.org/webdav/) [Yandex Disk](https://rclone.org/yandex/) [Zoho WorkDrive](https://rclone.org/zoho/)
[The local filesystem](https://rclone.org/local/)
- [Contact](https://rclone.org/contact/)
- [Sponsor](https://rclone.org/sponsor/)
- [For Business](https://rclone.com/ "Click here for support and advertising contracts")
added in v0.91 [Tier 1](https://rclone.org/tiers/ "Core: Production-grade, first-class")
# Google Drive
Paths are specified as `drive:path`
Drive paths may be as deep as required, e.g. `drive:directory/subdirectory`.
## Configuration
The initial setup for drive involves getting a token from Google drive which you need to do in your browser. `rclone config` walks you through it.
Here is an example of how to make a remote called `remote`. First run:
```
rclone config
```
This will guide you through an interactive setup process:
```
No remotes found, make a new one?
n) New remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
n/r/c/s/q> n
name> remote
Type of storage to configure.
Choose a number from below, or type in your own value
[snip]
XX / Google Drive
\ "drive"
[snip]
Storage> drive
Google Application Client Id - leave blank normally.
client_id>
Google Application Client Secret - leave blank normally.
client_secret>
Scope that rclone should use when requesting access from drive.
Choose a number from below, or type in your own value
1 / Full access all files, excluding Application Data Folder.
\ "drive"
2 / Read-only access to file metadata and file contents.
\ "drive.readonly"
/ Access to files created by rclone only.
3 | These are visible in the drive website.
| File authorization is revoked when the user deauthorizes the app.
\ "drive.file"
/ Allows read and write access to the Application Data folder.
4 | This is not visible in the drive website.
\ "drive.appfolder"
/ Allows read-only access to file metadata but
5 | does not allow any access to read or download file content.
\ "drive.metadata.readonly"
scope> 1
Service Account Credentials JSON file path - needed only if you want use SA instead of interactive login.
service_account_file>
Remote config
Use web browser to automatically authenticate rclone with remote?
* Say Y if the machine running rclone has a web browser you can use
* Say N if running rclone on a (remote) machine without web browser access
If not sure try Y. If Y failed, try N.
y) Yes
n) No
y/n> y
If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth
Log in and authorize rclone for access
Waiting for code...
Got code
Configure this as a Shared Drive (Team Drive)?
y) Yes
n) No
y/n> n
Configuration complete.
Options:
type: drive
- client_id:
- client_secret:
- scope: drive
- root_folder_id:
- service_account_file:
- token: {"access_token":"XXX","token_type":"Bearer","refresh_token":"XXX","expiry":"2014-03-16T13:57:58.955387075Z"}
Keep this "remote" remote?
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y
```
See the [remote setup docs](https://rclone.org/remote_setup/) for how to set it up on a machine without an internet-connected web browser available.
Note that rclone runs a webserver on your local machine to collect the token as returned from Google if using web browser to automatically authenticate. This only runs from the moment it opens your browser to the moment you get back the verification code. This is on `http://127.0.0.1:53682/` and it may require you to unblock it temporarily if you are running a host firewall, or use manual mode.
You can then use it like this,
List directories in top level of your drive
```
rclone lsd remote:
```
List all the files in your drive
```
rclone ls remote:
```
To copy a local directory to a drive directory called backup
```
rclone copy /home/source remote:backup
```
### Scopes
Rclone allows you to select which scope you would like for rclone to use. This changes what type of token is granted to rclone. [The scopes are defined here](https://developers.google.com/drive/v3/web/about-auth).
A comma-separated list is allowed e.g. `drive.readonly,drive.file`.
The scope are
#### drive
This is the default scope and allows full access to all files, except for the Application Data Folder (see below).
Choose this one if you aren't sure.
#### drive.readonly
This allows read only access to all files. Files may be listed and downloaded but not uploaded, renamed or deleted.
#### drive.file
With this scope rclone can read/view/modify only those files and folders it creates.
So if you uploaded files to drive via the web interface (or any other means) they will not be visible to rclone.
This can be useful if you are using rclone to backup data and you want to be sure confidential data on your drive is not visible to rclone.
Files created with this scope are visible in the web interface.
#### drive.appfolder
This gives rclone its own private area to store files. Rclone will not be able to see any other files on your drive and you won't be able to see rclone's files from the web interface either.
#### drive.metadata.readonly
This allows read only access to file names only. It does not allow rclone to download or upload data, or rename or delete files or directories.
### Root folder ID
This option has been moved to the advanced section. You can set the `root_folder_id` for rclone. This is the directory (identified by its `Folder ID`) that rclone considers to be the root of your drive.
Normally you will leave this blank and rclone will determine the correct root to use itself.
However you can set this to restrict rclone to a specific folder hierarchy or to access data within the "Computers" tab on the drive web interface (where files from Google's Backup and Sync desktop program go).
In order to do this you will have to find the `Folder ID` of the directory you wish rclone to display. This will be the last segment of the URL when you open the relevant folder in the drive web interface.
So if the folder you want rclone to use has a URL which looks like `https://drive.google.com/drive/folders/1XyfxxxxxxxxxxxxxxxxxxxxxxxxxKHCh` in the browser, then you use `1XyfxxxxxxxxxxxxxxxxxxxxxxxxxKHCh` as the `root_folder_id` in the config.
**NB** folders under the "Computers" tab seem to be read only (drive gives a 500 error) when using rclone.
There doesn't appear to be an API to discover the folder IDs of the "Computers" tab - please contact us if you know otherwise\!
Note also that rclone can't access any data under the "Backups" tab on the google drive web interface yet.
### Service Account support
You can set up rclone with Google Drive in an unattended mode, i.e. not tied to a specific end-user Google account. This is useful when you want to synchronise files onto machines that don't have actively logged-in users, for example build machines.
To use a Service Account instead of OAuth2 token flow, enter the path to your Service Account credentials at the `service_account_file` prompt during `rclone config` and rclone won't use the browser based authentication flow. If you'd rather stuff the contents of the credentials file into the rclone config file, you can set `service_account_credentials` with the actual contents of the file instead, or set the equivalent environment variable.
#### Use case - Google Workspace account and individual Drive
Let's say that you are the administrator of a Google Workspace. The goal is to read or write data on an individual's Drive account, who IS a member of the domain. We'll call the domain \<example.com\>, and the user [foo@example.com](mailto:foo@example.com).
There's a few steps we need to go through to accomplish this:
##### 1\. Create a service account for example.com
- To create a service account and obtain its credentials, go to the [Google Developer Console](https://console.developers.google.com/).
- You must have a project - create one if you don't and make sure you are on the selected project.
- Then go to "IAM & admin" -\> "Service Accounts".
- Use the "Create Service Account" button. Fill in "Service account name" and "Service account ID" with something that identifies your client.
- Select "Create And Continue". Step 2 and 3 are optional.
- Click on the newly created service account
- Click "Keys" and then "Add Key" and then "Create new key"
- Choose type "JSON" and click create
- This will download a small JSON file that rclone will use for authentication.
If you ever need to remove access, press the "Delete service account key" button.
##### 2\. Allowing API access to example.com Google Drive
- Go to example.com's [Workspace Admin Console](https://admin.google.com/)
- Go into "Security" (or use the search bar)
- Select "Access and data control" and then "API controls"
- Click "Manage domain-wide delegation"
- Click "Add new"
- In the "Client ID" field enter the service account's "Client ID" - this can be found in the Developer Console under "IAM & Admin" -\> "Service Accounts", then "View Client ID" for the newly created service account. It is a ~21 character numerical string.
- In the next field, "OAuth Scopes", enter `https://www.googleapis.com/auth/drive` to grant read/write access to Google Drive specifically. You can also use `https://www.googleapis.com/auth/drive.readonly` for read only access with `--drive-scope=drive.readonly`.
- Click "Authorise"
##### 3\. Configure rclone, assuming a new install
```
rclone config
n/s/q> n # New
name>gdrive # Gdrive is an example name
Storage> # Type drive
client_id> # Can be left blank
client_secret> # Can be left blank
scope> # Select the scope use used in step 2
root_folder_id> # Can be left blank
service_account_file> /home/foo/myJSONfile.json # Path to the JSON file you downloaded in step 1.
y/n> # Auto config, n
```
##### 4\. Verify that it's working
- `rclone -v --drive-impersonate foo@example.com lsf gdrive:backup`
- The arguments do:
- `-v` - verbose logging
- `--drive-impersonate foo@example.com` - this is what does the magic, pretending to be user foo.
- `lsf` - list files in a parsing friendly way
- `gdrive:backup` - use the remote called gdrive, work in the folder named backup.
Note: in case you configured a specific root folder on gdrive and rclone is unable to access the contents of that folder when using `--drive-impersonate`, do this instead:
- in the gdrive web interface, share your root folder with the user/email of the new Service Account you created/selected at step 1
- use rclone without specifying the `--drive-impersonate` option, like this: `rclone -v lsf gdrive:backup`
### Shared drives (team drives)
If you want to configure the remote to point to a Google Shared Drive (previously known as Team Drives) then answer `y` to the question `Configure this as a Shared Drive (Team Drive)?`.
This will fetch the list of Shared Drives from google and allow you to configure which one you want to use. You can also type in a Shared Drive ID if you prefer.
For example:
```
Configure this as a Shared Drive (Team Drive)?
y) Yes
n) No
y/n> y
Fetching Shared Drive list...
Choose a number from below, or type in your own value
1 / Rclone Test
\ "xxxxxxxxxxxxxxxxxxxx"
2 / Rclone Test 2
\ "yyyyyyyyyyyyyyyyyyyy"
3 / Rclone Test 3
\ "zzzzzzzzzzzzzzzzzzzz"
Enter a Shared Drive ID> 1
Configuration complete.
Options:
- type: drive
- client_id:
- client_secret:
- token: {"AccessToken":"xxxx.x.xxxxx_xxxxxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","RefreshToken":"1/xxxxxxxxxxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxx","Expiry":"2014-03-16T13:57:58.955387075Z","Extra":null}
- team_drive: xxxxxxxxxxxxxxxxxxxx
Keep this "remote" remote?
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y
```
### \--fast-list
This remote supports `--fast-list` which allows you to use fewer transactions in exchange for more memory. See the [rclone docs](https://rclone.org/docs/#fast-list) for more details.
It does this by combining multiple `list` calls into a single API request.
This works by combining many `'%s' in parents` filters into one expression. To list the contents of directories a, b and c, the following requests will be send by the regular `List` function:
```
trashed=false and 'a' in parents
trashed=false and 'b' in parents
trashed=false and 'c' in parents
```
These can now be combined into a single request:
```
trashed=false and ('a' in parents or 'b' in parents or 'c' in parents)
```
The implementation of `ListR` will put up to 50 `parents` filters into one request. It will use the `--checkers` value to specify the number of requests to run in parallel.
In tests, these batch requests were up to 20x faster than the regular method. Running the following command against different sized folders gives:
```
rclone lsjson -vv -R --checkers=6 gdrive:folder
```
small folder (220 directories, 700 files):
- without `--fast-list`: 38s
- with `--fast-list`: 10s
large folder (10600 directories, 39000 files):
- without `--fast-list`: 22:05 min
- with `--fast-list`: 58s
### Modification times and hashes
Google drive stores modification times accurate to 1 ms.
Hash algorithms MD5, SHA1 and SHA256 are supported. Note, however, that a small fraction of files uploaded may not have SHA1 or SHA256 hashes especially if they were uploaded before 2018.
### Restricted filename characters
Only Invalid UTF-8 bytes will be [replaced](https://rclone.org/overview/#invalid-utf8), as they can't be used in JSON strings.
In contrast to other backends, `/` can also be used in names and `.` or `..` are valid names.
### Revisions
Google drive stores revisions of files. When you upload a change to an existing file to google drive using rclone it will create a new revision of that file.
Revisions follow the standard google policy which at time of writing was
- They are deleted after 30 days or 100 revisions (whatever comes first).
- They do not count towards a user storage quota.
### Deleting files
By default rclone will send all files to the trash when deleting files. If deleting them permanently is required then use the `--drive-use-trash=false` flag, or set the equivalent environment variable.
### Shortcuts
In March 2020 Google introduced a new feature in Google Drive called [drive shortcuts](https://support.google.com/drive/answer/9700156) ([API](https://developers.google.com/drive/api/v3/shortcuts)). These will (by September 2020) [replace the ability for files or folders to be in multiple folders at once](https://cloud.google.com/blog/products/g-suite/simplifying-google-drives-folder-structure-and-sharing-models).
Shortcuts are files that link to other files on Google Drive somewhat like a symlink in unix, except they point to the underlying file data (e.g. the inode in unix terms) so they don't break if the source is renamed or moved about.
By default rclone treats these as follows.
For shortcuts pointing to files:
- When listing a file shortcut appears as the destination file.
- When downloading the contents of the destination file is downloaded.
- When updating shortcut file with a non shortcut file, the shortcut is removed then a new file is uploaded in place of the shortcut.
- When server-side moving (renaming) the shortcut is renamed, not the destination file.
- When server-side copying the shortcut is copied, not the contents of the shortcut. (unless `--drive-copy-shortcut-content` is in use in which case the contents of the shortcut gets copied).
- When deleting the shortcut is deleted not the linked file.
- When setting the modification time, the modification time of the linked file will be set.
For shortcuts pointing to folders:
- When listing the shortcut appears as a folder and that folder will contain the contents of the linked folder appear (including any sub folders)
- When downloading the contents of the linked folder and sub contents are downloaded
- When uploading to a shortcut folder the file will be placed in the linked folder
- When server-side moving (renaming) the shortcut is renamed, not the destination folder
- When server-side copying the contents of the linked folder is copied, not the shortcut.
- When deleting with `rclone rmdir` or `rclone purge` the shortcut is deleted not the linked folder.
- **NB** When deleting with `rclone remove` or `rclone mount` the contents of the linked folder will be deleted.
The [rclone backend](https://rclone.org/commands/rclone_backend/) command can be used to create shortcuts.
Shortcuts can be completely ignored with the `--drive-skip-shortcuts` flag or the corresponding `skip_shortcuts` configuration setting.
If you have shortcuts that lead to an infinite recursion in your drive (e.g. a shortcut pointing to a parent folder), `skip_shortcuts` might be mandatory to be able to copy the drive.
### Emptying trash
If you wish to empty your trash you can use the `rclone cleanup remote:` command which will permanently delete all your trashed files. This command does not take any path arguments.
Note that Google Drive takes some time (minutes to days) to empty the trash even though the command returns within a few seconds. No output is echoed, so there will be no confirmation even using -v or -vv.
### Quota information
To view your current quota you can use the `rclone about remote:` command which will display your usage limit (quota), the usage in Google Drive, the size of all files in the Trash and the space used by other Google services such as Gmail. This command does not take any path arguments.
#### Import/Export of google documents
Google documents can be exported from and uploaded to Google Drive.
When rclone downloads a Google doc it chooses a format to download depending upon the `--drive-export-formats` setting. By default the export formats are `docx,xlsx,pptx,svg` which are a sensible default for an editable document.
When choosing a format, rclone runs down the list provided in order and chooses the first file format the doc can be exported as from the list. If the file can't be exported to a format on the formats list, then rclone will choose a format from the default list.
If you prefer an archive copy then you might use `--drive-export-formats pdf`, or if you prefer openoffice/libreoffice formats you might use `--drive-export-formats ods,odt,odp`.
Note that rclone adds the extension to the google doc, so if it is called `My Spreadsheet` on google docs, it will be exported as `My Spreadsheet.xlsx` or `My Spreadsheet.pdf` etc.
When importing files into Google Drive, rclone will convert all files with an extension in `--drive-import-formats` to their associated document type. rclone will not convert any files by default, since the conversion is lossy process.
The conversion must result in a file with the same extension when the `--drive-export-formats` rules are applied to the uploaded document.
Here are some examples for allowed and prohibited conversions.
| export-formats | import-formats | Upload Ext | Document Ext | Allowed |
|---|---|---|---|---|
| odt | odt | odt | odt | Yes |
| odt | docx,odt | odt | odt | Yes |
| | docx | docx | docx | Yes |
| | odt | odt | docx | No |
| odt,docx | docx,odt | docx | odt | No |
| docx,odt | docx,odt | docx | docx | Yes |
| docx,odt | docx,odt | odt | docx | No |
This limitation can be disabled by specifying `--drive-allow-import-name-change`. When using this flag, rclone can convert multiple files types resulting in the same document type at once, e.g. with `--drive-import-formats docx,odt,txt`, all files having these extension would result in a document represented as a docx file. This brings the additional risk of overwriting a document, if multiple files have the same stem. Many rclone operations will not handle this name change in any way. They assume an equal name when copying files and might copy the file again or delete them when the name changes.
Here are the possible export extensions with their corresponding mime types. Most of these can also be used for importing, but there more that are not listed here. Some of these additional ones might only be available when the operating system provides the correct MIME type entries.
This list can be changed by Google Drive at any time and might not represent the currently available conversions.
| Extension | Mime Type | Description |
|---|---|---|
| bmp | image/bmp | Windows Bitmap format |
| csv | text/csv | Standard CSV format for Spreadsheets |
| doc | application/msword | Classic Word file |
| docx | application/vnd.openxmlformats-officedocument.wordprocessingml.document | Microsoft Office Document |
| epub | application/epub+zip | E-book format |
| html | text/html | An HTML Document |
| jpg | image/jpeg | A JPEG Image File |
| json | application/vnd.google-apps.script+json | JSON Text Format for Google Apps scripts |
| md | text/markdown | Markdown Text Format |
| odp | application/vnd.oasis.opendocument.presentation | Openoffice Presentation |
| ods | application/vnd.oasis.opendocument.spreadsheet | Openoffice Spreadsheet |
| ods | application/x-vnd.oasis.opendocument.spreadsheet | Openoffice Spreadsheet |
| odt | application/vnd.oasis.opendocument.text | Openoffice Document |
| pdf | application/pdf | Adobe PDF Format |
| pjpeg | image/pjpeg | Progressive JPEG Image |
| png | image/png | PNG Image Format |
| pptx | application/vnd.openxmlformats-officedocument.presentationml.presentation | Microsoft Office Powerpoint |
| rtf | application/rtf | Rich Text Format |
| svg | image/svg+xml | Scalable Vector Graphics Format |
| tsv | text/tab-separated-values | Standard TSV format for spreadsheets |
| txt | text/plain | Plain Text |
| wmf | application/x-msmetafile | Windows Meta File |
| xls | application/vnd.ms-excel | Classic Excel file |
| xlsx | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet | Microsoft Office Spreadsheet |
| zip | application/zip | A ZIP file of HTML, Images CSS |
Google documents can also be exported as link files. These files will open a browser window for the Google Docs website of that document when opened. The link file extension has to be specified as a `--drive-export-formats` parameter. They will match all available Google Documents.
| Extension | Description | OS Support |
|---|---|---|
| desktop | freedesktop.org specified desktop entry | Linux |
| link.html | An HTML Document with a redirect | All |
| url | INI style link file | macOS, Windows |
| webloc | macOS specific XML format | macOS |
### Standard options
Here are the Standard options specific to drive (Google Drive).
#### \--drive-client-id
Google Application Client Id Setting your own is recommended. See <https://rclone.org/drive/#making-your-own-client-id> for how to create your own. If you leave this blank, it will use an internal key which is low performance.
Properties:
- Config: client\_id
- Env Var: RCLONE\_DRIVE\_CLIENT\_ID
- Type: string
- Required: false
#### \--drive-client-secret
OAuth Client Secret.
Leave blank normally.
Properties:
- Config: client\_secret
- Env Var: RCLONE\_DRIVE\_CLIENT\_SECRET
- Type: string
- Required: false
#### \--drive-scope
Comma separated list of scopes that rclone should use when requesting access from drive.
Properties:
- Config: scope
- Env Var: RCLONE\_DRIVE\_SCOPE
- Type: string
- Required: false
- Examples:
- "drive"
- Full access all files, excluding Application Data Folder.
- "drive.readonly"
- Read-only access to file metadata and file contents.
- "drive.file"
- Access to files created by rclone only.
- These are visible in the drive website.
- File authorization is revoked when the user deauthorizes the app.
- "drive.appfolder"
- Allows read and write access to the Application Data folder.
- This is not visible in the drive website.
- "drive.metadata.readonly"
- Allows read-only access to file metadata but
- does not allow any access to read or download file content.
#### \--drive-service-account-file
Service Account Credentials JSON file path.
Leave blank normally. Needed only if you want use SA instead of interactive login.
Leading `~` will be expanded in the file name as will environment variables such as `${RCLONE_CONFIG_DIR}`.
Properties:
- Config: service\_account\_file
- Env Var: RCLONE\_DRIVE\_SERVICE\_ACCOUNT\_FILE
- Type: string
- Required: false
#### \--drive-alternate-export
Deprecated: No longer needed.
Properties:
- Config: alternate\_export
- Env Var: RCLONE\_DRIVE\_ALTERNATE\_EXPORT
- Type: bool
- Default: false
### Advanced options
Here are the Advanced options specific to drive (Google Drive).
#### \--drive-token
OAuth Access Token as a JSON blob.
Properties:
- Config: token
- Env Var: RCLONE\_DRIVE\_TOKEN
- Type: string
- Required: false
#### \--drive-auth-url
Auth server URL.
Leave blank to use the provider defaults.
Properties:
- Config: auth\_url
- Env Var: RCLONE\_DRIVE\_AUTH\_URL
- Type: string
- Required: false
#### \--drive-token-url
Token server url.
Leave blank to use the provider defaults.
Properties:
- Config: token\_url
- Env Var: RCLONE\_DRIVE\_TOKEN\_URL
- Type: string
- Required: false
#### \--drive-client-credentials
Use client credentials OAuth flow.
This will use the OAUTH2 client Credentials Flow as described in RFC 6749.
Note that this option is NOT supported by all backends.
Properties:
- Config: client\_credentials
- Env Var: RCLONE\_DRIVE\_CLIENT\_CREDENTIALS
- Type: bool
- Default: false
#### \--drive-root-folder-id
ID of the root folder. Leave blank normally.
Fill in to access "Computers" folders (see docs), or for rclone to use a non root folder as its starting point.
Properties:
- Config: root\_folder\_id
- Env Var: RCLONE\_DRIVE\_ROOT\_FOLDER\_ID
- Type: string
- Required: false
#### \--drive-service-account-credentials
Service Account Credentials JSON blob.
Leave blank normally. Needed only if you want use SA instead of interactive login.
Properties:
- Config: service\_account\_credentials
- Env Var: RCLONE\_DRIVE\_SERVICE\_ACCOUNT\_CREDENTIALS
- Type: string
- Required: false
#### \--drive-team-drive
ID of the Shared Drive (Team Drive).
Properties:
- Config: team\_drive
- Env Var: RCLONE\_DRIVE\_TEAM\_DRIVE
- Type: string
- Required: false
#### \--drive-auth-owner-only
Only consider files owned by the authenticated user.
Properties:
- Config: auth\_owner\_only
- Env Var: RCLONE\_DRIVE\_AUTH\_OWNER\_ONLY
- Type: bool
- Default: false
#### \--drive-use-trash
Send files to the trash instead of deleting permanently.
Defaults to true, namely sending files to the trash. Use `--drive-use-trash=false` to delete files permanently instead.
Properties:
- Config: use\_trash
- Env Var: RCLONE\_DRIVE\_USE\_TRASH
- Type: bool
- Default: true
#### \--drive-copy-shortcut-content
Server side copy contents of shortcuts instead of the shortcut.
When doing server side copies, normally rclone will copy shortcuts as shortcuts.
If this flag is used then rclone will copy the contents of shortcuts rather than shortcuts themselves when doing server side copies.
Properties:
- Config: copy\_shortcut\_content
- Env Var: RCLONE\_DRIVE\_COPY\_SHORTCUT\_CONTENT
- Type: bool
- Default: false
#### \--drive-skip-gdocs
Skip google documents in all listings.
If given, gdocs practically become invisible to rclone.
Properties:
- Config: skip\_gdocs
- Env Var: RCLONE\_DRIVE\_SKIP\_GDOCS
- Type: bool
- Default: false
#### \--drive-show-all-gdocs
Show all Google Docs including non-exportable ones in listings.
If you try a server side copy on a Google Form without this flag, you will get this error:
```
No export formats found for "application/vnd.google-apps.form"
```
However adding this flag will allow the form to be server side copied.
Note that rclone doesn't add extensions to the Google Docs file names in this mode.
Do **not** use this flag when trying to download Google Docs - rclone will fail to download them.
Properties:
- Config: show\_all\_gdocs
- Env Var: RCLONE\_DRIVE\_SHOW\_ALL\_GDOCS
- Type: bool
- Default: false
#### \--drive-skip-checksum-gphotos
Skip checksums on Google photos and videos only.
Use this if you get checksum errors when transferring Google photos or videos.
Setting this flag will cause Google photos and videos to return a blank checksums.
Google photos are identified by being in the "photos" space.
Corrupted checksums are caused by Google modifying the image/video but not updating the checksum.
Properties:
- Config: skip\_checksum\_gphotos
- Env Var: RCLONE\_DRIVE\_SKIP\_CHECKSUM\_GPHOTOS
- Type: bool
- Default: false
#### \--drive-shared-with-me
Only show files that are shared with me.
Instructs rclone to operate on your "Shared with me" folder (where Google Drive lets you access the files and folders others have shared with you).
This works both with the "list" (lsd, lsl, etc.) and the "copy" commands (copy, sync, etc.), and with all other commands too.
Properties:
- Config: shared\_with\_me
- Env Var: RCLONE\_DRIVE\_SHARED\_WITH\_ME
- Type: bool
- Default: false
#### \--drive-trashed-only
Only show files that are in the trash.
This will show trashed files in their original directory structure.
Properties:
- Config: trashed\_only
- Env Var: RCLONE\_DRIVE\_TRASHED\_ONLY
- Type: bool
- Default: false
#### \--drive-starred-only
Only show files that are starred.
Properties:
- Config: starred\_only
- Env Var: RCLONE\_DRIVE\_STARRED\_ONLY
- Type: bool
- Default: false
#### \--drive-formats
Deprecated: See export\_formats.
Properties:
- Config: formats
- Env Var: RCLONE\_DRIVE\_FORMATS
- Type: string
- Required: false
#### \--drive-export-formats
Comma separated list of preferred formats for downloading Google docs.
Properties:
- Config: export\_formats
- Env Var: RCLONE\_DRIVE\_EXPORT\_FORMATS
- Type: string
- Default: "docx,xlsx,pptx,svg"
#### \--drive-import-formats
Comma separated list of preferred formats for uploading Google docs.
Properties:
- Config: import\_formats
- Env Var: RCLONE\_DRIVE\_IMPORT\_FORMATS
- Type: string
- Required: false
#### \--drive-allow-import-name-change
Allow the filetype to change when uploading Google docs.
E.g. file.doc to file.docx. This will confuse sync and reupload every time.
Properties:
- Config: allow\_import\_name\_change
- Env Var: RCLONE\_DRIVE\_ALLOW\_IMPORT\_NAME\_CHANGE
- Type: bool
- Default: false
#### \--drive-use-created-date
Use file created date instead of modified date.
Useful when downloading data and you want the creation date used in place of the last modified date.
**WARNING**: This flag may have some unexpected consequences.
When uploading to your drive all files will be overwritten unless they haven't been modified since their creation. And the inverse will occur while downloading. This side effect can be avoided by using the "--checksum" flag.
This feature was implemented to retain photos capture date as recorded by google photos. You will first need to check the "Create a Google Photos folder" option in your google drive settings. You can then copy or move the photos locally and use the date the image was taken (created) set as the modification date.
Properties:
- Config: use\_created\_date
- Env Var: RCLONE\_DRIVE\_USE\_CREATED\_DATE
- Type: bool
- Default: false
#### \--drive-use-shared-date
Use date file was shared instead of modified date.
Note that, as with "--drive-use-created-date", this flag may have unexpected consequences when uploading/downloading files.
If both this flag and "--drive-use-created-date" are set, the created date is used.
Properties:
- Config: use\_shared\_date
- Env Var: RCLONE\_DRIVE\_USE\_SHARED\_DATE
- Type: bool
- Default: false
#### \--drive-list-chunk
Size of listing chunk 100-1000, 0 to disable.
Properties:
- Config: list\_chunk
- Env Var: RCLONE\_DRIVE\_LIST\_CHUNK
- Type: int
- Default: 1000
#### \--drive-impersonate
Impersonate this user when using a service account.
Properties:
- Config: impersonate
- Env Var: RCLONE\_DRIVE\_IMPERSONATE
- Type: string
- Required: false
#### \--drive-upload-cutoff
Cutoff for switching to chunked upload.
Properties:
- Config: upload\_cutoff
- Env Var: RCLONE\_DRIVE\_UPLOAD\_CUTOFF
- Type: SizeSuffix
- Default: 8Mi
#### \--drive-chunk-size
Upload chunk size.
Must a power of 2 \>= 256k.
Making this larger will improve performance, but note that each chunk is buffered in memory one per transfer.
Reducing this will reduce memory usage but decrease performance.
Properties:
- Config: chunk\_size
- Env Var: RCLONE\_DRIVE\_CHUNK\_SIZE
- Type: SizeSuffix
- Default: 8Mi
#### \--drive-acknowledge-abuse
Set to allow files which return cannotDownloadAbusiveFile to be downloaded.
If downloading a file returns the error "This file has been identified as malware or spam and cannot be downloaded" with the error code "cannotDownloadAbusiveFile" then supply this flag to rclone to indicate you acknowledge the risks of downloading the file and rclone will download it anyway.
Note that if you are using service account it will need Manager permission (not Content Manager) to for this flag to work. If the SA does not have the right permission, Google will just ignore the flag.
Properties:
- Config: acknowledge\_abuse
- Env Var: RCLONE\_DRIVE\_ACKNOWLEDGE\_ABUSE
- Type: bool
- Default: false
#### \--drive-keep-revision-forever
Keep new head revision of each file forever.
Properties:
- Config: keep\_revision\_forever
- Env Var: RCLONE\_DRIVE\_KEEP\_REVISION\_FOREVER
- Type: bool
- Default: false
#### \--drive-size-as-quota
Show sizes as storage quota usage, not actual size.
Show the size of a file as the storage quota used. This is the current version plus any older versions that have been set to keep forever.
**WARNING**: This flag may have some unexpected consequences.
It is not recommended to set this flag in your config - the recommended usage is using the flag form --drive-size-as-quota when doing rclone ls/lsl/lsf/lsjson/etc only.
If you do use this flag for syncing (not recommended) then you will need to use --ignore size also.
Properties:
- Config: size\_as\_quota
- Env Var: RCLONE\_DRIVE\_SIZE\_AS\_QUOTA
- Type: bool
- Default: false
#### \--drive-v2-download-min-size
If Object's are greater, use drive v2 API to download.
Properties:
- Config: v2\_download\_min\_size
- Env Var: RCLONE\_DRIVE\_V2\_DOWNLOAD\_MIN\_SIZE
- Type: SizeSuffix
- Default: off
#### \--drive-pacer-min-sleep
Minimum time to sleep between API calls.
Properties:
- Config: pacer\_min\_sleep
- Env Var: RCLONE\_DRIVE\_PACER\_MIN\_SLEEP
- Type: Duration
- Default: 100ms
#### \--drive-pacer-burst
Number of API calls to allow without sleeping.
Properties:
- Config: pacer\_burst
- Env Var: RCLONE\_DRIVE\_PACER\_BURST
- Type: int
- Default: 100
#### \--drive-server-side-across-configs
Deprecated: use --server-side-across-configs instead.
Allow server-side operations (e.g. copy) to work across different drive configs.
This can be useful if you wish to do a server-side copy between two different Google drives. Note that this isn't enabled by default because it isn't easy to tell if it will work between any two configurations.
Properties:
- Config: server\_side\_across\_configs
- Env Var: RCLONE\_DRIVE\_SERVER\_SIDE\_ACROSS\_CONFIGS
- Type: bool
- Default: false
#### \--drive-disable-http2
Disable drive using http2.
There is currently an unsolved issue with the google drive backend and HTTP/2. HTTP/2 is therefore disabled by default for the drive backend but can be re-enabled here. When the issue is solved this flag will be removed.
See: <https://github.com/rclone/rclone/issues/3631>
Properties:
- Config: disable\_http2
- Env Var: RCLONE\_DRIVE\_DISABLE\_HTTP2
- Type: bool
- Default: true
#### \--drive-stop-on-upload-limit
Make upload limit errors be fatal.
At the time of writing it is only possible to upload 750 GiB of data to Google Drive a day (this is an undocumented limit). When this limit is reached Google Drive produces a slightly different error message. When this flag is set it causes these errors to be fatal. These will stop the in-progress sync.
Note that this detection is relying on error message strings which Google don't document so it may break in the future.
See: <https://github.com/rclone/rclone/issues/3857>
Properties:
- Config: stop\_on\_upload\_limit
- Env Var: RCLONE\_DRIVE\_STOP\_ON\_UPLOAD\_LIMIT
- Type: bool
- Default: false
#### \--drive-stop-on-download-limit
Make download limit errors be fatal.
At the time of writing it is only possible to download 10 TiB of data from Google Drive a day (this is an undocumented limit). When this limit is reached Google Drive produces a slightly different error message. When this flag is set it causes these errors to be fatal. These will stop the in-progress sync.
Note that this detection is relying on error message strings which Google don't document so it may break in the future.
Properties:
- Config: stop\_on\_download\_limit
- Env Var: RCLONE\_DRIVE\_STOP\_ON\_DOWNLOAD\_LIMIT
- Type: bool
- Default: false
#### \--drive-skip-shortcuts
If set skip shortcut files.
Normally rclone dereferences shortcut files making them appear as if they are the original file (see [the shortcuts section](https://rclone.org/drive/#shortcuts)). If this flag is set then rclone will ignore shortcut files completely.
Properties:
- Config: skip\_shortcuts
- Env Var: RCLONE\_DRIVE\_SKIP\_SHORTCUTS
- Type: bool
- Default: false
#### \--drive-skip-dangling-shortcuts
If set skip dangling shortcut files.
If this is set then rclone will not show any dangling shortcuts in listings.
Properties:
- Config: skip\_dangling\_shortcuts
- Env Var: RCLONE\_DRIVE\_SKIP\_DANGLING\_SHORTCUTS
- Type: bool
- Default: false
#### \--drive-resource-key
Resource key for accessing a link-shared file.
If you need to access files shared with a link like this
```
https://drive.google.com/drive/folders/XXX?resourcekey=YYY&usp=sharing
```
Then you will need to use the first part "XXX" as the "root\_folder\_id" and the second part "YYY" as the "resource\_key" otherwise you will get 404 not found errors when trying to access the directory.
See: <https://developers.google.com/drive/api/guides/resource-keys>
This resource key requirement only applies to a subset of old files.
Note also that opening the folder once in the web interface (with the user you've authenticated rclone with) seems to be enough so that the resource key is not needed.
Properties:
- Config: resource\_key
- Env Var: RCLONE\_DRIVE\_RESOURCE\_KEY
- Type: string
- Required: false
#### \--drive-fast-list-bug-fix
Work around a bug in Google Drive listing.
Normally rclone will work around a bug in Google Drive when using --fast-list (ListR) where the search "(A in parents) or (B in parents)" returns nothing sometimes. See \#3114, \#4289 and <https://issuetracker.google.com/issues/149522397>
Rclone detects this by finding no items in more than one directory when listing and retries them as lists of individual directories.
This means that if you have a lot of empty directories rclone will end up listing them all individually and this can take many more API calls.
This flag allows the work-around to be disabled. This is **not** recommended in normal use - only if you have a particular case you are having trouble with like many empty directories.
Properties:
- Config: fast\_list\_bug\_fix
- Env Var: RCLONE\_DRIVE\_FAST\_LIST\_BUG\_FIX
- Type: bool
- Default: true
#### \--drive-metadata-owner
Control whether owner should be read or written in metadata.
Owner is a standard part of the file metadata so is easy to read. But it isn't always desirable to set the owner from the metadata.
Note that you can't set the owner on Shared Drives, and that setting ownership will generate an email to the new owner (this can't be disabled), and you can't transfer ownership to someone outside your organization.
Properties:
- Config: metadata\_owner
- Env Var: RCLONE\_DRIVE\_METADATA\_OWNER
- Type: Bits
- Default: read
- Examples:
- "off"
- Do not read or write the value
- "read"
- Read the value only
- "write"
- Write the value only
- "failok"
- If writing fails log errors only, don't fail the transfer
- "read,write"
- Read and Write the value.
#### \--drive-metadata-permissions
Control whether permissions should be read or written in metadata.
Reading permissions metadata from files can be done quickly, but it isn't always desirable to set the permissions from the metadata.
Note that rclone drops any inherited permissions on Shared Drives and any owner permission on My Drives as these are duplicated in the owner metadata.
Properties:
- Config: metadata\_permissions
- Env Var: RCLONE\_DRIVE\_METADATA\_PERMISSIONS
- Type: Bits
- Default: off
- Examples:
- "off"
- Do not read or write the value
- "read"
- Read the value only
- "write"
- Write the value only
- "failok"
- If writing fails log errors only, don't fail the transfer
- "read,write"
- Read and Write the value.
#### \--drive-metadata-labels
Control whether labels should be read or written in metadata.
Reading labels metadata from files takes an extra API transaction and will slow down listings. It isn't always desirable to set the labels from the metadata.
The format of labels is documented in the drive API documentation at <https://developers.google.com/drive/api/reference/rest/v3/Label> - rclone just provides a JSON dump of this format.
When setting labels, the label and fields must already exist - rclone will not create them. This means that if you are transferring labels from two different accounts you will have to create the labels in advance and use the metadata mapper to translate the IDs between the two accounts.
Properties:
- Config: metadata\_labels
- Env Var: RCLONE\_DRIVE\_METADATA\_LABELS
- Type: Bits
- Default: off
- Examples:
- "off"
- Do not read or write the value
- "read"
- Read the value only
- "write"
- Write the value only
- "failok"
- If writing fails log errors only, don't fail the transfer
- "read,write"
- Read and Write the value.
#### \--drive-metadata-enforce-expansive-access
Whether the request should enforce expansive access rules.
From Feb 2026 this flag will be set by default so this flag can be used for testing before then.
See: <https://developers.google.com/workspace/drive/api/guides/limited-expansive-access>
Properties:
- Config: metadata\_enforce\_expansive\_access
- Env Var: RCLONE\_DRIVE\_METADATA\_ENFORCE\_EXPANSIVE\_ACCESS
- Type: bool
- Default: false
#### \--drive-encoding
The encoding for the backend.
See the [encoding section in the overview](https://rclone.org/overview/#encoding) for more info.
Properties:
- Config: encoding
- Env Var: RCLONE\_DRIVE\_ENCODING
- Type: Encoding
- Default: InvalidUtf8
#### \--drive-env-auth
Get IAM credentials from runtime (environment variables or instance meta data if no env vars).
Only applies if service\_account\_file and service\_account\_credentials is blank.
Properties:
- Config: env\_auth
- Env Var: RCLONE\_DRIVE\_ENV\_AUTH
- Type: bool
- Default: false
- Examples:
- "false"
- Enter credentials in the next step.
- "true"
- Get GCP IAM credentials from the environment (env vars or IAM).
#### \--drive-description
Description of the remote.
Properties:
- Config: description
- Env Var: RCLONE\_DRIVE\_DESCRIPTION
- Type: string
- Required: false
### Metadata
User metadata is stored in the properties field of the drive object.
Metadata is supported on files and directories.
Here are the possible system metadata items for the drive backend.
| Name | Help | Type | Example | Read Only |
|---|---|---|---|---|
| btime | Time of file birth (creation) with mS accuracy. Note that this is only writable on fresh uploads - it can't be written for updates. | RFC 3339 | 2006-01-02T15:04:05.999Z07:00 | N |
| content-type | The MIME type of the file. | string | text/plain | N |
| copy-requires-writer-permission | Whether the options to copy, print, or download this file, should be disabled for readers and commenters. | boolean | true | N |
| description | A short description of the file. | string | Contract for signing | N |
| folder-color-rgb | The color for a folder or a shortcut to a folder as an RGB hex string. | string | 881133 | N |
| labels | Labels attached to this file in a JSON dump of Googled drive format. Enable with --drive-metadata-labels. | JSON | \[\] | N |
| mtime | Time of last modification with mS accuracy. | RFC 3339 | 2006-01-02T15:04:05.999Z07:00 | N |
| owner | The owner of the file. Usually an email address. Enable with --drive-metadata-owner. | string | [user@example.com](mailto:user@example.com) | N |
| permissions | Permissions in a JSON dump of Google drive format. On shared drives these will only be present if they aren't inherited. Enable with --drive-metadata-permissions. | JSON | {} | N |
| starred | Whether the user has starred the file. | boolean | false | N |
| viewed-by-me | Whether the file has been viewed by this user. | boolean | true | **Y** |
| writers-can-share | Whether users with only writer permission can modify the file's permissions. Not populated and ignored when setting for items in shared drives. | boolean | false | N |
See the [metadata](https://rclone.org/docs/#metadata) docs for more info.
## Backend commands
Here are the commands specific to the drive backend.
Run them with:
```
rclone backend COMMAND remote:
```
The help below will explain what arguments each command takes.
See the [backend](https://rclone.org/commands/rclone_backend/) command for more info on how to pass options and arguments.
These can be run on a running backend using the rc command [backend/command](https://rclone.org/rc/#backend-command).
### get
Get command for fetching the drive config parameters.
```
rclone backend get remote: [options] [<arguments>+]
```
This is a get command which will be used to fetch the various drive config parameters.
Usage examples:
```
rclone backend get drive: [-o service_account_file] [-o chunk_size]
rclone rc backend/command command=get fs=drive: [-o service_account_file] [-o chunk_size]
```
Options:
- "chunk\_size": Show the current upload chunk size.
- "service\_account\_file": Show the current service account file.
### set
Set command for updating the drive config parameters.
```
rclone backend set remote: [options] [<arguments>+]
```
This is a set command which will be used to update the various drive config parameters.
Usage examples:
```
rclone backend set drive: [-o service_account_file=sa.json] [-o chunk_size=67108864]
rclone rc backend/command command=set fs=drive: [-o service_account_file=sa.json] [-o chunk_size=67108864]
```
Options:
- "chunk\_size": Update the current upload chunk size.
- "service\_account\_file": Update the current service account file.
### shortcut
Create shortcuts from files or directories.
```
rclone backend shortcut remote: [options] [<arguments>+]
```
This command creates shortcuts from files or directories.
Usage examples:
```
rclone backend shortcut drive: source_item destination_shortcut
rclone backend shortcut drive: source_item -o target=drive2: destination_shortcut
```
In the first example this creates a shortcut from the "source\_item" which can be a file or a directory to the "destination\_shortcut". The "source\_item" and the "destination\_shortcut" should be relative paths from "drive:"
In the second example this creates a shortcut from the "source\_item" relative to "drive:" to the "destination\_shortcut" relative to "drive2:". This may fail with a permission error if the user authenticated with "drive2:" can't read files from "drive:".
Options:
- "target": Optional target remote for the shortcut destination.
### drives
List the Shared Drives available to this account.
```
rclone backend drives remote: [options] [<arguments>+]
```
This command lists the Shared Drives (Team Drives) available to this account.
Usage example:
```
rclone backend [-o config] drives drive:
```
This will return a JSON list of objects like this:
```
[
{
"id": "0ABCDEF-01234567890",
"kind": "drive#teamDrive",
"name": "My Drive"
},
{
"id": "0ABCDEFabcdefghijkl",
"kind": "drive#teamDrive",
"name": "Test Drive"
}
]
```
With the -o config parameter it will output the list in a format suitable for adding to a config file to make aliases for all the drives found and a combined drive.
```
[My Drive]
type = alias
remote = drive,team_drive=0ABCDEF-01234567890,root_folder_id=:
[Test Drive]
type = alias
remote = drive,team_drive=0ABCDEFabcdefghijkl,root_folder_id=:
[AllDrives]
type = combine
upstreams = "My Drive=My Drive:" "Test Drive=Test Drive:"
```
Adding this to the rclone config file will cause those team drives to be accessible with the aliases shown. Any illegal characters will be substituted with "\_" and duplicate names will have numbers suffixed. It will also add a remote called AllDrives which shows all the shared drives combined into one directory tree.
### untrash
Untrash files and directories.
```
rclone backend untrash remote: [options] [<arguments>+]
```
This command untrashes all the files and directories in the directory passed in recursively.
Usage example:
```
rclone backend untrash drive:directory
rclone backend --interactive untrash drive:directory subdir
```
This takes an optional directory to trash which make this easier to use via the API.
Use the --interactive/-i or --dry-run flag to see what would be restored before restoring it.
Result:
```
{
"Untrashed": 17,
"Errors": 0
}
```
### copyid
Copy files by ID.
```
rclone backend copyid remote: [options] [<arguments>+]
```
This command copies files by ID.
Usage examples:
```
rclone backend copyid drive: ID path
rclone backend copyid drive: ID1 path1 ID2 path2
```
It copies the drive file with ID given to the path (an rclone path which will be passed internally to rclone copyto). The ID and path pairs can be repeated.
The path should end with a / to indicate copy the file as named to this directory. If it doesn't end with a / then the last path component will be used as the file name.
If the destination is a drive backend then server-side copying will be attempted if possible.
Use the --interactive/-i or --dry-run flag to see what would be copied before copying.
### moveid
Move files by ID.
```
rclone backend moveid remote: [options] [<arguments>+]
```
This command moves files by ID.
Usage examples:
```
rclone backend moveid drive: ID path
rclone backend moveid drive: ID1 path1 ID2 path2
```
It moves the drive file with ID given to the path (an rclone path which will be passed internally to rclone moveto).
The path should end with a / to indicate move the file as named to this directory. If it doesn't end with a / then the last path component will be used as the file name.
If the destination is a drive backend then server-side moving will be attempted if possible.
Use the --interactive/-i or --dry-run flag to see what would be moved beforehand.
### exportformats
Dump the export formats for debug purposes.
```
rclone backend exportformats remote: [options] [<arguments>+]
```
### importformats
Dump the import formats for debug purposes.
```
rclone backend importformats remote: [options] [<arguments>+]
```
### query
List files using Google Drive query language.
```
rclone backend query remote: [options] [<arguments>+]
```
This command lists files based on a query.
Usage example:
```
rclone backend query drive: query
```
The query syntax is documented at [Google Drive Search query terms and operators](https://developers.google.com/drive/api/guides/ref-search-terms).
For example:
```
rclone backend query drive: "'0ABc9DEFGHIJKLMNop0QRatUVW3X' in parents and name contains 'foo'"
```
If the query contains literal ' or \\ characters, these need to be escaped with \\ characters. "'" becomes "'" and "" becomes "\\", for example to match a file named "foo ' .txt":
```
rclone backend query drive: "name = 'foo \' \\\.txt'"
```
The result is a JSON array of matches, for example:
```
[
{
"createdTime": "2017-06-29T19:58:28.537Z",
"id": "0AxBe_CDEF4zkGHI4d0FjYko2QkD",
"md5Checksum": "68518d16be0c6fbfab918be61d658032",
"mimeType": "text/plain",
"modifiedTime": "2024-02-02T10:40:02.874Z",
"name": "foo ' \\.txt",
"parents": [
"0BxAe_BCDE4zkFGZpcWJGek0xbzC"
],
"resourceKey": "0-ABCDEFGHIXJQpIGqBJq3MC",
"sha1Checksum": "8f284fa768bfb4e45d076a579ab3905ab6bfa893",
"size": "311",
"webViewLink": "https://drive.google.com/file/d/0AxBe_CDEF4zkGHI4d0FjYko2QkD/view?usp=drivesdk\u0026resourcekey=0-ABCDEFGHIXJQpIGqBJq3MC"
}
]
```console
### rescue
Rescue or delete any orphaned files.
```console
rclone backend rescue remote: [options] [<arguments>+]
```
This command rescues or deletes any orphaned files or directories.
Sometimes files can get orphaned in Google Drive. This means that they are no longer in any folder in Google Drive.
This command finds those files and either rescues them to a directory you specify or deletes them.
This can be used in 3 ways.
First, list all orphaned files:
```
rclone backend rescue drive:
```
Second rescue all orphaned files to the directory indicated:
```
rclone backend rescue drive: "relative/path/to/rescue/directory"
```
E.g. to rescue all orphans to a directory called "Orphans" in the top level:
```
rclone backend rescue drive: Orphans
```
Third delete all orphaned files to the trash:
```
rclone backend rescue drive: -o delete
```
## Limitations
Drive has quite a lot of rate limiting. This causes rclone to be limited to transferring about 2 files per second only. Individual files may be transferred much faster at 100s of MiB/s but lots of small files can take a long time.
Server side copies are also subject to a separate rate limit. If you see User rate limit exceeded errors, wait at least 24 hours and retry. You can disable server-side copies with `--disable copy` to download and upload the files if you prefer.
### Limitations of Google Docs
Google docs will appear as size -1 in `rclone ls`, `rclone ncdu` etc, and as size 0 in anything which uses the VFS layer, e.g. `rclone mount` and `rclone serve`. When calculating directory totals, e.g. in `rclone size` and `rclone ncdu`, they will be counted in as empty files.
This is because rclone can't find out the size of the Google docs without downloading them.
Google docs will transfer correctly with `rclone sync`, `rclone copy` etc as rclone knows to ignore the size when doing the transfer.
However an unfortunate consequence of this is that you may not be able to download Google docs using `rclone mount`. If it doesn't work you will get a 0 sized file. If you try again the doc may gain its correct size and be downloadable. Whether it will work on not depends on the application accessing the mount and the OS you are running - experiment to find out if it does work for you\!
### Duplicated files
Sometimes, for no reason I've been able to track down, drive will duplicate a file that rclone uploads. Drive unlike all the other remotes can have duplicated files.
Duplicated files cause problems with the syncing and you will see messages in the log about duplicates.
Use `rclone dedupe` to fix duplicated files.
Note that this isn't just a problem with rclone, even Google Photos on Android duplicates files on drive sometimes.
### Rclone appears to be re-copying files it shouldn't
The most likely cause of this is the duplicated file issue above - run `rclone dedupe` and check your logs for duplicate object or directory messages.
This can also be caused by a delay/caching on google drive's end when comparing directory listings. Specifically with team drives used in combination with --fast-list. Files that were uploaded recently may not appear on the directory list sent to rclone when using --fast-list.
Waiting a moderate period of time between attempts (estimated to be approximately 1 hour) and/or not using --fast-list both seem to be effective in preventing the problem.
### SHA1 or SHA256 hashes may be missing
All files have MD5 hashes, but a small fraction of files uploaded may not have SHA1 or SHA256 hashes especially if they were uploaded before 2018.
## Making your own client\_id
When you use rclone with Google drive in its default configuration you are using rclone's client\_id. This is shared between all the rclone users. There is a global rate limit on the number of queries per second that each client\_id can do set by Google. rclone already has a high quota and I will continue to make sure it is high enough by contacting Google.
It is strongly recommended to use your own client ID as the default rclone ID is heavily used. If you have multiple services running, it is recommended to use an API key for each service. The default Google quota is 10 transactions per second so it is recommended to stay under that number as if you use more than that, it will cause rclone to rate limit and make things slower.
Here is how to create your own Google Drive client ID for rclone:
1. Log into the [Google API Console](https://console.developers.google.com/) with your Google account. It doesn't matter what Google account you use. (It need not be the same account as the Google Drive you want to access)
2. Select a project or create a new project.
3. Under "ENABLE APIS AND SERVICES" search for "Drive", and enable the "Google Drive API".
4. Click "Credentials" in the left-side panel (not "Create credentials", which opens the wizard).
5. If you already configured an "Oauth Consent Screen", then skip to the next step; if not, click on "CONFIGURE CONSENT SCREEN" button (near the top right corner of the right panel), then click "Get started". On the next screen, enter an "Application name" ("rclone" is OK); enter "User Support Email" (your own email is OK); Next, under Audience select "External". Next enter your own contact information, agree to terms and click "Create". You should now see rclone (or your project name) in a box in the top left of the screen.
(PS: if you are a GSuite user, you could also select "Internal" instead of "External" above, but this will restrict API use to Google Workspace users in your organisation).
You will also have to add [some scopes](https://developers.google.com/drive/api/guides/api-specific-auth), including
- `https://www.googleapis.com/auth/docs`
- `https://www.googleapis.com/auth/drive` in order to be able to edit, create and delete files with RClone.
- `https://www.googleapis.com/auth/drive.metadata.readonly` which you may also want to add.
To do this, click Data Access on the left side panel, click "add or remove scopes" and select the three above and press update or go to the "Manually add scopes" text box (scroll down) and enter "https://www.googleapis.com/auth/docs,https://www.googleapis.com/auth/drive,https://www.googleapis.com/auth/drive.metadata.readonly", press add to table then update.
You should now see the three scopes on your Data access page. Now press save at the bottom\!
6. After adding scopes, click Audience Scroll down and click "+ Add users". Add yourself as a test user and press save.
7. Go to Overview on the left panel, click "Create OAuth client". Choose an application type of "Desktop app" and click "Create". (the default name is fine)
8. It will show you a client ID and client secret. Make a note of these. (If you selected "External" at Step 5 continue to Step 9. If you chose "Internal" you don't need to publish and can skip straight to Step 10 but your destination drive must be part of the same Google Workspace.)
9. Go to "Audience" and then click "PUBLISH APP" button and confirm. Add yourself as a test user if you haven't already.
10. Provide the noted client ID and client secret to rclone.
Be aware that, due to the "enhanced security" recently introduced by Google, you are theoretically expected to "submit your app for verification" and then wait a few weeks(!) for their response; in practice, you can go right ahead and use the client ID and client secret with rclone, the only issue will be a very scary confirmation screen shown when you connect via your browser for rclone to be able to get its token-id (but as this only happens during the remote configuration, it's not such a big deal). Keeping the application in "Testing" will work as well, but the limitation is that any grants will expire after a week, which can be annoying to refresh constantly. If, for whatever reason, a short grant time is not a problem, then keeping the application in testing mode would also be sufficient.
(Thanks to @balazer on github for these instructions.)
Sometimes, creation of an OAuth consent in Google API Console fails due to an error message "The request failed because changes to one of the field of the resource is not supported". As a convenient workaround, the necessary Google Drive API key can be created on the [Python Quickstart](https://developers.google.com/drive/api/v3/quickstart/python) page. Just push the Enable the Drive API button to receive the Client ID and Secret. Note that it will automatically create a new project in the API Console.
Contents
- [Configuration](https://rclone.org/drive/#configuration)
- [Scopes](https://rclone.org/drive/#scopes)
- [Root folder ID](https://rclone.org/drive/#root-folder-id)
- [Service Account support](https://rclone.org/drive/#service-account-support)
- [Shared drives (team drives)](https://rclone.org/drive/#shared-drives-team-drives)
- [\--fast-list](https://rclone.org/drive/#fast-list)
- [Modification times and hashes](https://rclone.org/drive/#modification-times-and-hashes)
- [Restricted filename characters](https://rclone.org/drive/#restricted-filename-characters)
- [Revisions](https://rclone.org/drive/#revisions)
- [Deleting files](https://rclone.org/drive/#deleting-files)
- [Shortcuts](https://rclone.org/drive/#shortcuts)
- [Emptying trash](https://rclone.org/drive/#emptying-trash)
- [Quota information](https://rclone.org/drive/#quota-information)
- [Standard options](https://rclone.org/drive/#standard-options)
- [Advanced options](https://rclone.org/drive/#advanced-options)
- [Metadata](https://rclone.org/drive/#metadata)
- [Backend commands](https://rclone.org/drive/#backend-commands)
- [get](https://rclone.org/drive/#get)
- [set](https://rclone.org/drive/#set)
- [shortcut](https://rclone.org/drive/#shortcut)
- [drives](https://rclone.org/drive/#drives)
- [untrash](https://rclone.org/drive/#untrash)
- [copyid](https://rclone.org/drive/#copyid)
- [moveid](https://rclone.org/drive/#moveid)
- [exportformats](https://rclone.org/drive/#exportformats)
- [importformats](https://rclone.org/drive/#importformats)
- [query](https://rclone.org/drive/#query)
- [Limitations](https://rclone.org/drive/#limitations)
- [Limitations of Google Docs](https://rclone.org/drive/#limitations-of-google-docs)
- [Duplicated files](https://rclone.org/drive/#duplicated-files)
- [Rclone appears to be re-copying files it shouldn't](https://rclone.org/drive/#rclone-appears-to-be-re-copying-files-it-shouldn-t)
- [SHA1 or SHA256 hashes may be missing](https://rclone.org/drive/#sha1-or-sha256-hashes-may-be-missing)
- [Making your own client\_id](https://rclone.org/drive/#making-your-own-client-id)
Platinum Sponsor
[](https://internxt.com/specialoffer/rclone "Visit rclone's sponsor Internxt")
Gold Sponsor
[](https://www.idrive.com/e2/?refer=rclone "Visit rclone's sponsor IDrive e2")
Gold Sponsor
[](https://files.com/?utm_source=rclone&utm_medium=referral&utm_campaign=banner&utm_term=rclone "Start Your Free Trial Today")
Share and Enjoy
[Twitter](https://twitter.com/intent/tweet/?text=rclone%20-%20rsync%20for%20cloud%20storage%20from%20%40njcw&url=https%3A%2F%2Frclone.org)
[Facebook](https://facebook.com/sharer/sharer.php?u=https%3A%2F%2Frclone.org)
[Reddit](https://reddit.com/submit/?url=https%3A%2F%2Frclone.org&resubmit=true&title=rclone%20-%20rsync%20for%20cloud%20storage)
Links
[Rclone forum](https://forum.rclone.org/)
[GitHub project](https://github.com/rclone/rclone)
[Rclone Wiki](https://github.com/rclone/rclone/wiki)
[Sponsor](https://rclone.org/sponsor/)
[@njcw](https://twitter.com/njcw)
© [Nick Craig-Wood](https://www.craig-wood.com/nick/) 2014-2026
Source file [drive.md](https://github.com/rclone/rclone/blob/master/docs/content/drive.md) last updated [2026-01-30](https://github.com/rclone/rclone/commit/f42aa5a586cc95cfa7747e52837ae2a84832b792)
Uploaded with [rclone](https://rclone.org/). Built with [Hugo](https://gohugo.io/). Logo by [@andy23](https://twitter.com/andy23). Served by [Caddy](https://caddyserver.com/). Hosted at [Hetzner Cloud](https://hetzner.cloud/?ref=62WcciVmlzHt "Get €20 in cloud credits"). |
| Readable Markdown | added in v0.91 [Tier 1](https://rclone.org/tiers/ "Core: Production-grade, first-class")
Paths are specified as `drive:path`
Drive paths may be as deep as required, e.g. `drive:directory/subdirectory`.
## Configuration
The initial setup for drive involves getting a token from Google drive which you need to do in your browser. `rclone config` walks you through it.
Here is an example of how to make a remote called `remote`. First run:
```
rclone config
```
This will guide you through an interactive setup process:
```
No remotes found, make a new one?
n) New remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
n/r/c/s/q> n
name> remote
Type of storage to configure.
Choose a number from below, or type in your own value
[snip]
XX / Google Drive
\ "drive"
[snip]
Storage> drive
Google Application Client Id - leave blank normally.
client_id>
Google Application Client Secret - leave blank normally.
client_secret>
Scope that rclone should use when requesting access from drive.
Choose a number from below, or type in your own value
1 / Full access all files, excluding Application Data Folder.
\ "drive"
2 / Read-only access to file metadata and file contents.
\ "drive.readonly"
/ Access to files created by rclone only.
3 | These are visible in the drive website.
| File authorization is revoked when the user deauthorizes the app.
\ "drive.file"
/ Allows read and write access to the Application Data folder.
4 | This is not visible in the drive website.
\ "drive.appfolder"
/ Allows read-only access to file metadata but
5 | does not allow any access to read or download file content.
\ "drive.metadata.readonly"
scope> 1
Service Account Credentials JSON file path - needed only if you want use SA instead of interactive login.
service_account_file>
Remote config
Use web browser to automatically authenticate rclone with remote?
* Say Y if the machine running rclone has a web browser you can use
* Say N if running rclone on a (remote) machine without web browser access
If not sure try Y. If Y failed, try N.
y) Yes
n) No
y/n> y
If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth
Log in and authorize rclone for access
Waiting for code...
Got code
Configure this as a Shared Drive (Team Drive)?
y) Yes
n) No
y/n> n
Configuration complete.
Options:
type: drive
- client_id:
- client_secret:
- scope: drive
- root_folder_id:
- service_account_file:
- token: {"access_token":"XXX","token_type":"Bearer","refresh_token":"XXX","expiry":"2014-03-16T13:57:58.955387075Z"}
Keep this "remote" remote?
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y
```
See the [remote setup docs](https://rclone.org/remote_setup/) for how to set it up on a machine without an internet-connected web browser available.
Note that rclone runs a webserver on your local machine to collect the token as returned from Google if using web browser to automatically authenticate. This only runs from the moment it opens your browser to the moment you get back the verification code. This is on `http://127.0.0.1:53682/` and it may require you to unblock it temporarily if you are running a host firewall, or use manual mode.
You can then use it like this,
List directories in top level of your drive
```
rclone lsd remote:
```
List all the files in your drive
```
rclone ls remote:
```
To copy a local directory to a drive directory called backup
```
rclone copy /home/source remote:backup
```
### Scopes
Rclone allows you to select which scope you would like for rclone to use. This changes what type of token is granted to rclone. [The scopes are defined here](https://developers.google.com/drive/v3/web/about-auth).
A comma-separated list is allowed e.g. `drive.readonly,drive.file`.
The scope are
#### drive
This is the default scope and allows full access to all files, except for the Application Data Folder (see below).
Choose this one if you aren't sure.
#### drive.readonly
This allows read only access to all files. Files may be listed and downloaded but not uploaded, renamed or deleted.
#### drive.file
With this scope rclone can read/view/modify only those files and folders it creates.
So if you uploaded files to drive via the web interface (or any other means) they will not be visible to rclone.
This can be useful if you are using rclone to backup data and you want to be sure confidential data on your drive is not visible to rclone.
Files created with this scope are visible in the web interface.
#### drive.appfolder
This gives rclone its own private area to store files. Rclone will not be able to see any other files on your drive and you won't be able to see rclone's files from the web interface either.
#### drive.metadata.readonly
This allows read only access to file names only. It does not allow rclone to download or upload data, or rename or delete files or directories.
### Root folder ID
This option has been moved to the advanced section. You can set the `root_folder_id` for rclone. This is the directory (identified by its `Folder ID`) that rclone considers to be the root of your drive.
Normally you will leave this blank and rclone will determine the correct root to use itself.
However you can set this to restrict rclone to a specific folder hierarchy or to access data within the "Computers" tab on the drive web interface (where files from Google's Backup and Sync desktop program go).
In order to do this you will have to find the `Folder ID` of the directory you wish rclone to display. This will be the last segment of the URL when you open the relevant folder in the drive web interface.
So if the folder you want rclone to use has a URL which looks like `https://drive.google.com/drive/folders/1XyfxxxxxxxxxxxxxxxxxxxxxxxxxKHCh` in the browser, then you use `1XyfxxxxxxxxxxxxxxxxxxxxxxxxxKHCh` as the `root_folder_id` in the config.
**NB** folders under the "Computers" tab seem to be read only (drive gives a 500 error) when using rclone.
There doesn't appear to be an API to discover the folder IDs of the "Computers" tab - please contact us if you know otherwise\!
Note also that rclone can't access any data under the "Backups" tab on the google drive web interface yet.
### Service Account support
You can set up rclone with Google Drive in an unattended mode, i.e. not tied to a specific end-user Google account. This is useful when you want to synchronise files onto machines that don't have actively logged-in users, for example build machines.
To use a Service Account instead of OAuth2 token flow, enter the path to your Service Account credentials at the `service_account_file` prompt during `rclone config` and rclone won't use the browser based authentication flow. If you'd rather stuff the contents of the credentials file into the rclone config file, you can set `service_account_credentials` with the actual contents of the file instead, or set the equivalent environment variable.
#### Use case - Google Workspace account and individual Drive
Let's say that you are the administrator of a Google Workspace. The goal is to read or write data on an individual's Drive account, who IS a member of the domain. We'll call the domain \<example.com\>, and the user [foo@example.com](mailto:foo@example.com).
There's a few steps we need to go through to accomplish this:
##### 1\. Create a service account for example.com
- To create a service account and obtain its credentials, go to the [Google Developer Console](https://console.developers.google.com/).
- You must have a project - create one if you don't and make sure you are on the selected project.
- Then go to "IAM & admin" -\> "Service Accounts".
- Use the "Create Service Account" button. Fill in "Service account name" and "Service account ID" with something that identifies your client.
- Select "Create And Continue". Step 2 and 3 are optional.
- Click on the newly created service account
- Click "Keys" and then "Add Key" and then "Create new key"
- Choose type "JSON" and click create
- This will download a small JSON file that rclone will use for authentication.
If you ever need to remove access, press the "Delete service account key" button.
##### 2\. Allowing API access to example.com Google Drive
- Go to example.com's [Workspace Admin Console](https://admin.google.com/)
- Go into "Security" (or use the search bar)
- Select "Access and data control" and then "API controls"
- Click "Manage domain-wide delegation"
- Click "Add new"
- In the "Client ID" field enter the service account's "Client ID" - this can be found in the Developer Console under "IAM & Admin" -\> "Service Accounts", then "View Client ID" for the newly created service account. It is a ~21 character numerical string.
- In the next field, "OAuth Scopes", enter `https://www.googleapis.com/auth/drive` to grant read/write access to Google Drive specifically. You can also use `https://www.googleapis.com/auth/drive.readonly` for read only access with `--drive-scope=drive.readonly`.
- Click "Authorise"
##### 3\. Configure rclone, assuming a new install
```
rclone config
n/s/q> n # New
name>gdrive # Gdrive is an example name
Storage> # Type drive
client_id> # Can be left blank
client_secret> # Can be left blank
scope> # Select the scope use used in step 2
root_folder_id> # Can be left blank
service_account_file> /home/foo/myJSONfile.json # Path to the JSON file you downloaded in step 1.
y/n> # Auto config, n
```
##### 4\. Verify that it's working
- `rclone -v --drive-impersonate foo@example.com lsf gdrive:backup`
- The arguments do:
- `-v` - verbose logging
- `--drive-impersonate foo@example.com` - this is what does the magic, pretending to be user foo.
- `lsf` - list files in a parsing friendly way
- `gdrive:backup` - use the remote called gdrive, work in the folder named backup.
Note: in case you configured a specific root folder on gdrive and rclone is unable to access the contents of that folder when using `--drive-impersonate`, do this instead:
- in the gdrive web interface, share your root folder with the user/email of the new Service Account you created/selected at step 1
- use rclone without specifying the `--drive-impersonate` option, like this: `rclone -v lsf gdrive:backup`
### Shared drives (team drives)
If you want to configure the remote to point to a Google Shared Drive (previously known as Team Drives) then answer `y` to the question `Configure this as a Shared Drive (Team Drive)?`.
This will fetch the list of Shared Drives from google and allow you to configure which one you want to use. You can also type in a Shared Drive ID if you prefer.
For example:
```
Configure this as a Shared Drive (Team Drive)?
y) Yes
n) No
y/n> y
Fetching Shared Drive list...
Choose a number from below, or type in your own value
1 / Rclone Test
\ "xxxxxxxxxxxxxxxxxxxx"
2 / Rclone Test 2
\ "yyyyyyyyyyyyyyyyyyyy"
3 / Rclone Test 3
\ "zzzzzzzzzzzzzzzzzzzz"
Enter a Shared Drive ID> 1
Configuration complete.
Options:
- type: drive
- client_id:
- client_secret:
- token: {"AccessToken":"xxxx.x.xxxxx_xxxxxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","RefreshToken":"1/xxxxxxxxxxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxx","Expiry":"2014-03-16T13:57:58.955387075Z","Extra":null}
- team_drive: xxxxxxxxxxxxxxxxxxxx
Keep this "remote" remote?
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y
```
### \--fast-list
This remote supports `--fast-list` which allows you to use fewer transactions in exchange for more memory. See the [rclone docs](https://rclone.org/docs/#fast-list) for more details.
It does this by combining multiple `list` calls into a single API request.
This works by combining many `'%s' in parents` filters into one expression. To list the contents of directories a, b and c, the following requests will be send by the regular `List` function:
```
trashed=false and 'a' in parents
trashed=false and 'b' in parents
trashed=false and 'c' in parents
```
These can now be combined into a single request:
```
trashed=false and ('a' in parents or 'b' in parents or 'c' in parents)
```
The implementation of `ListR` will put up to 50 `parents` filters into one request. It will use the `--checkers` value to specify the number of requests to run in parallel.
In tests, these batch requests were up to 20x faster than the regular method. Running the following command against different sized folders gives:
```
rclone lsjson -vv -R --checkers=6 gdrive:folder
```
small folder (220 directories, 700 files):
- without `--fast-list`: 38s
- with `--fast-list`: 10s
large folder (10600 directories, 39000 files):
- without `--fast-list`: 22:05 min
- with `--fast-list`: 58s
### Modification times and hashes
Google drive stores modification times accurate to 1 ms.
Hash algorithms MD5, SHA1 and SHA256 are supported. Note, however, that a small fraction of files uploaded may not have SHA1 or SHA256 hashes especially if they were uploaded before 2018.
### Restricted filename characters
Only Invalid UTF-8 bytes will be [replaced](https://rclone.org/overview/#invalid-utf8), as they can't be used in JSON strings.
In contrast to other backends, `/` can also be used in names and `.` or `..` are valid names.
### Revisions
Google drive stores revisions of files. When you upload a change to an existing file to google drive using rclone it will create a new revision of that file.
Revisions follow the standard google policy which at time of writing was
- They are deleted after 30 days or 100 revisions (whatever comes first).
- They do not count towards a user storage quota.
### Deleting files
By default rclone will send all files to the trash when deleting files. If deleting them permanently is required then use the `--drive-use-trash=false` flag, or set the equivalent environment variable.
### Shortcuts
In March 2020 Google introduced a new feature in Google Drive called [drive shortcuts](https://support.google.com/drive/answer/9700156) ([API](https://developers.google.com/drive/api/v3/shortcuts)). These will (by September 2020) [replace the ability for files or folders to be in multiple folders at once](https://cloud.google.com/blog/products/g-suite/simplifying-google-drives-folder-structure-and-sharing-models).
Shortcuts are files that link to other files on Google Drive somewhat like a symlink in unix, except they point to the underlying file data (e.g. the inode in unix terms) so they don't break if the source is renamed or moved about.
By default rclone treats these as follows.
For shortcuts pointing to files:
- When listing a file shortcut appears as the destination file.
- When downloading the contents of the destination file is downloaded.
- When updating shortcut file with a non shortcut file, the shortcut is removed then a new file is uploaded in place of the shortcut.
- When server-side moving (renaming) the shortcut is renamed, not the destination file.
- When server-side copying the shortcut is copied, not the contents of the shortcut. (unless `--drive-copy-shortcut-content` is in use in which case the contents of the shortcut gets copied).
- When deleting the shortcut is deleted not the linked file.
- When setting the modification time, the modification time of the linked file will be set.
For shortcuts pointing to folders:
- When listing the shortcut appears as a folder and that folder will contain the contents of the linked folder appear (including any sub folders)
- When downloading the contents of the linked folder and sub contents are downloaded
- When uploading to a shortcut folder the file will be placed in the linked folder
- When server-side moving (renaming) the shortcut is renamed, not the destination folder
- When server-side copying the contents of the linked folder is copied, not the shortcut.
- When deleting with `rclone rmdir` or `rclone purge` the shortcut is deleted not the linked folder.
- **NB** When deleting with `rclone remove` or `rclone mount` the contents of the linked folder will be deleted.
The [rclone backend](https://rclone.org/commands/rclone_backend/) command can be used to create shortcuts.
Shortcuts can be completely ignored with the `--drive-skip-shortcuts` flag or the corresponding `skip_shortcuts` configuration setting.
If you have shortcuts that lead to an infinite recursion in your drive (e.g. a shortcut pointing to a parent folder), `skip_shortcuts` might be mandatory to be able to copy the drive.
### Emptying trash
If you wish to empty your trash you can use the `rclone cleanup remote:` command which will permanently delete all your trashed files. This command does not take any path arguments.
Note that Google Drive takes some time (minutes to days) to empty the trash even though the command returns within a few seconds. No output is echoed, so there will be no confirmation even using -v or -vv.
### Quota information
To view your current quota you can use the `rclone about remote:` command which will display your usage limit (quota), the usage in Google Drive, the size of all files in the Trash and the space used by other Google services such as Gmail. This command does not take any path arguments.
#### Import/Export of google documents
Google documents can be exported from and uploaded to Google Drive.
When rclone downloads a Google doc it chooses a format to download depending upon the `--drive-export-formats` setting. By default the export formats are `docx,xlsx,pptx,svg` which are a sensible default for an editable document.
When choosing a format, rclone runs down the list provided in order and chooses the first file format the doc can be exported as from the list. If the file can't be exported to a format on the formats list, then rclone will choose a format from the default list.
If you prefer an archive copy then you might use `--drive-export-formats pdf`, or if you prefer openoffice/libreoffice formats you might use `--drive-export-formats ods,odt,odp`.
Note that rclone adds the extension to the google doc, so if it is called `My Spreadsheet` on google docs, it will be exported as `My Spreadsheet.xlsx` or `My Spreadsheet.pdf` etc.
When importing files into Google Drive, rclone will convert all files with an extension in `--drive-import-formats` to their associated document type. rclone will not convert any files by default, since the conversion is lossy process.
The conversion must result in a file with the same extension when the `--drive-export-formats` rules are applied to the uploaded document.
Here are some examples for allowed and prohibited conversions.
| export-formats | import-formats | Upload Ext | Document Ext | Allowed |
|---|---|---|---|---|
| odt | odt | odt | odt | Yes |
| odt | docx,odt | odt | odt | Yes |
| | docx | docx | docx | Yes |
| | odt | odt | docx | No |
| odt,docx | docx,odt | docx | odt | No |
| docx,odt | docx,odt | docx | docx | Yes |
| docx,odt | docx,odt | odt | docx | No |
This limitation can be disabled by specifying `--drive-allow-import-name-change`. When using this flag, rclone can convert multiple files types resulting in the same document type at once, e.g. with `--drive-import-formats docx,odt,txt`, all files having these extension would result in a document represented as a docx file. This brings the additional risk of overwriting a document, if multiple files have the same stem. Many rclone operations will not handle this name change in any way. They assume an equal name when copying files and might copy the file again or delete them when the name changes.
Here are the possible export extensions with their corresponding mime types. Most of these can also be used for importing, but there more that are not listed here. Some of these additional ones might only be available when the operating system provides the correct MIME type entries.
This list can be changed by Google Drive at any time and might not represent the currently available conversions.
| Extension | Mime Type | Description |
|---|---|---|
| bmp | image/bmp | Windows Bitmap format |
| csv | text/csv | Standard CSV format for Spreadsheets |
| doc | application/msword | Classic Word file |
| docx | application/vnd.openxmlformats-officedocument.wordprocessingml.document | Microsoft Office Document |
| epub | application/epub+zip | E-book format |
| html | text/html | An HTML Document |
| jpg | image/jpeg | A JPEG Image File |
| json | application/vnd.google-apps.script+json | JSON Text Format for Google Apps scripts |
| md | text/markdown | Markdown Text Format |
| odp | application/vnd.oasis.opendocument.presentation | Openoffice Presentation |
| ods | application/vnd.oasis.opendocument.spreadsheet | Openoffice Spreadsheet |
| ods | application/x-vnd.oasis.opendocument.spreadsheet | Openoffice Spreadsheet |
| odt | application/vnd.oasis.opendocument.text | Openoffice Document |
| pdf | application/pdf | Adobe PDF Format |
| pjpeg | image/pjpeg | Progressive JPEG Image |
| png | image/png | PNG Image Format |
| pptx | application/vnd.openxmlformats-officedocument.presentationml.presentation | Microsoft Office Powerpoint |
| rtf | application/rtf | Rich Text Format |
| svg | image/svg+xml | Scalable Vector Graphics Format |
| tsv | text/tab-separated-values | Standard TSV format for spreadsheets |
| txt | text/plain | Plain Text |
| wmf | application/x-msmetafile | Windows Meta File |
| xls | application/vnd.ms-excel | Classic Excel file |
| xlsx | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet | Microsoft Office Spreadsheet |
| zip | application/zip | A ZIP file of HTML, Images CSS |
Google documents can also be exported as link files. These files will open a browser window for the Google Docs website of that document when opened. The link file extension has to be specified as a `--drive-export-formats` parameter. They will match all available Google Documents.
| Extension | Description | OS Support |
|---|---|---|
| desktop | freedesktop.org specified desktop entry | Linux |
| link.html | An HTML Document with a redirect | All |
| url | INI style link file | macOS, Windows |
| webloc | macOS specific XML format | macOS |
### Standard options
Here are the Standard options specific to drive (Google Drive).
#### \--drive-client-id
Google Application Client Id Setting your own is recommended. See <https://rclone.org/drive/#making-your-own-client-id> for how to create your own. If you leave this blank, it will use an internal key which is low performance.
Properties:
- Config: client\_id
- Env Var: RCLONE\_DRIVE\_CLIENT\_ID
- Type: string
- Required: false
#### \--drive-client-secret
OAuth Client Secret.
Leave blank normally.
Properties:
- Config: client\_secret
- Env Var: RCLONE\_DRIVE\_CLIENT\_SECRET
- Type: string
- Required: false
#### \--drive-scope
Comma separated list of scopes that rclone should use when requesting access from drive.
Properties:
- Config: scope
- Env Var: RCLONE\_DRIVE\_SCOPE
- Type: string
- Required: false
- Examples:
- "drive"
- Full access all files, excluding Application Data Folder.
- "drive.readonly"
- Read-only access to file metadata and file contents.
- "drive.file"
- Access to files created by rclone only.
- These are visible in the drive website.
- File authorization is revoked when the user deauthorizes the app.
- "drive.appfolder"
- Allows read and write access to the Application Data folder.
- This is not visible in the drive website.
- "drive.metadata.readonly"
- Allows read-only access to file metadata but
- does not allow any access to read or download file content.
#### \--drive-service-account-file
Service Account Credentials JSON file path.
Leave blank normally. Needed only if you want use SA instead of interactive login.
Leading `~` will be expanded in the file name as will environment variables such as `${RCLONE_CONFIG_DIR}`.
Properties:
- Config: service\_account\_file
- Env Var: RCLONE\_DRIVE\_SERVICE\_ACCOUNT\_FILE
- Type: string
- Required: false
#### \--drive-alternate-export
Deprecated: No longer needed.
Properties:
- Config: alternate\_export
- Env Var: RCLONE\_DRIVE\_ALTERNATE\_EXPORT
- Type: bool
- Default: false
### Advanced options
Here are the Advanced options specific to drive (Google Drive).
#### \--drive-token
OAuth Access Token as a JSON blob.
Properties:
- Config: token
- Env Var: RCLONE\_DRIVE\_TOKEN
- Type: string
- Required: false
#### \--drive-auth-url
Auth server URL.
Leave blank to use the provider defaults.
Properties:
- Config: auth\_url
- Env Var: RCLONE\_DRIVE\_AUTH\_URL
- Type: string
- Required: false
#### \--drive-token-url
Token server url.
Leave blank to use the provider defaults.
Properties:
- Config: token\_url
- Env Var: RCLONE\_DRIVE\_TOKEN\_URL
- Type: string
- Required: false
#### \--drive-client-credentials
Use client credentials OAuth flow.
This will use the OAUTH2 client Credentials Flow as described in RFC 6749.
Note that this option is NOT supported by all backends.
Properties:
- Config: client\_credentials
- Env Var: RCLONE\_DRIVE\_CLIENT\_CREDENTIALS
- Type: bool
- Default: false
#### \--drive-root-folder-id
ID of the root folder. Leave blank normally.
Fill in to access "Computers" folders (see docs), or for rclone to use a non root folder as its starting point.
Properties:
- Config: root\_folder\_id
- Env Var: RCLONE\_DRIVE\_ROOT\_FOLDER\_ID
- Type: string
- Required: false
#### \--drive-service-account-credentials
Service Account Credentials JSON blob.
Leave blank normally. Needed only if you want use SA instead of interactive login.
Properties:
- Config: service\_account\_credentials
- Env Var: RCLONE\_DRIVE\_SERVICE\_ACCOUNT\_CREDENTIALS
- Type: string
- Required: false
#### \--drive-team-drive
ID of the Shared Drive (Team Drive).
Properties:
- Config: team\_drive
- Env Var: RCLONE\_DRIVE\_TEAM\_DRIVE
- Type: string
- Required: false
#### \--drive-auth-owner-only
Only consider files owned by the authenticated user.
Properties:
- Config: auth\_owner\_only
- Env Var: RCLONE\_DRIVE\_AUTH\_OWNER\_ONLY
- Type: bool
- Default: false
#### \--drive-use-trash
Send files to the trash instead of deleting permanently.
Defaults to true, namely sending files to the trash. Use `--drive-use-trash=false` to delete files permanently instead.
Properties:
- Config: use\_trash
- Env Var: RCLONE\_DRIVE\_USE\_TRASH
- Type: bool
- Default: true
#### \--drive-copy-shortcut-content
Server side copy contents of shortcuts instead of the shortcut.
When doing server side copies, normally rclone will copy shortcuts as shortcuts.
If this flag is used then rclone will copy the contents of shortcuts rather than shortcuts themselves when doing server side copies.
Properties:
- Config: copy\_shortcut\_content
- Env Var: RCLONE\_DRIVE\_COPY\_SHORTCUT\_CONTENT
- Type: bool
- Default: false
#### \--drive-skip-gdocs
Skip google documents in all listings.
If given, gdocs practically become invisible to rclone.
Properties:
- Config: skip\_gdocs
- Env Var: RCLONE\_DRIVE\_SKIP\_GDOCS
- Type: bool
- Default: false
#### \--drive-show-all-gdocs
Show all Google Docs including non-exportable ones in listings.
If you try a server side copy on a Google Form without this flag, you will get this error:
```
No export formats found for "application/vnd.google-apps.form"
```
However adding this flag will allow the form to be server side copied.
Note that rclone doesn't add extensions to the Google Docs file names in this mode.
Do **not** use this flag when trying to download Google Docs - rclone will fail to download them.
Properties:
- Config: show\_all\_gdocs
- Env Var: RCLONE\_DRIVE\_SHOW\_ALL\_GDOCS
- Type: bool
- Default: false
#### \--drive-skip-checksum-gphotos
Skip checksums on Google photos and videos only.
Use this if you get checksum errors when transferring Google photos or videos.
Setting this flag will cause Google photos and videos to return a blank checksums.
Google photos are identified by being in the "photos" space.
Corrupted checksums are caused by Google modifying the image/video but not updating the checksum.
Properties:
- Config: skip\_checksum\_gphotos
- Env Var: RCLONE\_DRIVE\_SKIP\_CHECKSUM\_GPHOTOS
- Type: bool
- Default: false
#### \--drive-shared-with-me
Only show files that are shared with me.
Instructs rclone to operate on your "Shared with me" folder (where Google Drive lets you access the files and folders others have shared with you).
This works both with the "list" (lsd, lsl, etc.) and the "copy" commands (copy, sync, etc.), and with all other commands too.
Properties:
- Config: shared\_with\_me
- Env Var: RCLONE\_DRIVE\_SHARED\_WITH\_ME
- Type: bool
- Default: false
#### \--drive-trashed-only
Only show files that are in the trash.
This will show trashed files in their original directory structure.
Properties:
- Config: trashed\_only
- Env Var: RCLONE\_DRIVE\_TRASHED\_ONLY
- Type: bool
- Default: false
#### \--drive-starred-only
Only show files that are starred.
Properties:
- Config: starred\_only
- Env Var: RCLONE\_DRIVE\_STARRED\_ONLY
- Type: bool
- Default: false
#### \--drive-formats
Deprecated: See export\_formats.
Properties:
- Config: formats
- Env Var: RCLONE\_DRIVE\_FORMATS
- Type: string
- Required: false
#### \--drive-export-formats
Comma separated list of preferred formats for downloading Google docs.
Properties:
- Config: export\_formats
- Env Var: RCLONE\_DRIVE\_EXPORT\_FORMATS
- Type: string
- Default: "docx,xlsx,pptx,svg"
#### \--drive-import-formats
Comma separated list of preferred formats for uploading Google docs.
Properties:
- Config: import\_formats
- Env Var: RCLONE\_DRIVE\_IMPORT\_FORMATS
- Type: string
- Required: false
#### \--drive-allow-import-name-change
Allow the filetype to change when uploading Google docs.
E.g. file.doc to file.docx. This will confuse sync and reupload every time.
Properties:
- Config: allow\_import\_name\_change
- Env Var: RCLONE\_DRIVE\_ALLOW\_IMPORT\_NAME\_CHANGE
- Type: bool
- Default: false
#### \--drive-use-created-date
Use file created date instead of modified date.
Useful when downloading data and you want the creation date used in place of the last modified date.
**WARNING**: This flag may have some unexpected consequences.
When uploading to your drive all files will be overwritten unless they haven't been modified since their creation. And the inverse will occur while downloading. This side effect can be avoided by using the "--checksum" flag.
This feature was implemented to retain photos capture date as recorded by google photos. You will first need to check the "Create a Google Photos folder" option in your google drive settings. You can then copy or move the photos locally and use the date the image was taken (created) set as the modification date.
Properties:
- Config: use\_created\_date
- Env Var: RCLONE\_DRIVE\_USE\_CREATED\_DATE
- Type: bool
- Default: false
#### \--drive-use-shared-date
Use date file was shared instead of modified date.
Note that, as with "--drive-use-created-date", this flag may have unexpected consequences when uploading/downloading files.
If both this flag and "--drive-use-created-date" are set, the created date is used.
Properties:
- Config: use\_shared\_date
- Env Var: RCLONE\_DRIVE\_USE\_SHARED\_DATE
- Type: bool
- Default: false
#### \--drive-list-chunk
Size of listing chunk 100-1000, 0 to disable.
Properties:
- Config: list\_chunk
- Env Var: RCLONE\_DRIVE\_LIST\_CHUNK
- Type: int
- Default: 1000
#### \--drive-impersonate
Impersonate this user when using a service account.
Properties:
- Config: impersonate
- Env Var: RCLONE\_DRIVE\_IMPERSONATE
- Type: string
- Required: false
#### \--drive-upload-cutoff
Cutoff for switching to chunked upload.
Properties:
- Config: upload\_cutoff
- Env Var: RCLONE\_DRIVE\_UPLOAD\_CUTOFF
- Type: SizeSuffix
- Default: 8Mi
#### \--drive-chunk-size
Upload chunk size.
Must a power of 2 \>= 256k.
Making this larger will improve performance, but note that each chunk is buffered in memory one per transfer.
Reducing this will reduce memory usage but decrease performance.
Properties:
- Config: chunk\_size
- Env Var: RCLONE\_DRIVE\_CHUNK\_SIZE
- Type: SizeSuffix
- Default: 8Mi
#### \--drive-acknowledge-abuse
Set to allow files which return cannotDownloadAbusiveFile to be downloaded.
If downloading a file returns the error "This file has been identified as malware or spam and cannot be downloaded" with the error code "cannotDownloadAbusiveFile" then supply this flag to rclone to indicate you acknowledge the risks of downloading the file and rclone will download it anyway.
Note that if you are using service account it will need Manager permission (not Content Manager) to for this flag to work. If the SA does not have the right permission, Google will just ignore the flag.
Properties:
- Config: acknowledge\_abuse
- Env Var: RCLONE\_DRIVE\_ACKNOWLEDGE\_ABUSE
- Type: bool
- Default: false
#### \--drive-keep-revision-forever
Keep new head revision of each file forever.
Properties:
- Config: keep\_revision\_forever
- Env Var: RCLONE\_DRIVE\_KEEP\_REVISION\_FOREVER
- Type: bool
- Default: false
#### \--drive-size-as-quota
Show sizes as storage quota usage, not actual size.
Show the size of a file as the storage quota used. This is the current version plus any older versions that have been set to keep forever.
**WARNING**: This flag may have some unexpected consequences.
It is not recommended to set this flag in your config - the recommended usage is using the flag form --drive-size-as-quota when doing rclone ls/lsl/lsf/lsjson/etc only.
If you do use this flag for syncing (not recommended) then you will need to use --ignore size also.
Properties:
- Config: size\_as\_quota
- Env Var: RCLONE\_DRIVE\_SIZE\_AS\_QUOTA
- Type: bool
- Default: false
#### \--drive-v2-download-min-size
If Object's are greater, use drive v2 API to download.
Properties:
- Config: v2\_download\_min\_size
- Env Var: RCLONE\_DRIVE\_V2\_DOWNLOAD\_MIN\_SIZE
- Type: SizeSuffix
- Default: off
#### \--drive-pacer-min-sleep
Minimum time to sleep between API calls.
Properties:
- Config: pacer\_min\_sleep
- Env Var: RCLONE\_DRIVE\_PACER\_MIN\_SLEEP
- Type: Duration
- Default: 100ms
#### \--drive-pacer-burst
Number of API calls to allow without sleeping.
Properties:
- Config: pacer\_burst
- Env Var: RCLONE\_DRIVE\_PACER\_BURST
- Type: int
- Default: 100
#### \--drive-server-side-across-configs
Deprecated: use --server-side-across-configs instead.
Allow server-side operations (e.g. copy) to work across different drive configs.
This can be useful if you wish to do a server-side copy between two different Google drives. Note that this isn't enabled by default because it isn't easy to tell if it will work between any two configurations.
Properties:
- Config: server\_side\_across\_configs
- Env Var: RCLONE\_DRIVE\_SERVER\_SIDE\_ACROSS\_CONFIGS
- Type: bool
- Default: false
#### \--drive-disable-http2
Disable drive using http2.
There is currently an unsolved issue with the google drive backend and HTTP/2. HTTP/2 is therefore disabled by default for the drive backend but can be re-enabled here. When the issue is solved this flag will be removed.
See: <https://github.com/rclone/rclone/issues/3631>
Properties:
- Config: disable\_http2
- Env Var: RCLONE\_DRIVE\_DISABLE\_HTTP2
- Type: bool
- Default: true
#### \--drive-stop-on-upload-limit
Make upload limit errors be fatal.
At the time of writing it is only possible to upload 750 GiB of data to Google Drive a day (this is an undocumented limit). When this limit is reached Google Drive produces a slightly different error message. When this flag is set it causes these errors to be fatal. These will stop the in-progress sync.
Note that this detection is relying on error message strings which Google don't document so it may break in the future.
See: <https://github.com/rclone/rclone/issues/3857>
Properties:
- Config: stop\_on\_upload\_limit
- Env Var: RCLONE\_DRIVE\_STOP\_ON\_UPLOAD\_LIMIT
- Type: bool
- Default: false
#### \--drive-stop-on-download-limit
Make download limit errors be fatal.
At the time of writing it is only possible to download 10 TiB of data from Google Drive a day (this is an undocumented limit). When this limit is reached Google Drive produces a slightly different error message. When this flag is set it causes these errors to be fatal. These will stop the in-progress sync.
Note that this detection is relying on error message strings which Google don't document so it may break in the future.
Properties:
- Config: stop\_on\_download\_limit
- Env Var: RCLONE\_DRIVE\_STOP\_ON\_DOWNLOAD\_LIMIT
- Type: bool
- Default: false
#### \--drive-skip-shortcuts
If set skip shortcut files.
Normally rclone dereferences shortcut files making them appear as if they are the original file (see [the shortcuts section](https://rclone.org/drive/#shortcuts)). If this flag is set then rclone will ignore shortcut files completely.
Properties:
- Config: skip\_shortcuts
- Env Var: RCLONE\_DRIVE\_SKIP\_SHORTCUTS
- Type: bool
- Default: false
#### \--drive-skip-dangling-shortcuts
If set skip dangling shortcut files.
If this is set then rclone will not show any dangling shortcuts in listings.
Properties:
- Config: skip\_dangling\_shortcuts
- Env Var: RCLONE\_DRIVE\_SKIP\_DANGLING\_SHORTCUTS
- Type: bool
- Default: false
#### \--drive-resource-key
Resource key for accessing a link-shared file.
If you need to access files shared with a link like this
```
https://drive.google.com/drive/folders/XXX?resourcekey=YYY&usp=sharing
```
Then you will need to use the first part "XXX" as the "root\_folder\_id" and the second part "YYY" as the "resource\_key" otherwise you will get 404 not found errors when trying to access the directory.
See: <https://developers.google.com/drive/api/guides/resource-keys>
This resource key requirement only applies to a subset of old files.
Note also that opening the folder once in the web interface (with the user you've authenticated rclone with) seems to be enough so that the resource key is not needed.
Properties:
- Config: resource\_key
- Env Var: RCLONE\_DRIVE\_RESOURCE\_KEY
- Type: string
- Required: false
#### \--drive-fast-list-bug-fix
Work around a bug in Google Drive listing.
Normally rclone will work around a bug in Google Drive when using --fast-list (ListR) where the search "(A in parents) or (B in parents)" returns nothing sometimes. See \#3114, \#4289 and <https://issuetracker.google.com/issues/149522397>
Rclone detects this by finding no items in more than one directory when listing and retries them as lists of individual directories.
This means that if you have a lot of empty directories rclone will end up listing them all individually and this can take many more API calls.
This flag allows the work-around to be disabled. This is **not** recommended in normal use - only if you have a particular case you are having trouble with like many empty directories.
Properties:
- Config: fast\_list\_bug\_fix
- Env Var: RCLONE\_DRIVE\_FAST\_LIST\_BUG\_FIX
- Type: bool
- Default: true
#### \--drive-metadata-owner
Control whether owner should be read or written in metadata.
Owner is a standard part of the file metadata so is easy to read. But it isn't always desirable to set the owner from the metadata.
Note that you can't set the owner on Shared Drives, and that setting ownership will generate an email to the new owner (this can't be disabled), and you can't transfer ownership to someone outside your organization.
Properties:
- Config: metadata\_owner
- Env Var: RCLONE\_DRIVE\_METADATA\_OWNER
- Type: Bits
- Default: read
- Examples:
- "off"
- Do not read or write the value
- "read"
- Read the value only
- "write"
- Write the value only
- "failok"
- If writing fails log errors only, don't fail the transfer
- "read,write"
- Read and Write the value.
#### \--drive-metadata-permissions
Control whether permissions should be read or written in metadata.
Reading permissions metadata from files can be done quickly, but it isn't always desirable to set the permissions from the metadata.
Note that rclone drops any inherited permissions on Shared Drives and any owner permission on My Drives as these are duplicated in the owner metadata.
Properties:
- Config: metadata\_permissions
- Env Var: RCLONE\_DRIVE\_METADATA\_PERMISSIONS
- Type: Bits
- Default: off
- Examples:
- "off"
- Do not read or write the value
- "read"
- Read the value only
- "write"
- Write the value only
- "failok"
- If writing fails log errors only, don't fail the transfer
- "read,write"
- Read and Write the value.
#### \--drive-metadata-labels
Control whether labels should be read or written in metadata.
Reading labels metadata from files takes an extra API transaction and will slow down listings. It isn't always desirable to set the labels from the metadata.
The format of labels is documented in the drive API documentation at <https://developers.google.com/drive/api/reference/rest/v3/Label> - rclone just provides a JSON dump of this format.
When setting labels, the label and fields must already exist - rclone will not create them. This means that if you are transferring labels from two different accounts you will have to create the labels in advance and use the metadata mapper to translate the IDs between the two accounts.
Properties:
- Config: metadata\_labels
- Env Var: RCLONE\_DRIVE\_METADATA\_LABELS
- Type: Bits
- Default: off
- Examples:
- "off"
- Do not read or write the value
- "read"
- Read the value only
- "write"
- Write the value only
- "failok"
- If writing fails log errors only, don't fail the transfer
- "read,write"
- Read and Write the value.
#### \--drive-metadata-enforce-expansive-access
Whether the request should enforce expansive access rules.
From Feb 2026 this flag will be set by default so this flag can be used for testing before then.
See: <https://developers.google.com/workspace/drive/api/guides/limited-expansive-access>
Properties:
- Config: metadata\_enforce\_expansive\_access
- Env Var: RCLONE\_DRIVE\_METADATA\_ENFORCE\_EXPANSIVE\_ACCESS
- Type: bool
- Default: false
#### \--drive-encoding
The encoding for the backend.
See the [encoding section in the overview](https://rclone.org/overview/#encoding) for more info.
Properties:
- Config: encoding
- Env Var: RCLONE\_DRIVE\_ENCODING
- Type: Encoding
- Default: InvalidUtf8
#### \--drive-env-auth
Get IAM credentials from runtime (environment variables or instance meta data if no env vars).
Only applies if service\_account\_file and service\_account\_credentials is blank.
Properties:
- Config: env\_auth
- Env Var: RCLONE\_DRIVE\_ENV\_AUTH
- Type: bool
- Default: false
- Examples:
- "false"
- Enter credentials in the next step.
- "true"
- Get GCP IAM credentials from the environment (env vars or IAM).
#### \--drive-description
Description of the remote.
Properties:
- Config: description
- Env Var: RCLONE\_DRIVE\_DESCRIPTION
- Type: string
- Required: false
### Metadata
User metadata is stored in the properties field of the drive object.
Metadata is supported on files and directories.
Here are the possible system metadata items for the drive backend.
| Name | Help | Type | Example | Read Only |
|---|---|---|---|---|
| btime | Time of file birth (creation) with mS accuracy. Note that this is only writable on fresh uploads - it can't be written for updates. | RFC 3339 | 2006-01-02T15:04:05.999Z07:00 | N |
| content-type | The MIME type of the file. | string | text/plain | N |
| copy-requires-writer-permission | Whether the options to copy, print, or download this file, should be disabled for readers and commenters. | boolean | true | N |
| description | A short description of the file. | string | Contract for signing | N |
| folder-color-rgb | The color for a folder or a shortcut to a folder as an RGB hex string. | string | 881133 | N |
| labels | Labels attached to this file in a JSON dump of Googled drive format. Enable with --drive-metadata-labels. | JSON | \[\] | N |
| mtime | Time of last modification with mS accuracy. | RFC 3339 | 2006-01-02T15:04:05.999Z07:00 | N |
| owner | The owner of the file. Usually an email address. Enable with --drive-metadata-owner. | string | [user@example.com](mailto:user@example.com) | N |
| permissions | Permissions in a JSON dump of Google drive format. On shared drives these will only be present if they aren't inherited. Enable with --drive-metadata-permissions. | JSON | {} | N |
| starred | Whether the user has starred the file. | boolean | false | N |
| viewed-by-me | Whether the file has been viewed by this user. | boolean | true | **Y** |
| writers-can-share | Whether users with only writer permission can modify the file's permissions. Not populated and ignored when setting for items in shared drives. | boolean | false | N |
See the [metadata](https://rclone.org/docs/#metadata) docs for more info.
## Backend commands
Here are the commands specific to the drive backend.
Run them with:
```
rclone backend COMMAND remote:
```
The help below will explain what arguments each command takes.
See the [backend](https://rclone.org/commands/rclone_backend/) command for more info on how to pass options and arguments.
These can be run on a running backend using the rc command [backend/command](https://rclone.org/rc/#backend-command).
### get
Get command for fetching the drive config parameters.
```
rclone backend get remote: [options] [<arguments>+]
```
This is a get command which will be used to fetch the various drive config parameters.
Usage examples:
```
rclone backend get drive: [-o service_account_file] [-o chunk_size]
rclone rc backend/command command=get fs=drive: [-o service_account_file] [-o chunk_size]
```
Options:
- "chunk\_size": Show the current upload chunk size.
- "service\_account\_file": Show the current service account file.
### set
Set command for updating the drive config parameters.
```
rclone backend set remote: [options] [<arguments>+]
```
This is a set command which will be used to update the various drive config parameters.
Usage examples:
```
rclone backend set drive: [-o service_account_file=sa.json] [-o chunk_size=67108864]
rclone rc backend/command command=set fs=drive: [-o service_account_file=sa.json] [-o chunk_size=67108864]
```
Options:
- "chunk\_size": Update the current upload chunk size.
- "service\_account\_file": Update the current service account file.
### shortcut
Create shortcuts from files or directories.
```
rclone backend shortcut remote: [options] [<arguments>+]
```
This command creates shortcuts from files or directories.
Usage examples:
```
rclone backend shortcut drive: source_item destination_shortcut
rclone backend shortcut drive: source_item -o target=drive2: destination_shortcut
```
In the first example this creates a shortcut from the "source\_item" which can be a file or a directory to the "destination\_shortcut". The "source\_item" and the "destination\_shortcut" should be relative paths from "drive:"
In the second example this creates a shortcut from the "source\_item" relative to "drive:" to the "destination\_shortcut" relative to "drive2:". This may fail with a permission error if the user authenticated with "drive2:" can't read files from "drive:".
Options:
- "target": Optional target remote for the shortcut destination.
### drives
List the Shared Drives available to this account.
```
rclone backend drives remote: [options] [<arguments>+]
```
This command lists the Shared Drives (Team Drives) available to this account.
Usage example:
```
rclone backend [-o config] drives drive:
```
This will return a JSON list of objects like this:
```
[
{
"id": "0ABCDEF-01234567890",
"kind": "drive#teamDrive",
"name": "My Drive"
},
{
"id": "0ABCDEFabcdefghijkl",
"kind": "drive#teamDrive",
"name": "Test Drive"
}
]
```
With the -o config parameter it will output the list in a format suitable for adding to a config file to make aliases for all the drives found and a combined drive.
```
[My Drive]
type = alias
remote = drive,team_drive=0ABCDEF-01234567890,root_folder_id=:
[Test Drive]
type = alias
remote = drive,team_drive=0ABCDEFabcdefghijkl,root_folder_id=:
[AllDrives]
type = combine
upstreams = "My Drive=My Drive:" "Test Drive=Test Drive:"
```
Adding this to the rclone config file will cause those team drives to be accessible with the aliases shown. Any illegal characters will be substituted with "\_" and duplicate names will have numbers suffixed. It will also add a remote called AllDrives which shows all the shared drives combined into one directory tree.
### untrash
Untrash files and directories.
```
rclone backend untrash remote: [options] [<arguments>+]
```
This command untrashes all the files and directories in the directory passed in recursively.
Usage example:
```
rclone backend untrash drive:directory
rclone backend --interactive untrash drive:directory subdir
```
This takes an optional directory to trash which make this easier to use via the API.
Use the --interactive/-i or --dry-run flag to see what would be restored before restoring it.
Result:
```
{
"Untrashed": 17,
"Errors": 0
}
```
### copyid
Copy files by ID.
```
rclone backend copyid remote: [options] [<arguments>+]
```
This command copies files by ID.
Usage examples:
```
rclone backend copyid drive: ID path
rclone backend copyid drive: ID1 path1 ID2 path2
```
It copies the drive file with ID given to the path (an rclone path which will be passed internally to rclone copyto). The ID and path pairs can be repeated.
The path should end with a / to indicate copy the file as named to this directory. If it doesn't end with a / then the last path component will be used as the file name.
If the destination is a drive backend then server-side copying will be attempted if possible.
Use the --interactive/-i or --dry-run flag to see what would be copied before copying.
### moveid
Move files by ID.
```
rclone backend moveid remote: [options] [<arguments>+]
```
This command moves files by ID.
Usage examples:
```
rclone backend moveid drive: ID path
rclone backend moveid drive: ID1 path1 ID2 path2
```
It moves the drive file with ID given to the path (an rclone path which will be passed internally to rclone moveto).
The path should end with a / to indicate move the file as named to this directory. If it doesn't end with a / then the last path component will be used as the file name.
If the destination is a drive backend then server-side moving will be attempted if possible.
Use the --interactive/-i or --dry-run flag to see what would be moved beforehand.
### exportformats
Dump the export formats for debug purposes.
```
rclone backend exportformats remote: [options] [<arguments>+]
```
### importformats
Dump the import formats for debug purposes.
```
rclone backend importformats remote: [options] [<arguments>+]
```
### query
List files using Google Drive query language.
```
rclone backend query remote: [options] [<arguments>+]
```
This command lists files based on a query.
Usage example:
```
rclone backend query drive: query
```
The query syntax is documented at [Google Drive Search query terms and operators](https://developers.google.com/drive/api/guides/ref-search-terms).
For example:
```
rclone backend query drive: "'0ABc9DEFGHIJKLMNop0QRatUVW3X' in parents and name contains 'foo'"
```
If the query contains literal ' or \\ characters, these need to be escaped with \\ characters. "'" becomes "'" and "" becomes "\\", for example to match a file named "foo ' .txt":
```
rclone backend query drive: "name = 'foo \' \\\.txt'"
```
The result is a JSON array of matches, for example:
```
[
{
"createdTime": "2017-06-29T19:58:28.537Z",
"id": "0AxBe_CDEF4zkGHI4d0FjYko2QkD",
"md5Checksum": "68518d16be0c6fbfab918be61d658032",
"mimeType": "text/plain",
"modifiedTime": "2024-02-02T10:40:02.874Z",
"name": "foo ' \\.txt",
"parents": [
"0BxAe_BCDE4zkFGZpcWJGek0xbzC"
],
"resourceKey": "0-ABCDEFGHIXJQpIGqBJq3MC",
"sha1Checksum": "8f284fa768bfb4e45d076a579ab3905ab6bfa893",
"size": "311",
"webViewLink": "https://drive.google.com/file/d/0AxBe_CDEF4zkGHI4d0FjYko2QkD/view?usp=drivesdk\u0026resourcekey=0-ABCDEFGHIXJQpIGqBJq3MC"
}
]
```console
### rescue
Rescue or delete any orphaned files.
```console
rclone backend rescue remote: [options] [<arguments>+]
```
This command rescues or deletes any orphaned files or directories.
Sometimes files can get orphaned in Google Drive. This means that they are no longer in any folder in Google Drive.
This command finds those files and either rescues them to a directory you specify or deletes them.
This can be used in 3 ways.
First, list all orphaned files:
```
rclone backend rescue drive:
```
Second rescue all orphaned files to the directory indicated:
```
rclone backend rescue drive: "relative/path/to/rescue/directory"
```
E.g. to rescue all orphans to a directory called "Orphans" in the top level:
```
rclone backend rescue drive: Orphans
```
Third delete all orphaned files to the trash:
```
rclone backend rescue drive: -o delete
```
## Limitations
Drive has quite a lot of rate limiting. This causes rclone to be limited to transferring about 2 files per second only. Individual files may be transferred much faster at 100s of MiB/s but lots of small files can take a long time.
Server side copies are also subject to a separate rate limit. If you see User rate limit exceeded errors, wait at least 24 hours and retry. You can disable server-side copies with `--disable copy` to download and upload the files if you prefer.
### Limitations of Google Docs
Google docs will appear as size -1 in `rclone ls`, `rclone ncdu` etc, and as size 0 in anything which uses the VFS layer, e.g. `rclone mount` and `rclone serve`. When calculating directory totals, e.g. in `rclone size` and `rclone ncdu`, they will be counted in as empty files.
This is because rclone can't find out the size of the Google docs without downloading them.
Google docs will transfer correctly with `rclone sync`, `rclone copy` etc as rclone knows to ignore the size when doing the transfer.
However an unfortunate consequence of this is that you may not be able to download Google docs using `rclone mount`. If it doesn't work you will get a 0 sized file. If you try again the doc may gain its correct size and be downloadable. Whether it will work on not depends on the application accessing the mount and the OS you are running - experiment to find out if it does work for you\!
### Duplicated files
Sometimes, for no reason I've been able to track down, drive will duplicate a file that rclone uploads. Drive unlike all the other remotes can have duplicated files.
Duplicated files cause problems with the syncing and you will see messages in the log about duplicates.
Use `rclone dedupe` to fix duplicated files.
Note that this isn't just a problem with rclone, even Google Photos on Android duplicates files on drive sometimes.
### Rclone appears to be re-copying files it shouldn't
The most likely cause of this is the duplicated file issue above - run `rclone dedupe` and check your logs for duplicate object or directory messages.
This can also be caused by a delay/caching on google drive's end when comparing directory listings. Specifically with team drives used in combination with --fast-list. Files that were uploaded recently may not appear on the directory list sent to rclone when using --fast-list.
Waiting a moderate period of time between attempts (estimated to be approximately 1 hour) and/or not using --fast-list both seem to be effective in preventing the problem.
### SHA1 or SHA256 hashes may be missing
All files have MD5 hashes, but a small fraction of files uploaded may not have SHA1 or SHA256 hashes especially if they were uploaded before 2018.
## Making your own client\_id
When you use rclone with Google drive in its default configuration you are using rclone's client\_id. This is shared between all the rclone users. There is a global rate limit on the number of queries per second that each client\_id can do set by Google. rclone already has a high quota and I will continue to make sure it is high enough by contacting Google.
It is strongly recommended to use your own client ID as the default rclone ID is heavily used. If you have multiple services running, it is recommended to use an API key for each service. The default Google quota is 10 transactions per second so it is recommended to stay under that number as if you use more than that, it will cause rclone to rate limit and make things slower.
Here is how to create your own Google Drive client ID for rclone:
1. Log into the [Google API Console](https://console.developers.google.com/) with your Google account. It doesn't matter what Google account you use. (It need not be the same account as the Google Drive you want to access)
2. Select a project or create a new project.
3. Under "ENABLE APIS AND SERVICES" search for "Drive", and enable the "Google Drive API".
4. Click "Credentials" in the left-side panel (not "Create credentials", which opens the wizard).
5. If you already configured an "Oauth Consent Screen", then skip to the next step; if not, click on "CONFIGURE CONSENT SCREEN" button (near the top right corner of the right panel), then click "Get started". On the next screen, enter an "Application name" ("rclone" is OK); enter "User Support Email" (your own email is OK); Next, under Audience select "External". Next enter your own contact information, agree to terms and click "Create". You should now see rclone (or your project name) in a box in the top left of the screen.
(PS: if you are a GSuite user, you could also select "Internal" instead of "External" above, but this will restrict API use to Google Workspace users in your organisation).
You will also have to add [some scopes](https://developers.google.com/drive/api/guides/api-specific-auth), including
- `https://www.googleapis.com/auth/docs`
- `https://www.googleapis.com/auth/drive` in order to be able to edit, create and delete files with RClone.
- `https://www.googleapis.com/auth/drive.metadata.readonly` which you may also want to add.
To do this, click Data Access on the left side panel, click "add or remove scopes" and select the three above and press update or go to the "Manually add scopes" text box (scroll down) and enter "https://www.googleapis.com/auth/docs,https://www.googleapis.com/auth/drive,https://www.googleapis.com/auth/drive.metadata.readonly", press add to table then update.
You should now see the three scopes on your Data access page. Now press save at the bottom\!
6. After adding scopes, click Audience Scroll down and click "+ Add users". Add yourself as a test user and press save.
7. Go to Overview on the left panel, click "Create OAuth client". Choose an application type of "Desktop app" and click "Create". (the default name is fine)
8. It will show you a client ID and client secret. Make a note of these. (If you selected "External" at Step 5 continue to Step 9. If you chose "Internal" you don't need to publish and can skip straight to Step 10 but your destination drive must be part of the same Google Workspace.)
9. Go to "Audience" and then click "PUBLISH APP" button and confirm. Add yourself as a test user if you haven't already.
10. Provide the noted client ID and client secret to rclone.
Be aware that, due to the "enhanced security" recently introduced by Google, you are theoretically expected to "submit your app for verification" and then wait a few weeks(!) for their response; in practice, you can go right ahead and use the client ID and client secret with rclone, the only issue will be a very scary confirmation screen shown when you connect via your browser for rclone to be able to get its token-id (but as this only happens during the remote configuration, it's not such a big deal). Keeping the application in "Testing" will work as well, but the limitation is that any grants will expire after a week, which can be annoying to refresh constantly. If, for whatever reason, a short grant time is not a problem, then keeping the application in testing mode would also be sufficient.
(Thanks to @balazer on github for these instructions.)
Sometimes, creation of an OAuth consent in Google API Console fails due to an error message "The request failed because changes to one of the field of the resource is not supported". As a convenient workaround, the necessary Google Drive API key can be created on the [Python Quickstart](https://developers.google.com/drive/api/v3/quickstart/python) page. Just push the Enable the Drive API button to receive the Client ID and Secret. Note that it will automatically create a new project in the API Console. |
| Shard | 49 (laksa) |
| Root Hash | 4428224556855643449 |
| Unparsed URL | org,rclone!/drive/ s443 |