WebDAV notes
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])
(Haven't looked at yet):
Davix (lin, osx)
kioclient cp file.txt 'webdavs://user@webdav.example.com:443/'
DavCopy (win)
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:
- Download from https://rclone.org/downloads/
- 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