Skip to main content

Synchronize files from and to host systems.

Project description

file sync tool

PyPI - Python Version PyPI Scrutinizer Code Quality Build Status

Python script to synchronize files from an origin to a target system using rsync.

This tool is an addon of the db-sync-tool.

Example receiver

Installation

Prerequisite

The script needs python 3.5 or higher. It is necessary for some additional functionalities to have pip installed on your local machine.

pip

The library can be installed from PyPI:

$ pip3 install file-sync-tool-kmi

composer

The script is also available via packagist.org using composer:

$ composer require kmi/file-sync-tool

Additionally install the python requirements via the following pip command:

$ pip3 install -e vendor/kmi/file-sync-tool/

Configuration

You can configure the script with shell arguments or using a separate configuration file.

Configuration File

The config.json contains important information about the origin and the target system.

Example structure of config.json in receiver mode :

{
  "target": {},
  "origin": {
    "host": "ssh_host",
    "user": "ssh_user"
  },
  "files": {
    "config": [
      {
        "origin": "/var/www/html/files/",
        "target": "/var/www/html/files/",
        "exclude": [
          "*.log"
        ]
      }
    ]
  }
}

Documentation

Extend the config.json with a files section containing multiple transfer entries within the configentry. Therefore you have to specify the origin source path as well as the target destination path of the file sync. Additionally define the rsync excludes for this specific transfer.

In the config entry you can also define additional rsync options as a list overwriting the default options.

For further information see the documentation of the db-sync-tool.

Usage

Command line

Run the python script via command line.

Installed via pip:

$ file_sync_tool

Installed via composer:

$ python3 vendor/kmi/file-sync-tool/file_sync_tool

Shell arguments

usage: file_sync_tool [-h] [-f CONFIG_FILE] [-v] [-m] [-o HOST_FILE]
                      [-th TARGET_HOST] [-tu TARGET_USER]
                      [-tpw TARGET_PASSWORD] [-tk TARGET_KEY]
                      [-tpo TARGET_PORT] [-oh ORIGIN_HOST] [-ou ORIGIN_USER]
                      [-opw ORIGIN_PASSWORD] [-ok ORIGIN_KEY]
                      [-opo ORIGIN_PORT] [-fo FILES_ORIGIN] [-ft FILES_TARGET]
                      [-fe FILES_EXCLUDE] [-fop FILES_OPTION]

A tool for automatic file synchronization from and to host systems.

optional arguments:
  -h, --help            show this help message and exit
  -f CONFIG_FILE, --config-file CONFIG_FILE
                        Path to configuration file
  -v, --verbose         Enable extended console output
  -m, --mute            Mute console output
  -o HOST_FILE, --host-file HOST_FILE
                        Using an additional hosts file for merging hosts
                        information with the configuration file
  -th TARGET_HOST, --target-host TARGET_HOST
                        SSH host to target system
  -tu TARGET_USER, --target-user TARGET_USER
                        SSH user for target system
  -tpw TARGET_PASSWORD, --target-password TARGET_PASSWORD
                        SSH password for target system
  -tk TARGET_KEY, --target-key TARGET_KEY
                        File path to SSH key for target system
  -tpo TARGET_PORT, --target-port TARGET_PORT
                        SSH port for target system
  -oh ORIGIN_HOST, --origin-host ORIGIN_HOST
                        SSH host to origin system
  -ou ORIGIN_USER, --origin-user ORIGIN_USER
                        SSH user for origin system
  -opw ORIGIN_PASSWORD, --origin-password ORIGIN_PASSWORD
                        SSH password for origin system
  -ok ORIGIN_KEY, --origin-key ORIGIN_KEY
                        File path to SSH key for origin system
  -opo ORIGIN_PORT, --origin-port ORIGIN_PORT
                        SSH port for origin system
  -fo FILES_ORIGIN, --files-origin FILES_ORIGIN
                        File path for origin source of file sync
  -ft FILES_TARGET, --files-target FILES_TARGET
                        File path for target destination of file sync
  -fe FILES_EXCLUDE, --files-exclude FILES_EXCLUDE
                        Excludes for file sync
  -fop FILES_OPTION, --files-option FILES_OPTION
                        Additional rsync options

If you haven't declare a path to a SSH key, during the script execution you are requested to enter the SSH password for the given user in the shell argument or the config.json to enable a SSH connection for the remote system.

Import

You can import the python package and use them inside your project:

from file_sync_tool import sync

if __name__ == "__main__":
    sync.Sync(config={}, args*)

Release Guide

A detailed guide is available to release a new version. See here.

Tests

A docker container set up is available for testing purpose. See here.

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

file_sync_tool-kmi-0.4.8.tar.gz (11.5 kB view details)

Uploaded Source

Built Distribution

file_sync_tool_kmi-0.4.8-py3-none-any.whl (12.0 kB view details)

Uploaded Python 3

File details

Details for the file file_sync_tool-kmi-0.4.8.tar.gz.

File metadata

  • Download URL: file_sync_tool-kmi-0.4.8.tar.gz
  • Upload date:
  • Size: 11.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.9

File hashes

Hashes for file_sync_tool-kmi-0.4.8.tar.gz
Algorithm Hash digest
SHA256 566958f5b1b06ce8c679afa444c0620ebda028f5e2c817624fcc414b10e5a238
MD5 74920417c3400d8e7ae2be9edc268dd9
BLAKE2b-256 fdfbb632327026a0c72dc7967a782aea64264050d8f8d74f3d080cac8b1528b0

See more details on using hashes here.

File details

Details for the file file_sync_tool_kmi-0.4.8-py3-none-any.whl.

File metadata

File hashes

Hashes for file_sync_tool_kmi-0.4.8-py3-none-any.whl
Algorithm Hash digest
SHA256 4d9c65a5337902e3c5b31179d2607434e4c0ce964f4f4cde1e00e738c791bfd1
MD5 49a83480c94eb426def6ad3808055c61
BLAKE2b-256 c18e3771abfbc71ae15eed8a72fb82a7e4f74642d09be90181041d9d0b6826cb

See more details on using hashes here.

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