WebDAV mounts loses precision, only gives up to second precision

What is the problem you are having with rclone?

I'm trying out Rclone. I want to read/write files with nanosecond timestamp resolution, when I mount a folder on my phone to my computer.

The timestamp I want to set the file to is naturally, the timestamp I have on my computer, with also has nanosecond timestamp resolution.

This is something that SSHFS, and many other file server protocols I looked at, cannot do. SSHFS only goes up to 1s in precision.

Rclone actually includes nanosecond timestamps, when it hosts my remote. I know this as I can see in the page's source:

<td class="hideable"><time datetime="2022-12-28 02:16:12.590141948 &#43;0000 UTC">2022-12-28 02:16:12.590141948 &#43;0000 UTC</time></td>

However when I mount a WebDAV folder on Rclone, I only get up to 1s in precision.

The remote is my phone, where I also have Rclone installed.

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

rclone 1.61.1-termux
- os/version: unknown
- os/kernel: 5.10.107-android13-4-00004-g6522bf85d262-ab8935228 (armv8l)
- os/type: android
- os/arch: arm
- go/version: go1.19.4
- go/linking: dynamic
- go/tags: noselfupdate
rclone v1.61.1
- os/version: arch (64 bit)
- os/kernel: 6.0.12-arch1-1 (x86_64)
- os/type: linux
- os/arch: amd64
- go/version: go1.19.4
- go/linking: dynamic
- go/tags: none

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

WebDAV on my phone.

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

rclone mount phone_pixel7_steven:/ $TMPDIR/mnt_phone/

The rclone config contents with secrets removed.

On my phone:

[localhost]
type = local

On my computer. Note I have localhost here, as I have a SSH tunnel with my phone.

[phone_pixel7_steven]
type = webdav
url = http://localhost:8082
vendor = other

A log from the command with the -vv flag

$ rclone -vv mount phone_pixel7_steven:/ $TMPDIR/mnt_phone/
2023/01/16 23:02:46 DEBUG : rclone: Version "v1.61.1" starting with parameters ["rclone" "-vv" "mount" "phone_pixel7_steven:/" "/run/user/1000/mnt_phone/"]
2023/01/16 23:02:46 DEBUG : Creating backend with remote "phone_pixel7_steven:/"
2023/01/16 23:02:46 DEBUG : Using config file from "/home/steven/.config/rclone/rclone.conf"
2023/01/16 23:02:46 DEBUG : found headers:
2023/01/16 23:02:46 DEBUG : fs cache: renaming cache item "phone_pixel7_steven:/" to be canonical "phone_pixel7_steven:"
2023/01/16 23:02:46 INFO  : webdav root '': poll-interval is not supported by this remote
2023/01/16 23:02:46 NOTICE: webdav root '': --vfs-cache-mode writes or full is recommended for this remote as it can't stream
2023/01/16 23:02:46 DEBUG : webdav root '': Mounting on "/run/user/1000/mnt_phone/"
2023/01/16 23:02:46 DEBUG : : Root:
2023/01/16 23:02:46 DEBUG : : >Root: node=/, err=<nil>
2023/01/16 23:02:46 DEBUG : /: Lookup: name=".Trash"
2023/01/16 23:02:46 DEBUG : /: >Lookup: node=<nil>, err=no such file or directory
2023/01/16 23:02:46 DEBUG : /: Lookup: name=".Trash-1000"
2023/01/16 23:02:46 DEBUG : /: >Lookup: node=<nil>, err=no such file or directory
2023/01/16 23:03:09 DEBUG : /: Attr:
2023/01/16 23:03:09 DEBUG : /: >Attr: attr=valid=1s ino=0 size=0 mode=drwxr-xr-x, err=<nil>
2023/01/16 23:03:09 DEBUG : /: ReadDirAll:
2023/01/16 23:03:09 DEBUG : /: >ReadDirAll: item=299, err=<nil>
2023/01/16 23:03:09 DEBUG : /: Lookup: name="bypass-paywalls-chrome-master.zip"
2023/01/16 23:03:09 DEBUG : /: >Lookup: node=bypass-paywalls-chrome-master.zip, err=<nil>
2023/01/16 23:03:09 DEBUG : bypass-paywalls-chrome-master.zip: Attr:
2023/01/16 23:03:09 DEBUG : bypass-paywalls-chrome-master.zip: >Attr: a=valid=1s ino=0 size=339442 mode=-rw-r--r--, err=<nil>
^C2023/01/16 23:03:14 INFO  : Signal received: interrupt
2023/01/16 23:03:14 ERROR : /run/user/1000/mnt_phone/: Unmounted rclone mount
2023/01/16 23:03:14 INFO  : Exiting...

hello and welcome to the forum,

rclone relies on the backend and in this case, your webdav server seems to have second precision.

this can be seen from rclone backend features name.of.your.remote:, values are in nanoseconds.
for webdav - "Precision": 1000000000 so that is one second.
for aws s3 - "Precision": 1 so that is one nanosecond.

the mount is pointing to the webdav server, which as 1s precision

rclone backend features localhost:
{
        "Name": "localhost",
        "Precision": 1,

note: rclone can emulate a webdav server
rclone serve webdav /run/user/1000/mnt_phone/

The WebDAV protocol only allows for 1 second precision of timestamps unfortunately.

15.7. getlastmodified

Property Name: getlastmodified
Purpose: Contains the Last-Modified header value (from Section 14.29 of [RFC2616]) as it would be returned by a GET method without accept headers. Value: rfc1123-date (defined in Section 3.3.1 of [RFC2616])

And an RFC1123 date does not supply fractional seconds :frowning:

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.