Skip to content

Microsoft OneDrive

  • Sign-in happens in your browser, for personal, work and school accounts.
  • Names are case-insensitive, and " * : < > ? | are stored as look-alike characters.
  • File size: OneDrive limits files to 250 GB.
  • Changes made elsewhere show up within about 15 seconds on Windows, except in the China region.
Capability Support
rclone support tier Tier 1: Core
Checksums QuickXorHash
Modification times Kept, to 1 s
Case-insensitive names Yes
Duplicate names allowed No
Server-side copy Yes
Server-side move and rename Yes
Folder move and rename Yes, in one step
Free space reporting Yes
Empty folders Yes
Change notifications Yes
Uploads of unknown size No
Public links Yes

In CloudMount you add this drive from the Add drive screen, and the wizard asks for the options listed under Options. The notes below come from rclone’s setup guide.

rclone uses a default Client ID when talking to OneDrive, unless a custom client_id is specified in the config. The default Client ID and Key are shared by all rclone users when performing requests.

You may choose to create and use your own Client ID, in case the default one does not work well for you. For example, you might see throttling.

To create your own Client ID, please follow these steps:

  1. Open https://portal.azure.com/?quickstart=true#view/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/~/Overview and then under the Add menu click App registration.
    • If you have not created an Azure account, you will be prompted to. This is free, but you need to provide a phone number, address, and credit card for identity verification.
  2. Enter a name for your app, choose account type Accounts in any organizational directory (Any Azure AD directory - Multitenant) and personal Microsoft accounts (e.g. Skype, Xbox), select Web in Redirect URI, then type (do not copy and paste) http://localhost:53682/ and click Register. Copy and keep the Application (client) ID under the app name for later use.
  3. Under manage select Certificates & secrets, click New client secret. Enter a description (can be anything) and set Expires to 24 months. Copy and keep that secret Value for later use (you won’t be able to see this value afterwards).
  4. Under manage select API permissions, click Add a permission and select Microsoft Graph then select delegated permissions.
  5. Search and select the following permissions: Files.Read, Files.ReadWrite, Files.Read.All, Files.ReadWrite.All, offline_access, User.Read and Sites.Read.All (if custom access scopes are configured, select the permissions accordingly). Once selected click Add permissions at the bottom.

Now the application is complete. Run rclone config to create or edit a OneDrive remote. Supply the app ID and password as Client ID and Secret, respectively. rclone will walk you through the remaining steps.

The access_scopes option allows you to configure the permissions requested by rclone. See Microsoft Docs for more information about the different scopes.

The Sites.Read.All permission is required if you need to search SharePoint sites when configuring the remote. However, if that permission is not assigned, you need to exclude Sites.Read.All from your access scopes or set disable_site_permission option to true in the advanced options.

The steps for OneDrive Personal may or may not work for OneDrive Business, depending on the security settings of the organization. A common error is that the publisher of the App is not verified.

You may try to verify you account, or try to limit the App to your organization only, as shown below.

  1. Make sure to create the App with your business account.
  2. Follow the steps above to create an App. However, we need a different account type here: Accounts in this organizational directory only (*** - Single tenant). Note that you can also change the account type after creating the App.
  3. Find the tenant ID of your organization.
  4. In the rclone config, set auth_url to https://login.microsoftonline.com/YOUR_TENANT_ID/oauth2/v2.0/authorize.
  5. In the rclone config, set token_url to https://login.microsoftonline.com/YOUR_TENANT_ID/oauth2/v2.0/token.

Note: If you have a special region, you may need a different host in step 4 and 5. Here are some hints.

OAuth Client Credential flow will allow rclone to use permissions directly associated with the Azure AD Enterprise application, rather that adopting the context of an Azure AD user account.

This flow can be enabled by following the steps below:

  1. Create the Enterprise App registration in the Azure AD portal and obtain a Client ID and Client Secret as described above.
  2. Ensure that the application has the appropriate permissions and they are assigned as Application Permissions
  3. Configure the remote, ensuring that Client ID and Client Secret are entered correctly.
  4. In the Advanced Config section, enter true for client_credentials and in the tenant section enter the tenant ID.

When it comes to choosing the type of the connection work with the client credentials flow. In particular the “onedrive” option does not work. You can use the “sharepoint” option or if that does not find the correct drive ID type it in manually with the “driveid” option.

To back up any user’s data using this flow, grant your Azure AD application the necessary Microsoft Graph Application permissions (such as Files.Read.All, Sites.Read.All and/or Sites.Selected). With these permissions, rclone can access drives across the tenant, but it needs to know which user or drive you want. Supply a specific drive_id corresponding to that user’s OneDrive, or a SharePoint site ID for SharePoint libraries. You can obtain a user’s drive ID using Microsoft Graph (e.g. /users/{userUPN}/drive) and then configure it in rclone. Once the correct drive ID is provided, rclone will back up that user’s data using the app-only token without requiring their credentials.

NOTE Assigning permissions directly to the application means that anyone with the Client ID and Client Secret can access your OneDrive files. Take care to safeguard these credentials.

If you do not have admin access to your organization’s OneDrive for Business, you can still connect by manually providing the SharePoint tenant URL and drive ID. This works by overriding the base API URL from the standard Microsoft Graph endpoint to the SharePoint v2.0 endpoint.

  1. Open your browser and navigate to https://[your-tenant].sharepoint.com/
  2. Open Developer Tools (press F12) and go to the Network tab.
  3. Search for driveAccessToken in the network requests.
  4. Extract the following information from the response:
    ".driveUrl": "{tenant_url}/v2.0/drives/{drive_id}",
    ".driveAccessToken": "access_token={access_token}"

Use the extracted values to configure your remote:

type = onedrive
token = {"access_token":"{access_token}","token_type":"Bearer","refresh_token":"","expiry":"2045-12-31T23:59:59Z"}
drive_id = {drive_id}
tenant_url = {tenant_url}
drive_type = business

Since the exact expiry time cannot be determined from web traffic, set the expiry to a future date. Note that the token will eventually expire and you will need to repeat the process to obtain a new one.

OneDrive allows modification times to be set on objects accurate to 1 second. These will be used to detect whether objects need syncing or not.

OneDrive Personal, OneDrive for Business and Sharepoint Server support QuickXorHash.

Before rclone 1.62 the default hash for Onedrive Personal was SHA1. For rclone 1.62 and above the default for all Onedrive backends is QuickXorHash.

Starting from July 2023 SHA1 support is being phased out in Onedrive Personal in favour of QuickXorHash. If necessary the --onedrive-hash-type flag (or hash_type config option) can be used to select SHA1 during the transition period if this is important your workflow.

For all types of OneDrive you can use the --checksum flag.

This remote supports --fast-list which allows you to use fewer transactions in exchange for more memory. See the rclone docs for more details.

This must be enabled with the --onedrive-delta flag (or delta = true in the config file) as it can cause performance degradation.

It does this by using the delta listing facilities of OneDrive which returns all the files in the remote very efficiently. This is much more efficient than listing directories recursively and is Microsoft’s recommended way of reading all the file information from a drive.

This can be useful with rclone mount and rclone rc vfs/refresh recursive=true) to very quickly fill the mount with information about all the files.

The API used for the recursive listing (ListR) only supports listing from the root of the drive. This will become increasingly inefficient the further away you get from the root as rclone will have to discard files outside of the directory you are using.

Some commands (like rclone lsf -R) will use ListR by default - you can turn this off with --disable ListR if you need to.

In addition to the default restricted characters set the following characters are also replaced:

Character Value Replacement
“ 0x22 "
* 0x2A *
: 0x3A :
< 0x3C <
> 0x3E >
? 0x3F ?
\ 0x5C \
| 0x7C |

File names can also not end with the following characters. These only get replaced if they are the last character in the name:

Character Value Replacement
SP 0x20 ␠
. 0x2E .

File names can also not begin with the following characters. These only get replaced if they are the first character in the name:

Character Value Replacement
SP 0x20 ␠
~ 0x7E ~

Invalid UTF-8 bytes will also be replaced, as they can’t be used in JSON strings.

Any files you delete with rclone will end up in the trash. Microsoft doesn’t provide an API to permanently delete files, nor to empty the trash, so you will have to do that with one of Microsoft’s apps or via the OneDrive website.

The wizard asks for these when you add the drive.

OAuth Client Id.

Leave blank normally.

Type: string

OAuth Client Secret.

Leave blank normally.

Type: string

Choose national cloud region for OneDrive.

Type: string · Default: global

Choices:

  • global: Microsoft Cloud Global
  • us: Microsoft Cloud for US Government
  • de: Microsoft Cloud Germany (deprecated - try global region first).
  • cn: Azure and Office 365 operated by Vnet Group in China

ID of the service principal’s tenant. Also called its directory ID.

Set this if using

  • Client Credential flow

Type: string

The wizard shows these under Advanced options. Most drives work without changing any of them.

OAuth Access Token as a JSON blob.

Type: string

Auth server URL.

Leave blank to use the provider defaults.

Type: string

Token server url.

Leave blank to use the provider defaults.

Type: string

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.

Type: bool · Default: false

Cutoff for switching to chunked upload.

Any files larger than this will be uploaded in chunks of chunk_size.

This is disabled by default as uploading using single part uploads causes rclone to use twice the storage on Onedrive business as when rclone sets the modification time after the upload Onedrive creates a new version.

See: https://github.com/rclone/rclone/issues/1716

Type: SizeSuffix · Default: off

The tenant URL for non-admin OneDrive access.

Set this to your SharePoint tenant URL to use the SharePoint v2.0 API endpoint instead of the standard Microsoft Graph API. This allows accessing business OneDrive without admin consent.

The URL can be found in your browser’s developer tools by searching for “driveAccessToken” in the network requests. Look for the “.driveUrl” field which contains the tenant URL and drive ID.

Example: https://your-tenant.sharepoint.com/_api

Type: string

Chunk size to upload files with - must be multiple of 320k (327,680 bytes).

Above this size files will be chunked - must be multiple of 320k (327,680 bytes) and should not exceed 250M (262,144,000 bytes) else you may encounter "Microsoft.SharePoint.Client.InvalidClientQueryException: The request message is too big." Note that the chunks will be buffered into memory.

Type: SizeSuffix · Default: 10Mi

The ID of the drive to use.

Type: string

The type of the drive (personal | business | documentLibrary).

Type: string

ID of the root folder.

This isn’t normally needed, but in special circumstances you might know the folder ID that you wish to access but not be able to get there through a path traversal.

Type: string

Set scopes to be requested by rclone.

Choose or manually enter a custom space separated list with all scopes, that rclone should request.

Type: SpaceSepList · Default: Files.Read Files.ReadWrite Files.Read.All Files.ReadWrite.All Sites.Read.All offline_access

Choices:

  • Files.Read Files.ReadWrite Files.Read.All Files.ReadWrite.All Sites.Read.All offline_access: Read and write access to all resources
  • Files.Read Files.Read.All Sites.Read.All offline_access: Read only access to all resources
  • Files.Read Files.ReadWrite Files.Read.All Files.ReadWrite.All offline_access: Read and write access to all resources, without the ability to browse SharePoint sites. Same as if disable_site_permission was set to true

Set to make OneNote files show up in directory listings.

By default, rclone will hide OneNote files in directory listings because operations like “Open” and “Update” won’t work on them. But this behaviour may also prevent you from deleting them. If you want to delete OneNote files or otherwise want them to show up in directory listing, set this option.

Type: bool · Default: false

Deprecated: use –server-side-across-configs instead.

Allow server-side operations (e.g. copy) to work across different onedrive configs.

This will work if you are copying between two OneDrive Personal drives AND the files to copy are already shared between them. Additionally, it should also function for a user who has access permissions both between Onedrive for business and SharePoint under the same tenant, and between SharePoint and another SharePoint under the same tenant. In other cases, rclone will fall back to normal copy (which will be slightly slower).

Type: bool · Default: false

Size of listing chunk.

Type: int · Default: 1000

Remove all versions on modifying operations.

Onedrive creates versions when rclone uploads new files overwriting an existing one and when it sets the modification time.

These versions take up space out of the quota.

This flag checks for versions after file upload and setting modification time and removes all but the last version.

Type: bool · Default: false

Permanently delete files on removal.

Normally files will get sent to the recycle bin on deletion. Setting this flag causes them to be permanently deleted. Use with care.

This works with OneDrive for Business, SharePoint document libraries, and OneDrive personal accounts, including free accounts.

Type: bool · Default: false

Set the scope of the links created by the link command.

Type: string · Default: anonymous

Choices:

  • anonymous: Anyone with the link has access, without needing to sign in. This may include people outside of your organization. Anonymous link support may be disabled by an administrator.
  • organization: Anyone signed into your organization (tenant) can use the link to get access. Only available in OneDrive for Business and SharePoint.

Set the type of the links created by the link command.

Type: string · Default: view

Choices:

  • view: Creates a read-only link to the item.
  • edit: Creates a read-write link to the item.
  • embed: Creates an embeddable link to the item. Only available in OneDrive personal.

Set the password for links created by the link command.

At the time of writing this works with OneDrive for Business and OneDrive personal paid accounts.

OneDrive personal free accounts can’t set a password or an expiry time (with –expire) on links.

Type: string

Specify the hash in use for the backend.

This specifies the hash type in use. If set to “auto” it will use the default hash which is QuickXorHash.

Before rclone 1.62 an SHA1 hash was used by default for Onedrive Personal. For 1.62 and later the default is to use a QuickXorHash for all onedrive types. If an SHA1 hash is desired then set this option accordingly.

From July 2023 QuickXorHash will be the only available hash for both OneDrive for Business and OneDrive Personal.

This can be set to “none” to not use any hashes.

If the hash requested does not exist on the object, it will be returned as an empty string which is treated as a missing hash by rclone.

Type: string · Default: auto

Choices:

  • auto: Rclone chooses the best hash
  • quickxor: QuickXor
  • sha1: SHA1
  • sha256: SHA256
  • crc32: CRC32
  • none: None - don’t use any hashes

Allows download of files the server thinks has a virus.

The onedrive/sharepoint server may check files uploaded with an Anti Virus checker. If it detects any potential viruses or malware it will block download of the file.

In this case you will see a message like this

server reports this file is infected with a virus - use --onedrive-av-override to download anyway: Infected (name of virus): 403 Forbidden:

If you are 100% sure you want to download this file anyway then use the –onedrive-av-override flag, or av_override = true in the config file.

When set, malware-flagged files are downloaded via Microsoft Graph beta APIs with Prefer: forceInfectedDownload (contentStream, then /content). Clean files continue to use the stable v1.0 endpoint.

This is a beta API and may change. It works reliably with application permissions (client_credentials). With delegated (user) login on OneDrive for Business, Microsoft often still blocks the download. tenant_url configurations fall back to the legacy AVOverride query parameter.

Type: bool · Default: false

If set rclone will use delta listing to implement recursive listings.

If this flag is set the onedrive backend will advertise ListR support for recursive listings.

Setting this flag speeds up these things greatly:

rclone lsf -R onedrive:
rclone size onedrive:
rclone rc vfs/refresh recursive=true

However the delta listing API only works at the root of the drive. If you use it not at the root then it recurses from the root and discards all the data that is not under the directory you asked for. So it will be correct but may not be very efficient.

This is why this flag is not set as the default.

As a rule of thumb if nearly all of your data is under rclone’s root directory (the root/directory in onedrive:root/directory) then using this flag will be a big performance win. If your data is mostly not under the root then using this flag will be a big performance loss.

It is recommended if you are mounting your onedrive at the root (or near the root when using crypt) and using rclone rc vfs/refresh.

Type: bool · Default: false

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.

Type: Bits · Default: off

Choices:

  • off: Do not read or write the value
  • read: Read the value only
  • write: Write the value only
  • read,write: Read and Write the value.
  • failok: If writing fails log errors only, don’t fail the transfer

The encoding for the backend.

See the encoding section in the overview for more info.

Type: Encoding · Default: Slash,LtGt,DoubleQuote,Colon,Question,Asterisk,Pipe,BackSlash,Del,Ctl,LeftSpace,LeftTilde,RightSpace,RightPeriod,InvalidUtf8,Dot

Description of the remote.

Type: string

Unlike Google Drive and impersonating any domain user via service accounts, OneDrive requires you to authenticate as an admin account, and manually setup a remote per user you wish to impersonate.

  1. In Microsoft 365 Admin Center, open each user you need to “impersonate” and go to the OneDrive section. There is a heading called “Get access to files”, you need to click to create the link, this creates the link of the format https://{tenant}-my.sharepoint.com/personal/{user_name_domain_tld}/ but also changes the permissions so you your admin user has access.

  2. Then in powershell run the following commands:

    Terminal window
    Install-Module Microsoft.Graph -Scope CurrentUser -Repository PSGallery -Force
    Import-Module Microsoft.Graph.Files
    Connect-MgGraph -Scopes "Files.ReadWrite.All"
    # Follow the steps to allow access to your admin user
    # Then run this for each user you want to impersonate to get the Drive ID
    Get-MgUserDefaultDrive -UserId '{emailaddress}'
    # This will give you output of the format:
    # Name Id DriveType CreatedDateTime
    # ---- -- --------- ---------------
    # OneDrive b!XYZ123 business 14/10/2023 1:00:58 pm
  3. Then in rclone add a onedrive remote type, and use the Type in driveID with the DriveID you got in the previous step. One remote per user. It will then confirm the drive ID, and hopefully give you a message of Found drive "root" of type "business" and then include the URL of the format https://{tenant}-my.sharepoint.com/personal/{user_name_domain_tld}/Documents

If you don’t use rclone for 90 days the refresh token will expire. This will result in authorization problems. This is easy to fix by running the rclone config reconnect remote: command to get a new token and refresh token.

Note that OneDrive is case insensitive so you can’t have a file called “Hello.doc” and one called “hello.doc”.

There are quite a few characters that can’t be in OneDrive file names. These can’t occur on Windows platforms, but on non-Windows platforms they are common. Rclone will map these names to and from an identical looking unicode equivalent. For example if a file has a ? in it will be mapped to ? instead.

The largest allowed file size is 250 GiB for both OneDrive Personal and OneDrive for Business (Updated 13 Jan 2021).

The entire path, including the file name, must contain fewer than 400 characters for OneDrive, OneDrive for Business and SharePoint Online. If you are encrypting file and folder names with rclone, you may want to pay attention to this limitation because the encrypted names are typically longer than the original ones.

OneDrive seems to be OK with at least 50,000 files in a folder, but at 100,000 rclone will get errors listing the directory like couldn’t list files: UnknownError:. See #2707 for more info.

An official document about the limitations for different types of OneDrive can be found here.

Every change in a file OneDrive causes the service to create a new version of the file. This counts against a users quota. For example changing the modification time of a file creates a second version, so the file apparently uses twice the space.

For example the copy command is affected by this as rclone copies the file and then afterwards sets the modification time to match the source file which uses another version.

You can use the rclone cleanup command (see below) to remove all old versions.

Or you can set the no_versions parameter to true and rclone will remove versions after operations which create new versions. This takes extra transactions so only enable it if you need it.

Starting October 2018, users will no longer be able to disable versioning by default. This is because Microsoft has brought an update to the mechanism. To change this new default setting, a PowerShell command is required to be run by a SharePoint admin. If you are an admin, you can run these commands in PowerShell to change that setting:

  1. Install-Module -Name Microsoft.Online.SharePoint.PowerShell (in case you haven’t installed this already)
  2. Import-Module Microsoft.Online.SharePoint.PowerShell -DisableNameChecking
  3. Connect-SPOService -Url https://YOURSITE-admin.sharepoint.com -Credential YOU@YOURSITE.COM (replacing YOURSITE, YOU, YOURSITE.COM with the actual values; this will prompt for your credentials)
  4. Set-SPOTenant -EnableMinimumVersionRequirement $False
  5. Disconnect-SPOService (to disconnect from the server)

Below are the steps for normal users to disable versioning. If you don’t see the “No Versioning” option, make sure the above requirements are met.

User Weropol has found a method to disable versioning on OneDrive

  1. Open the settings menu by clicking on the gear symbol at the top of the OneDrive Business page.
  2. Click Site settings.
  3. Once on the Site settings page, navigate to Site Administration > Site libraries and lists.
  4. Click Customize “Documents”.
  5. Click General Settings > Versioning Settings.
  6. Under Document Version History select the option No versioning. Note: This will disable the creation of new file versions, but will not remove any previous versions. Your documents are safe.
  7. Apply the changes by clicking OK.
  8. Use rclone to upload or modify files. (I also use the --no-update-modtime flag)
  9. Restore the versioning settings after using rclone. (Optional)

OneDrive supports rclone cleanup which causes rclone to look through every file under the path supplied and delete all version but the current version. Because this involves traversing all the files, then querying each file for versions it can be quite slow. Rclone does --checkers tests in parallel. The command also supports --interactive/i or --dry-run which is a great way to see what it would do.

rclone cleanup --interactive remote:path/subdir # interactively remove all old version for path/subdir
rclone cleanup remote:path/subdir # unconditionally remove all old version for path/subdir

Excessive throttling or blocked on SharePoint

Section titled “Excessive throttling or blocked on SharePoint”

If you experience excessive throttling or is being blocked on SharePoint then it may help to set the user agent explicitly with a flag like this: --user-agent "ISV|rclone.org|rclone/v1.55.1"

The specific details can be found in the Microsoft document: Avoid getting throttled or blocked in SharePoint Online

Unexpected file size/hash differences on Sharepoint

Section titled “Unexpected file size/hash differences on Sharepoint”

It is a known issue that Sharepoint (not OneDrive or OneDrive for Business) silently modifies uploaded files, mainly Office files (.docx, .xlsx, etc.), causing file size and hash checks to fail. There are also other situations that will cause OneDrive to report inconsistent file sizes. To use rclone with such affected files on Sharepoint, you may disable these checks with the following command line arguments:

--ignore-checksum --ignore-size

Alternatively, if you have write access to the OneDrive files, it may be possible to fix this problem for certain files, by attempting the steps below. Open the web interface for OneDrive and find the affected files (which will be in the error messages/log for rclone). Simply click on each of these files, causing OneDrive to open them on the web. This will cause each file to be converted in place to a format that is functionally equivalent but which will no longer trigger the size discrepancy. Once all problematic files are converted you will no longer need the ignore options above.

Replacing/deleting existing files on Sharepoint gets “item not found”

Section titled “Replacing/deleting existing files on Sharepoint gets “item not found””

It is a known issue that Sharepoint (not OneDrive or OneDrive for Business) may return “item not found” errors when users try to replace or delete uploaded files; this seems to mainly affect Office files (.docx, .xlsx, etc.) and web files (.html, .aspx, etc.). As a workaround, you may use the --backup-dir <BACKUP_DIR> command line argument so rclone moves the files to be replaced/deleted into a given backup directory (instead of directly replacing/deleting them). For example, to instruct rclone to move the files into the directory rclone-backup-dir on backend mysharepoint, you may use:

--backup-dir mysharepoint:rclone-backup-dir
Error: access_denied
Code: AADSTS65005
Description: Using application 'rclone' is currently not supported for your organization [YOUR_ORGANIZATION] because it is in an unmanaged state. An administrator needs to claim ownership of the company by DNS validation of [YOUR_ORGANIZATION] before the application rclone can be provisioned.

This means that rclone can’t use the OneDrive for Business API with your account. You can’t do much about it, maybe write an email to your admins.

However, there are other ways to interact with your OneDrive account. Have a look at the WebDAV backend: https://rclone.org/webdav/#sharepoint

Error: invalid_grant
Code: AADSTS50076
Description: Due to a configuration change made by your administrator, or because you moved to a new location, you must use multi-factor authentication to access '...'.

If you see the error above after enabling multi-factor authentication for your account, you can fix it by refreshing your OAuth refresh token. To do that, run rclone config, and choose to edit your OneDrive backend. Then, you don’t need to actually make any changes until you reach this question: Token already configured - replace it?. For this question, answer y and go through the process to refresh your token, just like the first time the backend is configured. After this, rclone should work again for this backend.

On Sharepoint and OneDrive for Business, rclone link may return an “Invalid request” error. A possible cause is that the organisation admin didn’t allow public links to be made for the organisation/sharepoint library. To fix the permissions as an admin, take a look at the docs: 1, 2.

Shared with me files is not supported by rclone currently, but there is a workaround:

  1. Visit https://onedrive.live.com
  2. Right click a item in Shared, then click Add shortcut to My files in the context make_shortcut
  3. The shortcut will appear in My files, you can access it with rclone, it behaves like a normal folder/file. in_my_files rclone_mount

Listing such a shortcut may still fail with

invalidRequest: The provided drive id appears to be malformed, or does not represent a valid drive.

as the drive it points to can’t always be read with the drive ID the API supplies. Personal Vault is a shortcut of the same kind and fails to list in the same way, though it reports invalidResourceId: ObjectHandle is Invalid.

A normal listing reports the error for that folder and carries on, so the rest of the drive is still listed, and excluding the folder (for example with --exclude "/Personal Vault/**") avoids the error.

A recursive listing with --fast-list stops at the first error, so listing the root of a drive which has one of these shortcuts in it will fail. Filters don’t help here as the folder is listed by the backend before the filters are applied - use --disable ListR (or don’t use --fast-list) on such a drive.

Live Photos uploaded from iOS (small video clips in .heic files)

Section titled “Live Photos uploaded from iOS (small video clips in .heic files)”

The iOS OneDrive app introduced upload and storage of Live Photos in 2020. The usage and download of these uploaded Live Photos is unfortunately still work-in-progress and this introduces several issues when copying, synchronising and mounting – both in rclone and in the native OneDrive client on Windows.

The root cause can easily be seen if you locate one of your Live Photos in the OneDrive web interface. Then download the photo from the web interface. You will then see that the size of downloaded .heic file is smaller than the size displayed in the web interface. The downloaded file is smaller because it only contains a single frame (still photo) extracted from the Live Photo (movie) stored in OneDrive.

The different sizes will cause rclone copy/sync to repeatedly recopy unmodified photos something like this:

DEBUG : 20230203_123826234_iOS.heic: Sizes differ (src 4470314 vs dst 1298667)
DEBUG : 20230203_123826234_iOS.heic: sha1 = fc2edde7863b7a7c93ca6771498ac797f8460750 OK
INFO : 20230203_123826234_iOS.heic: Copied (replaced existing)

These recopies can be worked around by adding --ignore-size. Please note that this workaround only syncs the still-picture not the movie clip, and relies on modification dates being correctly updated on all files in all situations.

The different sizes will also cause rclone check to report size errors something like this:

ERROR : 20230203_123826234_iOS.heic: sizes differ

These check errors can be suppressed by adding --ignore-size.

The different sizes will also cause rclone mount to fail downloading with an error something like this:

ERROR : 20230203_123826234_iOS.heic: ReadFileHandle.Read error: low level retry 1/10: unexpected EOF

or like this when using --cache-mode=full:

INFO : 20230203_123826234_iOS.heic: vfs cache: downloader: error count now 1: vfs reader: failed to write to cache file: 416 Requested Range Not Satisfiable:
ERROR : 20230203_123826234_iOS.heic: vfs cache: failed to download: vfs reader: failed to write to cache file: 416 Requested Range Not Satisfiable: