{"id":15374145,"url":"https://github.com/io-developer/go-davsync","last_synced_at":"2025-10-05T02:31:52.499Z","repository":{"id":57652911,"uuid":"291759315","full_name":"io-developer/go-davsync","owner":"io-developer","description":"WebDAV synchronization in rsync style","archived":false,"fork":false,"pushed_at":"2020-09-25T09:14:35.000Z","size":41289,"stargazers_count":5,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-28T21:37:58.929Z","etag":null,"topics":["dav","davsync","go","golang","rsync","sync","webdav","webdavsync"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/io-developer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-08-31T15:54:32.000Z","updated_at":"2023-11-03T07:15:39.000Z","dependencies_parsed_at":"2022-08-25T20:11:39.106Z","dependency_job_id":null,"html_url":"https://github.com/io-developer/go-davsync","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/io-developer%2Fgo-davsync","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/io-developer%2Fgo-davsync/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/io-developer%2Fgo-davsync/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/io-developer%2Fgo-davsync/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/io-developer","download_url":"https://codeload.github.com/io-developer/go-davsync/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249094932,"owners_count":21211837,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dav","davsync","go","golang","rsync","sync","webdav","webdavsync"],"created_at":"2024-10-01T13:57:24.849Z","updated_at":"2025-10-05T02:31:52.395Z","avatar_url":"https://github.com/io-developer.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# go-davsync\nRsync-style WebDAV synchronizer\n\n[![Docker Automated build](https://img.shields.io/docker/automated/iodeveloper/go-davsync.svg)](https://registry.hub.docker.com/r/iodeveloper/go-davsync)\n\n[![Docker Hub repository](http://dockeri.co/image/iodeveloper/go-davsync)](https://registry.hub.docker.com/r/iodeveloper/go-davsync)\n\n`iodeveloper/go-davsync:latest`\n\n## Usage\n* `-i /some/input/dir` - path of source directory. Default is local `./`\n* `-iconf /input/config.json` - path to secrets and options. Default none - means local filesystem source\n* `-o /some/output/dir` - path of target directory. Default `/`\n* `-oconf /output/config.json` path to secrets and options. Default `.davsync` in workdir\n\n## Example\n* Suppose you have to sync out some local files into remote WebDAV folder\n* Put local files into `./files/`. Structure in example: \n```\n\u003e tree ./files\n\nfiles\n├── 123\n│   ├── 456\n│   │   ├── apcupsd-3.14.14.tar.gz\n│   │   └── hp-laserjet-1018.zip\n│   └── unison-2.51.2.tar.gz\n├── bar\n│   └── baz\n│       └── mipsel.bin\n├── davsync-old-backup-2.log\n├── davsync-old-backup-5.log\n├── davsync-old-backup-6.log\n├── davsync-old-backup.log\n├── F50SLAS209.zip\n├── foo\n│   └── F50SLAS209.zip\n├── info.log\n├── mipsel.bin\n└── vscode.tar.gz\n\n```\n* Put remote config to `./davconf.json`. For example:\n```json\n{\n    \"Type\": \"Webdav\",\n    \"WebdavOptions\": {\n        \"DavUri\": \"https://webdav.yandex.ru/\",\n        \"AuthUser\": \"YOUR_USER\",\n        \"AuthPass\": \"YOUR_PASSWORD\"\n    },\n}\n```\n* Specify remote destination directory `-o /Uploads/01/`\n* Set desired max number of threads `-threads 4`\n* Run with local binary (built by `build.sh` or `build-with-docker.sh`):\n```bash\n{path_to_davsync_folder}/bin/davsync    \\\n    -i $(pwd)/files                     \\\n    -o \"/Uploads/01\"                    \\\n    -oconf $(pwd)/davconf.json          \\\n    -threads 4\n```\n* Or run the same with docker without building:\n```bash\ndocker run --rm                             \\\n    -v $(pwd)/files:/input                  \\\n    -v $(pwd)/davconf.json:/davconf.json    \\\n    iodeveloper/go-davsync:latest           \\\n        -i /input                           \\\n        -o \"/Uploads/01\"                    \\\n        -oconf /davconf.json                \\\n        -threads 4\n```\n* Output should be like this:\n```\nSync: Making dirs...\nSync:   make dir /\nSync:   make dir /123/\nSync:   make dir /123/456/\nSync:   make dir /bar/\nSync:   make dir /bar/baz/\nSync:   make dir /foo/\nSync: UPL   0.0%   0/0:  Handling...\nSync: UPL   0.0%   0/19:  Complete                          /                               \nSync: UPL   5.3%   1/19:  Complete                          /123/                           \nSync: UPL  10.5%   2/19:  Complete                          /123/456/                       \nSync: UPL  15.8%   3/19:  Complete                          /F50SLAS209.zip                 \nSync: UPL  21.1%   4/19:  Complete                          /bar/                           \nSync: UPL  26.3%   5/19:  Complete                          /bar/baz/                       \nSync: UPL  31.6%   6/19:  Complete                          /123/unison-2.51.2.tar.gz       \nSync: UPL  36.8%   7/19:  Complete                          /123/456/hp-laserjet-1018.zip   \nSync: UPL  42.1%   8/19:  Complete                          /123/456/apcupsd-3.14.14.tar.gz \nSync: UPL  47.4%   9/19:  Complete                          /bar/baz/mipsel.bin             \nSync: UPL  52.6%  10/19:  Complete                          /davsync-old-backup-6.log       \nSync: UPL  57.9%  11/19:  Complete                          /foo/                           \nSync: UPL  63.2%  12/19:  Complete                          /davsync-old-backup-2.log       \nSync: UPL  68.4%  13/19:  Complete                          /davsync-old-backup.log         \nSync: UPL  73.7%  14/19:  Complete                          /foo/F50SLAS209.zip             \nSync: UPL  78.9%  15/19:  Complete                          /info.log                       \nSync: UPL  84.2%  16/19:  Complete                          /mipsel.bin                     \nSync: UPL  89.5%  17/19:  Complete                          /davsync-old-backup-5.log       \nSync: UPL  94.7%  18/19:  Complete                          /vscode.tar.gz                  \nSync: UPL 100.0%  19/19:  Complete\nSync: DEL   0.0%   0/0:  Handling...\nSync: DEL   0.0%   0/0:  Nothing to do\nSync: Listening thread logs finished\n\n\nDone.\n```\n\n## Other examples\n\n### Local to DAV\n```bash\nbin/davsync -i /local/input -o /dav/output -oconf /tmp/oconf.json\n```\n\nUser/pass auth\n`/tmp/oconf.json`\n```json\n{\n    \"Type\": \"Webdav\",\n    \"WebdavOptions\": {\n        \"DavUri\": \"https://webdav.yandex.ru/\",\n        \"AuthUser\": \"YOUR_USER\",\n        \"AuthPass\": \"YOUR_PASSWORD\"\n    },\n}\n```\n\nOr token auth\n`/tmp/oconf.json`\n```json\n{\n    \"Type\": \"Webdav\",\n    \"WebdavOptions\": {\n        \"DavUri\": \"https://webdav.yandex.ru/\",\n        \"AuthToken\": \"YOUR_TOKEN\",\n        \"AuthTokenType\": \"OAuth\"\n    },\n}\n```\n\n### Local to YandexDisk\nPure REST is slower than composition of DAV for files + REST for file-tree \u0026 hashes\n\n```bash\nbin/davsync -i /local/input -o /yadisk/output -oconf /tmp/oconf.json\n```\n`/tmp/oconf.json`\n```json\n{\n    \"Type\": \"Yadisk\",\n    \"WebdavOptions\": {\n        \"DavUri\": \"https://webdav.yandex.ru/\",\n        \"AuthToken\": \"YOUR_TOKEN\",\n        \"AuthTokenType\": \"OAuth\"\n    },\n    \"YadiskRestOptions\": {\n        \"ApiUri\": \"https://cloud-api.yandex.net/v1/disk\",\n        \"AuthToken\": \"YOUR_TOKEN\",\n        \"AuthTokenType\": \"OAuth\"\n    }\n}\n```\n\n### DAV to local\nBe sure input and ouput directories are exist\n```bash\nbin/davsync -i /dav/input -iconf /tmp/oconf.json -o /local/output -oconf /tmp/oconf.json\n```\n`/tmp/iconf.json`\n```json\n{\n    \"Type\": \"Webdav\",\n    \"WebdavOptions\": {\n        \"DavUri\": \"https://webdav.yandex.ru/\",\n        \"AuthToken\": \"YOUR_TOKEN\",\n        \"AuthTokenType\": \"OAuth\"\n    },\n}\n```\n`/tmp/oconf.json`\n```json\n{\n    \"Type\": \"Local\"\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fio-developer%2Fgo-davsync","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fio-developer%2Fgo-davsync","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fio-developer%2Fgo-davsync/lists"}