Skip to main content

A Python-based tool for real-time file monitoring and synchronization, designed to replicate changes between local or remote locations.

Project description

WatchSync

pre-commit Status Test Status Coverage Status PyPI version License

WatchSync is a tool for synchronizing files when they are created or modified across different storage locations. A file can also be a local directory that, when detected as modified or created, is synchronized with the configured storage locations. A storage location can be a local or remote directory where a copy of the files will be sent.

The purpose of this tool is to have a backup of files in different storage locations to avoid losing important information. It is a file replication solution that is very easy to configure and use.

Features

  • Automatic synchronization of files and directories.
  • Support for multiple local and remote storage locations.
  • Easy to configure and use.
  • Uses rsync for efficient file synchronization.

Installation

Requirements

WatchSync uses rsync for file synchronization, so it must be installed on the system. On Debian-based systems, it can be installed with the following command:

sudo apt install rsync

As a package

Install the package with pip:

pip install watchsync

From source code

Clone the repository:

git clone https://github.com/rlizana/watchsync.git
cd watchsync

Install dependencies and build the package:

poetry install

Install the package globally:

poetry build
pip install dist/watchsync-*.whl

Usage

WatchSync uses a daemon to monitor file changes and synchronize them with storage locations. A storage location can be a local directory, a remote server, or a git repository.

To start the daemon, use watchsync start, and to stop it, use watchsync stop. If you want to restart the daemon to reread configuration changes, use watchsync reload.

Storage Locations

To manage storage locations, use the command watchsync store.

You can list storage locations with watchsync store list, add a storage location with watchsync store add NAME TYPE PATH, and remove one with watchsync store del NAME.

Alternatively, you can edit the configuration file ~/.config/watchsync/config.yaml to add storage locations manually, but note that the daemon will not pick up changes until you restart it after making modifications.

Files

To manage the files being monitored, use the command watchsync file.

You can list files with watchsync file list, add a file with watchsync file add PATH, and remove a file with watchsync file del PATH.

Development

This project is developed using TDD. Therefore, any changes or improvements to be added must first include a failing unit test, and then the necessary code must be written to make the test pass.

Install the development dependencies:

poetry install --with dev
poetry run pre-commit install

To run unit tests:

poetry run python3 -m unittest discover -s tests

With coverage:

poetry run coverage run -m unittest discover -s tests
poetry run coverage report

Or you can run with one of these commands

poetry run watchsync
poetry run python3 -m watchsync
poetry run python3 -m watchsync.daemon.watchsyncd

Test using Docker

You can use docker to test the tool. The following command will build the image and run the tests:

docker build -t watchsync-test .
docker run --rm watchsync-test

If you are developing, you can use the following command to mount the current directory in the container and run the tests:

docker run --rm -v $(pwd)/watchsync:/watchsync/watchsync -v $(pwd)/tests:/watchsync/tests watchsync-test

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

watchsync-0.1.2.tar.gz (24.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

watchsync-0.1.2-py3-none-any.whl (30.6 kB view details)

Uploaded Python 3

File details

Details for the file watchsync-0.1.2.tar.gz.

File metadata

  • Download URL: watchsync-0.1.2.tar.gz
  • Upload date:
  • Size: 24.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.7 Linux/6.11.0-13-generic

File hashes

Hashes for watchsync-0.1.2.tar.gz
Algorithm Hash digest
SHA256 886022d2a39480a666a75e54109c637566ca551ac64e53be1b6b18663a3b2f9c
MD5 bf9326a3a4c140cad3e37dae48f36316
BLAKE2b-256 119af73e1fef99d86df9c8d506ea94cefbf95f20be897ba413e9d26c01ad4ae5

See more details on using hashes here.

File details

Details for the file watchsync-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: watchsync-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 30.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.7 Linux/6.11.0-13-generic

File hashes

Hashes for watchsync-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 5f3fdd2f7a4ee9870e729b1ac358e27ec3e1b32db8f7b23736fd2b8e6cad67a8
MD5 5d65259ef3f5f18f64639d1c6ac53a27
BLAKE2b-256 4499a6a21433d96fcf36faf86bdad92fa5001d329c56e880062dcbfa7a04a694

See more details on using hashes here.

Supported by

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