Skip to content

io-developer/go-davsync

Repository files navigation

go-davsync

Rsync-style WebDAV synchronizer

Docker Automated build

Docker Hub repository

iodeveloper/go-davsync:latest

Usage

  • -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

Example

  • 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 or build-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. 

Other examples

Local to DAV

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" }, }

Local to YandexDisk

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" } }

DAV to local

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" }

About

WebDAV synchronization in rsync style

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages