Rsync-style WebDAV synchronizer
iodeveloper/go-davsync:latest
-i /some/input/dir
- path of source directory. Default is local./
-iconf /input/config.json
- path to secrets and options. Default none - means local filesystem source-o /some/output/dir
- path of target directory. Default/
-oconf /output/config.json
path to secrets and options. Default.davsync
in workdir
- Suppose you have to sync out some local files into remote WebDAV folder
- Put local files into
./files/
. Structure in example:
> tree ./files files ├── 123 │ ├── 456 │ │ ├── apcupsd-3.14.14.tar.gz │ │ └── hp-laserjet-1018.zip │ └── unison-2.51.2.tar.gz ├── bar │ └── baz │ └── mipsel.bin ├── davsync-old-backup-2.log ├── davsync-old-backup-5.log ├── davsync-old-backup-6.log ├── davsync-old-backup.log ├── F50SLAS209.zip ├── foo │ └── F50SLAS209.zip ├── info.log ├── mipsel.bin └── vscode.tar.gz
- Put remote config to
./davconf.json
. For example:
{ "Type": "Webdav", "WebdavOptions": { "DavUri": "https://webdav.yandex.ru/", "AuthUser": "YOUR_USER", "AuthPass": "YOUR_PASSWORD" }, }
- Specify remote destination directory
-o /Uploads/01/
- Set desired max number of threads
-threads 4
- Run with local binary (built by
build.sh
orbuild-with-docker.sh
):
{path_to_davsync_folder}/bin/davsync \ -i $(pwd)/files \ -o "/Uploads/01" \ -oconf $(pwd)/davconf.json \ -threads 4
- Or run the same with docker without building:
docker run --rm \ -v $(pwd)/files:/input \ -v $(pwd)/davconf.json:/davconf.json \ iodeveloper/go-davsync:latest \ -i /input \ -o "/Uploads/01" \ -oconf /davconf.json \ -threads 4
- Output should be like this:
Sync: Making dirs... Sync: make dir / Sync: make dir /123/ Sync: make dir /123/456/ Sync: make dir /bar/ Sync: make dir /bar/baz/ Sync: make dir /foo/ Sync: UPL 0.0% 0/0: Handling... Sync: UPL 0.0% 0/19: Complete / Sync: UPL 5.3% 1/19: Complete /123/ Sync: UPL 10.5% 2/19: Complete /123/456/ Sync: UPL 15.8% 3/19: Complete /F50SLAS209.zip Sync: UPL 21.1% 4/19: Complete /bar/ Sync: UPL 26.3% 5/19: Complete /bar/baz/ Sync: UPL 31.6% 6/19: Complete /123/unison-2.51.2.tar.gz Sync: UPL 36.8% 7/19: Complete /123/456/hp-laserjet-1018.zip Sync: UPL 42.1% 8/19: Complete /123/456/apcupsd-3.14.14.tar.gz Sync: UPL 47.4% 9/19: Complete /bar/baz/mipsel.bin Sync: UPL 52.6% 10/19: Complete /davsync-old-backup-6.log Sync: UPL 57.9% 11/19: Complete /foo/ Sync: UPL 63.2% 12/19: Complete /davsync-old-backup-2.log Sync: UPL 68.4% 13/19: Complete /davsync-old-backup.log Sync: UPL 73.7% 14/19: Complete /foo/F50SLAS209.zip Sync: UPL 78.9% 15/19: Complete /info.log Sync: UPL 84.2% 16/19: Complete /mipsel.bin Sync: UPL 89.5% 17/19: Complete /davsync-old-backup-5.log Sync: UPL 94.7% 18/19: Complete /vscode.tar.gz Sync: UPL 100.0% 19/19: Complete Sync: DEL 0.0% 0/0: Handling... Sync: DEL 0.0% 0/0: Nothing to do Sync: Listening thread logs finished Done.
bin/davsync -i /local/input -o /dav/output -oconf /tmp/oconf.json
User/pass auth /tmp/oconf.json
{ "Type": "Webdav", "WebdavOptions": { "DavUri": "https://webdav.yandex.ru/", "AuthUser": "YOUR_USER", "AuthPass": "YOUR_PASSWORD" }, }
Or token auth /tmp/oconf.json
{ "Type": "Webdav", "WebdavOptions": { "DavUri": "https://webdav.yandex.ru/", "AuthToken": "YOUR_TOKEN", "AuthTokenType": "OAuth" }, }
Pure REST is slower than composition of DAV for files + REST for file-tree & hashes
bin/davsync -i /local/input -o /yadisk/output -oconf /tmp/oconf.json
/tmp/oconf.json
{ "Type": "Yadisk", "WebdavOptions": { "DavUri": "https://webdav.yandex.ru/", "AuthToken": "YOUR_TOKEN", "AuthTokenType": "OAuth" }, "YadiskRestOptions": { "ApiUri": "https://cloud-api.yandex.net/v1/disk", "AuthToken": "YOUR_TOKEN", "AuthTokenType": "OAuth" } }
Be sure input and ouput directories are exist
bin/davsync -i /dav/input -iconf /tmp/oconf.json -o /local/output -oconf /tmp/oconf.json
/tmp/iconf.json
{ "Type": "Webdav", "WebdavOptions": { "DavUri": "https://webdav.yandex.ru/", "AuthToken": "YOUR_TOKEN", "AuthTokenType": "OAuth" }, }
/tmp/oconf.json
{ "Type": "Local" }