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 exchange of such,
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