Skip to main content

Synchronization command line for WebDav.

Project description

pydavsync

A command line to synchronize files with WebDav servers, written in Python.

Name

The foundational idea was to have a similar command line and behavior to rsync, but for WebDav servers. davsync is the logical name. But I started to implement it in Rust, then in Python, and I decided to integrate the development language in the name. Thus pydavsync for the Python implementation.

Description

rsync allows to synchronize files over a SSH connection. pydavsync has been developed to do the same over a WebDav connection.

The command line is not identical because compatibility is not a goal, and some new ideas emerged while developing pydavsync.

The following operations can be done :

  • Synchronization from local filesystem to WebDav server
  • Synchronization from WebDav server to local filesystem
  • Synchronization from WebDav server to WebDav server (not necessarily the same)

Here are some of the features :

  • dry run
  • verbose output
  • login/password given through command line options
  • synchronization based on modified time and file size
  • deletion when files disappear

Webdav?

Webdav is used to manage files on remote servers using HTTP.

The primary motivation was to use pydavsync with Nextcloud which is compatible with webdav. But there are many other services accepting webdav.

Installation

pydavsync is available on Pypi.org and can be installed using pip. Many options are available to you, do as you please.

pip install pydavsync

Usage

Once installed, the program pydavsync should be available in your terminal.

To get help, use pydavsyncc --help.

Here is an example to synchronize files from a webdav server to a local directory.

$ pydavsync --src-user Username --src-pass Password --verbose https://my-server.org/path/to/my/directory /path/to/local/directory

Support

If you have a question or need help, please open an issue and tag it with the ~support label.

Roadmap

Future developments:

  • Synchronization from local to webdav (and consequently from webdav to webdav)
  • Smarter synchronization if source and destination are both the same webdav server.
  • Better tests with mocks to simulate a webdav server.
  • A man page.
  • New and optional means to check if a file has changed or not.

Contributing

  • Firstly, you can open a new issue if you find a bug or have an improvement idea.
  • Any help to test the tool on various systems and Webdav servers is appreciated, as I did not checked many of these myself.
  • If you feel like coding, please fork the repository and do a merge request. It will be reviewed. Don’t forget to mention issues in your comments if you fix some of them!

Authors and acknowledgment

Main author: Romain TAPREST

License

This project is under the Mozilla Public License Version 2.0.

Project status

🧡 This project is alive! Not frequent updates, but it is not abandoned.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pydavsync-0.1.0.tar.gz (15.3 kB view hashes)

Uploaded Source

Built Distribution

pydavsync-0.1.0-py3-none-any.whl (21.7 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page