No description
| autosetup | davsync: initial commit | |
| davsync | http: implement keep alive | |
| mk | davsync: initial commit | |
| auto.def | davsync: initial commit | |
| configure | davsync: initial commit | |
| Makefile.in | davsync: initial commit | |
| README | davsync: initial commit | |
davsync - bidirectional WebDAV synchronization =============================================== davsync is a command-line tool for bidirectional file synchronization between a local directory and a remote WebDAV collection. It presents an interactive sync plan before performing changes, similar to unison(1). Features -------- - Bidirectional sync: detects new, modified, and deleted files on both sides - Interactive conflict resolution (or automatic skip in batch mode) - Multiple sync profiles via INI configuration file - XDG Base Directory compliant (config and state) - Password retrieval via external command (e.g., pass, security) - Encrypted password storage (AES-256-GCM) with per-machine key - Passwords locked in memory (mlock) and erased on exit (explicit_bzero) - Privilege separation: filesystem and network in separate processes - Capsicum sandbox on FreeBSD (cap_enter in parent process) - rlimit restrictions on network child (no fs writes, limited fds) Requirements ------------ - C17 compiler - libcurl - expat - libcrypto (OpenSSL or LibreSSL) - pkg-config Building -------- ./configure make make install Configuration ------------- Create ~/.config/davsync/config (or $XDG_CONFIG_HOME/davsync/config): [work] local = /home/user/work url = https://dav.example.com/files/ username = alice password_command = pass show webdav/work [photos] local = /home/user/photos url = https://cloud.example.com/remote.php/dav/files/alice/Photos username = alice password_encrypted = a1b2c3d4e5f6... Usage ----- davsync work # sync the "work" profile davsync work photos # sync multiple profiles davsync -a # sync all profiles davsync -abn # all profiles, batch mode, dry run Encrypt a password for the config file: davsync encrypt Password: **** a1b2c3d4e5f6... Legacy mode (without config file): davsync -u alice -p secret ~/docs https://dav.example.com/files/ Sync state is stored in $XDG_STATE_HOME/davsync/<profile>/state (defaults to ~/.local/state/davsync/<profile>/state). License ------- BSD-2-Clause. See individual source files for details. inih (ini.c, ini.h) is BSD-3-Clause, Copyright (C) Ben Hoyt.