1
0
Fork
You've already forked davsync
0
No description
  • C 77.5%
  • Tcl 12.1%
  • Shell 9.1%
  • Roff 1%
  • Makefile 0.3%
2026年03月30日 23:07:19 +02:00
autosetup davsync: initial commit 2026年03月25日 08:47:50 +01:00
davsync http: implement keep alive 2026年03月30日 23:07:19 +02:00
mk davsync: initial commit 2026年03月25日 08:47:50 +01:00
auto.def davsync: initial commit 2026年03月25日 08:47:50 +01:00
configure davsync: initial commit 2026年03月25日 08:47:50 +01:00
Makefile.in davsync: initial commit 2026年03月25日 08:47:50 +01:00
README davsync: initial commit 2026年03月25日 08:47:50 +01:00

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.