Rclone sync gives 403 error on delete with OpenDrive

What is the problem you are having with rclone?

I am running a rclone sync against an OpenDrive backend from an Ubuntu VM. The sync works perfectly for new files, but its failing with a "403 Permission Denied" when it tries to delete a file that exists in the destination, but not in the source. I have tried logging into the OpenDrive web ui with the same user doing the sync and am able to delete files that give the error.

I have also tried pushing a new file, and then deleting (both with sync) and can reproduce at will (confirming its not old permissions issues or something)

I have opened a ticket with OpenDrive, but since it works in the WebUI I have little confidence on getting a good response back.

Run the command 'rclone version' and share the full output of the command.

rclone v1.69.0

  • os/version: ubuntu 22.04 (64 bit)
  • os/kernel: 5.15.0-130-generic (x86_64)
  • os/type: linux
  • os/arch: amd64
  • go/version: go1.23.4
  • go/linking: static
  • go/tags: snap

Which cloud storage system are you using? (eg Google Drive)

OpenDrive (https://www.opendrive.com) Personal Unlimited Plan

The command you were trying to run (eg rclone copy /tmp remote:tmp)

rclone sync /mnt/paperless_export/  OpenDrive:paperless_exports

Please run 'rclone config redacted' and share the full output. If you get command not found, please make sure to update rclone.

[OpenDrive]
type = opendrive
username = XXX
password = XXX
### Double check the config for sensitive info before posting publicly

A log from the command that you were trying to run with the -vv flag

Partial log below -vv command isn't giving anything more on the error, just adds a bunch of debug statements about unchanged files.

2025/01/29 05:56:02 ERROR : originals/2024/Receipt/2024-05-19_212211.pdf: Couldn't delete: Permission denied (Error 403)
2025/01/29 05:56:02 ERROR : originals/2024/Health Document/U64875C1X114340_02292024_213248_003867.pdf: Couldn't delete: Permission denied (Error 403)
2025/01/29 05:56:02 ERROR : originals/2024/Receipt/2024-05-19_163440.pdf: Couldn't delete: Permission denied (Error 403)
2025/01/29 05:56:02 ERROR : originals/2024/RxDetail/U64875C1X114340_05192024_162852_004126.pdf: Couldn't delete: Permission denied (Error 403)
2025/01/29 05:56:02 ERROR : originals/2024/RxDetail/U64875C1X114340_04122024_160035_003995.pdf: Couldn't delete: Permission denied (Error 403)
2025/01/29 05:56:02 ERROR : OpenDrive root 'paperless_exports': not deleting directories as there were IO errors
2025/01/29 05:56:02 ERROR : Attempt 3/3 failed with 120 errors and: failed to delete 119 files
2025/01/29 05:56:02 INFO  :
Transferred:              0 B / 0 B, -, 0 B/s, ETA -
Errors:               120 (retrying may help)
Checks:             13896 / 13896, 100%
Deleted:              357 (files), 0 (dirs), 58.883 MiB (freed)
Elapsed time:        18.2s

2025/01/29 05:56:02 DEBUG : 25 go routines active
2025/01/29 05:56:02 NOTICE: Failed to sync with 120 errors: last error was: failed to delete 119 files

Thanks much to any/all who reply :slight_smile:

welcome to the forum,

that is the response from the server, not sure what rclone can do about that.


for a deeper look at the api calls, try --dump=headers --retries=1

I'm a bit confused by the --dump=headers output. I think there are concurrent threads writing to the logs so putting lines out of order. Is there an option to disable/reduce the number of concurrent threads?

This is some of the output... the debug "titles" don't seem to match the actual API call.

2025/01/29 13:32:20 DEBUG : >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2025/01/29 13:32:20 DEBUG : <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
2025/01/29 13:32:20 DEBUG : HTTP RESPONSE (req 0xc000d95680)
2025/01/29 13:32:20 DEBUG : HTTP/1.1 403 Forbidden
Transfer-Encoding: chunked
Access-Control-Allow-Origin: *
Cache-Control: no-cache, must-revalidate
Connection: keep-alive
Content-Language: en
Content-Type: application/json; charset=utf-8
Date: Wed, 29 Jan 2025 13:32:20 GMT
Expires: 0
Serverid: s5
Strict-Transport-Security: max-age=63072000; includeSubDomains
X-Powered-By: OpenDrive.com

2025/01/29 13:32:20 DEBUG : <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
2025/01/29 13:32:20 ERROR : originals/2024/Receipt/Scott, Thanks for your Purchase!  Your e-Receipt Inside!.eml: Couldn't delete: Permission denied (Error 403)
2025/01/29 13:32:20 DEBUG : >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2025/01/29 13:32:20 DEBUG : HTTP REQUEST (req 0xc000cb17c0)
2025/01/29 13:32:20 DEBUG : DELETE /api/v1/file.json/d56306208f5f50583abea96bd563a3cbd75fa604920b4d6b2c3b2a76cc15baed/NjBfMTM3ODQzODcwX1RISUEw HTTP/1.1
Host: dev.opendrive.com
User-Agent: rclone/v1.69.0
Accept-Encoding: gzip

2025/01/29 13:32:20 DEBUG : >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2025/01/29 13:32:20 DEBUG : <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
2025/01/29 13:32:20 DEBUG : HTTP RESPONSE (req 0xc000d95b80)
2025/01/29 13:32:20 DEBUG : HTTP/1.1 403 Forbidden
Transfer-Encoding: chunked
Access-Control-Allow-Origin: *
Cache-Control: no-cache, must-revalidate
Connection: keep-alive
Content-Language: en
Content-Type: application/json; charset=utf-8
Date: Wed, 29 Jan 2025 13:32:20 GMT
Expires: 0
Serverid: s9
Strict-Transport-Security: max-age=63072000; includeSubDomains
X-Powered-By: OpenDrive.com

2025/01/29 13:32:20 DEBUG : <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
2025/01/29 13:32:20 ERROR : originals/1980/EOB/U64875C1X114340_09062024_152423_004524.pdf: Couldn't delete: Permission denied (Error 403)
2025/01/29 13:32:20 DEBUG : >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2025/01/29 13:32:20 DEBUG : HTTP REQUEST (req 0xc000cb1cc0)
2025/01/29 13:32:20 DEBUG : DELETE /api/v1/file.json/d56306208f5f50583abea96bd563a3cbd75fa604920b4d6b2c3b2a76cc15baed/NjBfMTM3ODQzODc5X0RUaGZU HTTP/1.1
Host: dev.opendrive.com
User-Agent: rclone/v1.69.0
Accept-Encoding: gzip

2025/01/29 13:32:20 DEBUG : >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

as a quick test, i created and then deleted a file in opendrive, worked as expected.

rclone touch opendrive:zork/file.ext -v

rclone delete opendrive:zork/file.ext -vv
2025/01/29 10:21:35 DEBUG : rclone: Version "v1.69.0" starting with parameters ["rclone" "delete" "opendrive:zork/file.ext" "-vv"]
2025/01/29 10:21:35 DEBUG : Creating backend with remote "opendrive:zork/file.ext"
2025/01/29 10:21:35 DEBUG : Using config file from "c:\\data\\rclone\\rclone.conf"
2025/01/29 10:21:35 DEBUG : Starting OpenDrive session with ID: 60de8d655c8a770263c8325c9adc0b6ea283c0361c79b25fab9627837af6dadc
2025/01/29 10:21:36 DEBUG : fs cache: renaming child cache item "opendrive:zork/file.ext" to be canonical for parent "opendrive:zork"
2025/01/29 10:21:36 DEBUG : Waiting for deletions to finish
2025/01/29 10:21:36 INFO  : file.ext: Deleted

The only difference for me is i'm doing a sync option... not a direct rclone delete