Skip to main content

J-RSYNC

J-Rsync is a python wrapper on unix rsync which uses a json configuration file to identify what to sync. The tool was designed to solve the problem of recurrently synchronising many directories or files

Using a single command from crontab, it is possible to keep synchronized many paths.

Python Anaconda Pip Ruff Pydantic v2 Poetry


Installation

Via PIP

pip install jrsync

Via MAMBA/CONDA

mamba install jrsync

Usage

usage: jrsync [-h] [--src-address SRC_ADDRESS] [--dst-address DST_ADDRESS]
              [--force] [-o OPTIONS] [-d--dry-run] [-V]
              config date_to_sync

Jrsync CLI

positional arguments:
  config                Json file containing sync information
  date_to_sync          Date in the format YYYYMMDD

options:
  -h, --help            show this help message and exit
  --src-host SRC_HOST
                        Source host. Example: user@remote
  --dst-host DST_HOST
                        Dest host. Example: user@remote
  --force               Allow to run multiple instance in the same moment
  -o OPTIONS, --options OPTIONS
                        Rsync options. use -o|--options= to avoid conflicts
                        with python args
  -d--dry-run           Enable dry run mode
  -V, --version         Print version and exit

Remote synchronization

As default, the tool assumes that the path are local, but both source and destination path can be located on a remote server. Be carefully that only one path can be remote

Sync from remote to local

To synchronize files from remote to local computer:

jrsync <config> <date> --src-host user@remote

Sync from local to remote

To synchronize files from local to remote:

jrsync <config> <date> --dst-host user@remote

Rsync options

As default, rsync runs with the following options:

-aP

They can be changed using -o|--options:

jrsync <config> <date> --options="-avug"

Configuration File

Attributes

The configuration file is a json file which contains a list of Jsync objects with the following attributes:

  • source_dir: The directory on the source host from which files will be synchronized.
  • dest_dir: The directory on the destination host where files will be synchronized.
  • day (optional): Specifies the day of the week when the synchronization should be executed, following crontab convention. For example:
    • "*": Every day.
    • "0": Sunday.
    • "1": Monday, and so on.
  • src_host (optional): The source host from which files will be synced. If not provided, files will be synced from the local machine. It can be provided as an argument from CLI
  • dst_host (optional): The destination host where files will be synced. If not provided, files will be synced to the local machine. It can be provided as an argument from CLI
  • file_to_sync (optional): A list of specific files to be synchronized. If this field is omitted, all files in source_dir will be synchronized. Conditional Behavior: If src_host is None, only files that exist in the source_dir will be synchronized.

Dynamic Placeholders:

  • {{DATE}}: Replaces with the value of date to sync passed as argument from CLI.
  • {{DATE + X}}: Replaces with the date X days after date_to_sync.
  • {{DATE - X}}: Replaces with the date X days before date_to_sync.
  • Global Variables: You can also use global variables in this field.

Example

[
{
    "source_dir": "/data/{{DATE - 1}}",
    "dest_dir": "/backup/{{DATE}}",
    "day": "*",
    "file_to_sync": ["important_file.txt", "logs/{{DATE - 1}}.log"]
}
]

Authors


Contributing

Contributions are welcome! Please open an issue or submit a pull request for any improvements or bug fixes.


Contact

For any questions or suggestions, please open an issue on the project's GitHub repository.

Metadata

Release files for jrsync 0.1.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for jrsync 0.1.7
File Size Uploaded
jrsync-0.1.7.tar.gz 14.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for jrsync 0.1.7
File Interpreter ABI Platform
jrsync-0.1.7-py3-none-any.whl Python 3 none any Details

Total release size: 32.3 kB

Release files / jrsync-0.1.7.tar.gz

Download URL jrsync-0.1.7.tar.gz
Size 14.7 kB
Tags Source
SHA-256 checksum
How to use checksums
35e7c87c5fff68ecb8ed5a60c7e6e85c34d6a57eddbdf293ac12a0b7721cf535
BLAKE2b-256 checksum
How to use checksums
a1b4623883fa63f301be15dc4a05d74a91e7ac896b91983fb5ef4107ac2b0616
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.3 CPython/3.10.14 Linux/6.5.0-1019-oem

Release files / jrsync-0.1.7-py3-none-any.whl

Download URL jrsync-0.1.7-py3-none-any.whl
Size 17.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fd62642f63fede7fa321cfe1eaf9967bd5661a1ef9b5481b75f4619bab7135ed
BLAKE2b-256 checksum
How to use checksums
6fad35ba33e9df021e9744c72287aa57d24416d1817378df3c9235b2b4ef8a75
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.3 CPython/3.10.14 Linux/6.5.0-1019-oem

Release history Release notifications | RSS feed

This release

0.1.7 This release

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page