{"id":18950098,"url":"https://github.com/junker/davesync","last_synced_at":"2025-08-25T03:37:14.212Z","repository":{"id":143103564,"uuid":"391127893","full_name":"Junker/davesync","owner":"Junker","description":"Synchonizes and encrypts a local directory with a remote WebDAV folder","archived":false,"fork":false,"pushed_at":"2024-10-29T01:49:54.000Z","size":63,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-16T03:53:58.302Z","etag":null,"topics":["encryption","gpg","nextcloud","sync","syncronization","webdav"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Junker.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-07-30T16:26:28.000Z","updated_at":"2024-11-12T10:52:52.000Z","dependencies_parsed_at":"2025-04-16T03:22:27.715Z","dependency_job_id":"28090b02-c9ef-4d32-ae78-bdb4614f88eb","html_url":"https://github.com/Junker/davesync","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/Junker/davesync","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Junker%2Fdavesync","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Junker%2Fdavesync/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Junker%2Fdavesync/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Junker%2Fdavesync/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Junker","download_url":"https://codeload.github.com/Junker/davesync/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Junker%2Fdavesync/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270644761,"owners_count":24621332,"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","status":"online","status_checked_at":"2025-08-15T02:00:12.559Z","response_time":110,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["encryption","gpg","nextcloud","sync","syncronization","webdav"],"created_at":"2024-11-08T13:20:57.813Z","updated_at":"2025-08-15T23:13:35.250Z","avatar_url":"https://github.com/Junker.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DavESync (WebDav Encrypted Synchronization)\n\nSync and encrypt your local directory to WebDav folder or your cloud with WebDav\nsupport (NextCloud, Yandex.Disk etc).\n\nAll files are encrypted with GPG symmetric passphrase, you can download any file\nfrom your webdav or cloud and decrypt it with GPG app, which exists in any OS\n(Android, iOS, Linux, Windows etc).\n\n## Dependencies\n\n- [webdav4](https://pypi.org/project/webdav4/)\n- [python-gnupg](https://pypi.org/project/python-gnupg/)\n- [colorlog](https://pypi.org/project/colorlog/)\n\n## Installation\n\n### Manual\n\n```shell\npip install -r requirements.txt\ncp davesync.py /usr/local/bin/davesync\n```\n\n### Arch Linux\n\n```shell\nyay -S davesync\n```\n\n## Result example\n\nLocal folder:\n```\n/home/bob/mydata\n│\n├─bank_records.xlsx\n├─my_nude_photo.jpg\n├─very_secret_document.docx\n└─passport.pdf\n```\n\nWebDav folder:\n```\nhttps://nextcloud.example.org/remote.php/dav/files/bob/mydata\n│\n├─bank_records.xlsx.gpg\n├─my_nude_photo.jpg.gpg\n├─very_secret_document.docx.gpg\n├─passport.pdf.gpg\n└─davesync-metadata.json\n```\n\n## Usage\n\ne.g.:\n\n```bash\n$ davesync.py /home/bob/mydata https://nextcloud.example.org/remote.php/dav/files/bob/mydata \\\n    --webdav-user=bob \\\n    --webdav-password 123 \\\n    --gpg-passphrase qwe \\\n    --delete \\\n    --verbose\n```\n\n```\ndavesync.py local_base remote_base [options]\nsync and encrypt your local directory to WebDav server\n\npositional arguments:\n  local_base            Local directory to sync, e.g. /home/bob/myfolder\n  remote_base           Base WebDav URL, e.g. https://example.org/dav/myfolder\n\noptional arguments:\n  -h, --help            show this help message and exit\n  --webdav-user USER, -u USER\n                        WebDav Username\n  --webdav-password PASSWORD, -p PASSWORD\n                        WebDav Password\n  --webdav-password-file PASSWORD_FILE\n                        WebDav Password file\n  --gpg-passphrase PASSPHRASE, -gp PASSPHRASE\n                        GPG Passphrase\n  --gpg-passphrase-file PASSPHRASE_FILE\n                        GPG Passphrase file\n  --delete              delete extraneous files/dirs from remote dirs.\n  --delete-excluded     Delete excluded files from dest dirs\n  --force, -f           Force copying of files. Do not check files modifications\n  --timeout N, -t N     WebDav operation timeout N seconds. Default: 10\n  --exclude PATTERN     exclude files matching PATTERN\n  --save-metadata-step N\n                        save metadata every N uploaded files. Default: 10\n  --no-check-certificate\n                        Do not verify SSL certificate\n  --cipher-algo CIPHER  Cipher algorithm. Default: AES. (IDEA, 3DES, CAST5,\n                        BLOWFISH, AES, AES192, AES256, TWOFISH, CAMELLIA128,\n                        CAMELLIA192, CAMELLIA256 etc.\n                        Check your \"gpg\" command line help to see what symmetric\n                        cipher algorithms are supported)\n  --compress-algo ALGO  Compression algorithm. Default: none.\n                        (zip, zlib, bzip2, none etc. Check your \"gpg\" command\n                         line help to see what compression algorithms are supported)\n  --compress-level N, -z N\n                        Set compression level to N. Default: 0\n  --verbose, -v         verbose (-v,-vv,-vvv)\n\n```\n\n## Decrypt\n\n### CLI\n\n```bash\ngpg example.docx.gpg\n```\n\n### GUI\n\nWindows:\n\n- [WinGPG](https://scand.com/products/wingpg/)\n\nOSX:\n\n- [GPGTools](https://gpgtools.org/)\n\nAndroid:\n\n- [OpenKeychain: Easy PGP](https://play.google.com/store/apps/details?id=org.sufficientlysecure.keychain)\n\n## Caveats\n\n- filenames not encrypted\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjunker%2Fdavesync","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjunker%2Fdavesync","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjunker%2Fdavesync/lists"}