WatchSync
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
rsyncfor 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
Metadata
Release files for watchsync 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| watchsync-0.1.2.tar.gz | 24.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| watchsync-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 55.3 kB
Release files / watchsync-0.1.2.tar.gz
| Download URL | watchsync-0.1.2.tar.gz |
|---|---|
| Size | 24.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
886022d2a39480a666a75e54109c637566ca551ac64e53be1b6b18663a3b2f9c
|
|
BLAKE2b-256 checksum How to use checksums |
119af73e1fef99d86df9c8d506ea94cefbf95f20be897ba413e9d26c01ad4ae5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.8.3 CPython/3.12.7 Linux/6.11.0-13-generic
|
Release files / watchsync-0.1.2-py3-none-any.whl
| Download URL | watchsync-0.1.2-py3-none-any.whl |
|---|---|
| Size | 30.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5f3fdd2f7a4ee9870e729b1ac358e27ec3e1b32db8f7b23736fd2b8e6cad67a8
|
|
BLAKE2b-256 checksum How to use checksums |
4499a6a21433d96fcf36faf86bdad92fa5001d329c56e880062dcbfa7a04a694
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.8.3 CPython/3.12.7 Linux/6.11.0-13-generic
|