Cannot download files having "[]" in their names from https://dav.box.com/dav

What is the problem you are having with rclone?

I am using Box through type = webdav. I cannot download files having "[" and "]" in the file name.
However, I can download all the files if I use type = box.

What is your rclone version (output from rclone version)

rclone v1.56.0

Which OS you are using and how many bits (eg Windows 7, 64 bit)

  • os/version: ubuntu 20.04 (64 bit)
  • os/kernel: 5.8.0-1037-oracle (x86_64)
  • os/type: linux
  • os/arch: amd64
  • go/version: go1.16.5
  • go/linking: static
  • go/tags: none

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

Box

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

rclone copy box:[file] . -vv

The rclone config contents with secrets removed.

[box]
type = webdav
url = https://dav.box.com/dav
vendor = other
user = 
pass = 

A log from the command with the -vv flag

2021/08/15 16:47:57 DEBUG : rclone: Version "v1.56.0" starting with parameters ["rclone" "copy" "box:[file]" "." "-vv"]
2021/08/15 16:47:57 DEBUG : Creating backend with remote "box:[file]"
2021/08/15 16:47:57 DEBUG : Using config file from "/home/user/.config/rclone/rclone.conf"
2021/08/15 16:47:57 DEBUG : found headers: 
2021/08/15 16:47:58 DEBUG : fs cache: adding new entry for parent of "box:[file]", "box:"
2021/08/15 16:47:58 DEBUG : Creating backend with remote "."
2021/08/15 16:47:58 DEBUG : fs cache: renaming cache item "." to be canonical "/home/user"
2021/08/15 16:47:58 DEBUG : [file]: Need to transfer - File not found at Destination
2021/08/15 16:47:58 ERROR : [file]: Failed to copy: failed to open source object: 400 Bad Request
2021/08/15 16:47:58 ERROR : Attempt 1/3 failed with 1 errors and: failed to open source object: 400 Bad Request
2021/08/15 16:47:59 DEBUG : [file]: Need to transfer - File not found at Destination
2021/08/15 16:47:59 ERROR : [file]: Failed to copy: failed to open source object: 400 Bad Request
2021/08/15 16:47:59 ERROR : Attempt 2/3 failed with 1 errors and: failed to open source object: 400 Bad Request
2021/08/15 16:47:59 DEBUG : [file]: Need to transfer - File not found at Destination
2021/08/15 16:47:59 ERROR : [file]: Failed to copy: failed to open source object: 400 Bad Request
2021/08/15 16:47:59 ERROR : Attempt 3/3 failed with 1 errors and: failed to open source object: 400 Bad Request
2021/08/15 16:47:59 INFO  : 
Transferred:   	          0 / 0 Byte, -, 0 Byte/s, ETA -
Errors:                 1 (retrying may help)
Elapsed time:         2.1s

2021/08/15 16:47:59 DEBUG : 5 go routines active
2021/08/15 16:47:59 Failed to copy: failed to open source object: 400 Bad Request

Hi Yang,

Welcome, good first post!

I suggest we try to find out if the issue is due to the rclone webdav remote or the webdav server at Box (or a combination).

If we can find a sequence to reproduce the issue using only rclone, then we can try it at against another webdav server (e.g. rclone serve webdav).

Are you able to reproduce the issue using a simple sequence like this:

rclone touch webdav@box:testfolder/[testfile]
rclone lsl webdav@box:testfolder
rclone copy webdav@box:testfolder ./testfolder --ignore-times --dry-run --retries=1 -vv
rclone copy webdav@box:testfolder/[testfile] ./testfolder --ignore-times --dry-run --retries=1 -vv

Note: I use the name webdaw@box to avoid confusion with the direct Box remote, I mean the webdav remote you called [box].

Thanks for your quick reply.

Yes. I can reproduce the issue using your commands. In addition, I start a server by rclone serve webdav box@box: and add the local webdav config. I can copy the [testfile] from the local webdav.

I guess the issue caused by that the encoding of "[" and "]" are different in box dav server.

The following are the outputs.

user@instance:~$ rclone touch box:testfolder/[testfile]
user@instance:~$ rclone lsl box:testfolder
        0 2021-08-17 23:08:25.000000000 [testfile]
user@instance:~$ rclone copy box:testfolder ./testfolder --ignore-times --dry-run --retries=1 -vv
2021/08/17 23:09:00 DEBUG : rclone: Version "v1.56.0" starting with parameters ["rclone" "copy" "box:testfolder" "./testfolder" "--ignore-times" "--dry-run" "--retries=1" "-vv"]
2021/08/17 23:09:00 DEBUG : Creating backend with remote "box:testfolder"
2021/08/17 23:09:00 DEBUG : Using config file from "/home/user/.config/rclone/rclone.conf"
2021/08/17 23:09:00 DEBUG : found headers: 
2021/08/17 23:09:00 DEBUG : Creating backend with remote "./testfolder"
2021/08/17 23:09:00 DEBUG : fs cache: renaming cache item "./testfolder" to be canonical "/home/user/testfolder"
2021/08/17 23:09:01 DEBUG : Local file system at /home/user/testfolder: Waiting for checks to finish
2021/08/17 23:09:01 NOTICE: [testfile]: Skipped copy as --dry-run is set (size 0)
2021/08/17 23:09:01 DEBUG : Local file system at /home/user/testfolder: Waiting for transfers to finish
2021/08/17 23:09:01 NOTICE: 
Transferred:   	          0 / 0 Byte, -, 0 Byte/s, ETA -
Transferred:            1 / 1, 100%
Elapsed time:         1.0s

2021/08/17 23:09:01 DEBUG : 4 go routines active
user@instance:~$ rclone copy box:testfolder/[testfile] ./testfolder --ignore-times --dry-run --retries=1 -vv
2021/08/17 23:09:30 DEBUG : rclone: Version "v1.56.0" starting with parameters ["rclone" "copy" "box:testfolder/[testfile]" "./testfolder" "--ignore-times" "--dry-run" "--retries=1" "-vv"]
2021/08/17 23:09:30 DEBUG : Creating backend with remote "box:testfolder/[testfile]"
2021/08/17 23:09:30 DEBUG : Using config file from "/home/user/.config/rclone/rclone.conf"
2021/08/17 23:09:30 DEBUG : found headers: 
2021/08/17 23:09:30 DEBUG : fs cache: adding new entry for parent of "box:testfolder/[testfile]", "box:testfolder"
2021/08/17 23:09:30 DEBUG : Creating backend with remote "./testfolder"
2021/08/17 23:09:30 DEBUG : fs cache: renaming cache item "./testfolder" to be canonical "/home/user/testfolder"
2021/08/17 23:09:31 DEBUG : [testfile]: Need to transfer - File not found at Destination
2021/08/17 23:09:31 NOTICE: [testfile]: Skipped copy as --dry-run is set (size 0)
2021/08/17 23:09:31 NOTICE: 
Transferred:   	          0 / 0 Byte, -, 0 Byte/s, ETA -
Transferred:            1 / 1, 100%
Elapsed time:         0.7s

2021/08/17 23:09:31 DEBUG : 4 go routines active
user@instance:~$ rclone copy box:testfolder ./testfolder --ignore-times --retries=1 -vv
2021/08/17 23:10:22 DEBUG : rclone: Version "v1.56.0" starting with parameters ["rclone" "copy" "box:testfolder" "./testfolder" "--ignore-times" "--retries=1" "-vv"]
2021/08/17 23:10:22 DEBUG : Creating backend with remote "box:testfolder"
2021/08/17 23:10:22 DEBUG : Using config file from "/home/user/.config/rclone/rclone.conf"
2021/08/17 23:10:22 DEBUG : found headers: 
2021/08/17 23:10:23 DEBUG : Creating backend with remote "./testfolder"
2021/08/17 23:10:23 DEBUG : fs cache: renaming cache item "./testfolder" to be canonical "/home/user/testfolder"
2021/08/17 23:10:23 DEBUG : Local file system at /home/user/testfolder: Waiting for checks to finish
2021/08/17 23:10:23 DEBUG : Local file system at /home/user/testfolder: Waiting for transfers to finish
2021/08/17 23:10:23 ERROR : [testfile]: Failed to copy: failed to open source object: 400 Bad Request
2021/08/17 23:10:23 ERROR : Attempt 1/1 failed with 1 errors and: failed to open source object: 400 Bad Request
2021/08/17 23:10:23 INFO  : 
Transferred:   	          0 / 0 Byte, -, 0 Byte/s, ETA -
Errors:                 1 (retrying may help)
Elapsed time:         0.9s

2021/08/17 23:10:23 DEBUG : 5 go routines active
2021/08/17 23:10:23 Failed to copy: failed to open source object: 400 Bad Request

Perfect, good to know!

That is certainly a possibility, but then it is a bug in the Box webdav server using different encoding schemes when you create/touch and download.

You may therefore be able to reproduce using another webdav client. e.g. Cyberduck:
https://cyberduck.io/webdav/

I just noted this text on https://trac.cyberduck.io/wiki/help/en/howto/box.com:

Box.com WebDAV support reached end-of-life at October 25th, 2019

I guess that explains :cry:

I see. I think we can close this topic. Thanks