WebDAV notes

From Helpful
Jump to navigation Jump to search

Intro

WebDAV is an extension of HTTP, adding concepts like resources, collections, permissions, and locks.


This has mostly been used to model files, directories.

And more practically used to exchange files and directories, seen e.g. as

  • remote shares
  • one way of talking subversion
  • file syncing like in owncloud/nextcloud


Command line clients

rclone

supports various interfaces
does parallel transfers
allows filtering a la rsync's
seems better behaved around large amounts of files than duck is
messages could be made more human-readable and/or computer-parseable
transfers while figuring out what to sync. Can be much faster than preparing first
https://rclone.org/


duck

https://duck.sh/
(supports the various protocols that cyberduck does)
parallel transfers itself
starts transfers only after completely preparing it. Worst case this can take much longer
https://trac.cyberduck.io/wiki/help/en/howto/cli


Cadaver (*nix, cygwin)

interface like CLI ftp
http://www.webdav.org/cadaver/


curl/libcurl (win, lin, osx, more[1])

https://curl.haxx.se/


(Haven't looked at yet):

Davix (lin, osx)

https://dmc.web.cern.ch/projects/davix/home


kioclient cp file.txt 'webdavs://user@webdav.example.com:443/'

DavCopy (win)

http://www.jamesitsolutions.com/techtips/davcopy.htm

nd

less featured than e.g. cadaver

hdav

low on features?


rclone notes

rclone aims to be an rsync-alike for a few handfuls of cloudy services.

..in that it selects by mtime+size (not the rolling-hash changes). Note that plain WebDAV does not expose mtime, but owncloud and nextcoud do and this is supported.


By default it will parallelize, and retry a bunch, so is relatively fast and robust.


To use:

  • create a named configuration for your remote site (stores an ini-like file in a place like ~/.config/rclone/rclone.conf), via
rclone config


Use the various subcommands, e.g.

rclone copy /home/source remotename:dirname    # copy to or from a remote location
rclone ls remote:                              # list directories (lsd), trees (ls)


Note that you can use filtering imitating rsync's, e.g.

rclone copy /local remote:rpath -f '+ *.jpg' -f '- *'

And tricks like

rclone lsf --files-only -R --format p remote:path >flist.txt #, editing that file, and doing
rclone copy remote:path local/path -v --include-from flist.txt


Notes:

  • use -n (--dry-run) to check that filtering does what you think it does
  • --stats timespec gives you that '#errors, #checked, #transferred, transferring:' summary at the given interval
(currently) only appears when also using -v
though in recent versions you can get it without -v via --stats timespec' --stats-log-level NOTICE


  • --log-level is similar to -v
-vv is DEBUG
-v is INFO
default is NOTICE (prints mostly errors)
-q is ERROR


See also:

duck notes

Don't use relative paths, it gets confused by them, with less-than-useful errors.


--existing / -e

  • -e resume appends existing files
  • -e skip skips files that exist at all
  • -e compare skips files that match size and modification date (and protocol allowing, checksum(verify))
  • -e overwrite overwrites all files that exist already
  • -e cancel
  • -e similar
  • -e rename uploads under a filename with a timestamp


See also:

curl notes

https://code.blogs.iiidefix.net/posts/webdav-with-curl/


GUI clients

Cyberduck (win, osx) (free)

WinSCP (win) (free)

KDE's conqueror (linux)

GNOME (linux)

  • File > Connect to
note: start the URL with dav: or davs:


Libraries/code

Unsorted

http://www.ics.uci.edu/~ejw/authoring/implementation.html


Mounting

Windows

davfs2 notes

uses neon


package name is davfs2

filesystem in fstab is is davfs