summaryrefslogtreecommitdiff
path: root/python-db-sync-tool-kmi.spec
diff options
context:
space:
mode:
Diffstat (limited to 'python-db-sync-tool-kmi.spec')
-rw-r--r--python-db-sync-tool-kmi.spec802
1 files changed, 802 insertions, 0 deletions
diff --git a/python-db-sync-tool-kmi.spec b/python-db-sync-tool-kmi.spec
new file mode 100644
index 0000000..a7401eb
--- /dev/null
+++ b/python-db-sync-tool-kmi.spec
@@ -0,0 +1,802 @@
+%global _empty_manifest_terminate_build 0
+Name: python-db-sync-tool-kmi
+Version: 2.10.9
+Release: 1
+Summary: Synchronize a database from and to host systems.
+License: MIT
+URL: https://github.com/jackd248/db-sync-tool
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/93/ae/732555703efac18b1dd3b28a28d7c26ccf75aedd0680b21cc8e40ec9157f/db_sync_tool-kmi-2.10.9.tar.gz
+BuildArch: noarch
+
+Requires: python3-paramiko
+Requires: python3-future-fstrings
+Requires: python3-pyyaml
+Requires: python3-jsonschema
+Requires: python3-requests
+Requires: python3-semantic-version
+Requires: python3-yaspin
+
+%description
+# db sync tool
+
+![PyPI - Python Version](https://img.shields.io/pypi/pyversions/db_sync_tool-kmi)
+![PyPI](https://img.shields.io/pypi/v/db_sync_tool-kmi)
+[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/jackd248/db-sync-tool/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/jackd248/db-sync-tool/?branch=master)
+[![Build Status](https://scrutinizer-ci.com/g/jackd248/db-sync-tool/badges/build.png?b=master)](https://scrutinizer-ci.com/g/jackd248/db-sync-tool/build-status/master)
+
+Python script to synchronize a database from an origin to a target system with automatic database credential extraction depending on the selected framework.
+
+## Features
+
+- __Database sync__ from and to a remote system
+ - [MySQL](https://www.mysql.com/) (>= 5.5)
+ - [MariaDB](https://mariadb.org/) (>= 10.0)
+- __Proxy mode__ between two remote systems
+- Several [synchronisation modes](docs/MODE.md)
+- Automatic database __credential extraction__ using a supported framework
+ - [TYPO3](https://typo3.org/) (>= v7.6)
+ - [Symfony](https://symfony.com/) (>= v2.8)
+ - [Drupal](https://www.drupal.org/) (>= v8.0)
+ - [Wordpress](https://wordpress.org) (>= v5.0)
+ - [Laravel](https://laravel.com/) (>= v4.0)
+- Easily dump creation (database __backup__)
+- __Cleanup__ feature for backups
+- Extended __logging__ capabilities
+- Many more possibilities for [customization](docs/CONFIG.md)
+
+## Installation
+
+### Prerequisite
+
+The script needs [python](https://python.org/) __3.5__ or higher. It is necessary for some additional functionalities to have [pip](https://pypi.org/project/pip/) installed on your local machine.
+
+<a name="install-pip"></a>
+### pip
+The library can be installed from [PyPI](https://pypi.org/project/db-sync-tool-kmi/):
+```bash
+$ pip3 install db-sync-tool-kmi
+```
+
+<a name="install-composer"></a>
+### composer
+While using the script within the PHP framework context, the script is available via [packagist.org](https://packagist.org/packages/kmi/db-sync-tool) using composer:
+
+```bash
+$ composer require kmi/db-sync-tool
+```
+
+Additionally install the python requirements via the following pip command:
+
+````bash
+$ pip3 install -e vendor/kmi/db-sync-tool/
+````
+
+## Quickstart
+
+Detailed instructions for:
+
+- [Manual database sync](docs/quickstart/START.md)
+- [TYPO3 database sync](docs/quickstart/TYPO3.md)
+- [Symfony database sync](docs/quickstart/SYMFONY.md)
+- [Drupal database sync](docs/quickstart/DRUPAL.md)
+- [Wordpress database sync](docs/quickstart/WORDPRESS.md)
+
+If you want to have an inside in more configuration examples, see the [test scenarios](tests/scenario).
+
+## Usage
+
+### Command line
+
+Run the python script via command line.
+
+Installed via [pip](#install-pip):
+```bash
+$ db_sync_tool
+```
+
+Installed via [composer](#install-composer):
+```bash
+$ python3 vendor/kmi/db-sync-tool/db_sync_tool
+```
+
+![Example receiver](docs/images/db-sync-tool-example-receiver.gif)
+
+<a name="shell-arguments"></a>
+#### Shell arguments
+
+```bash
+usage: db_sync_tool [-h] [-f CONFIG_FILE] [-v] [-y] [-m] [-dr] [-i IMPORT_FILE] [-dn DUMP_NAME] [-kd KEEP_DUMP] [-o HOST_FILE] [-l LOG_FILE] [-cd] [-ta TABLES] [-r] [-t TYPE] [-tp TARGET_PATH]
+ [-tn TARGET_NAME] [-th TARGET_HOST] [-tu TARGET_USER] [-tpw TARGET_PASSWORD] [-tk TARGET_KEY] [-tpo TARGET_PORT] [-tdd TARGET_DUMP_DIR] [-tkd TARGET_KEEP_DUMPS] [-tdn TARGET_DB_NAME]
+ [-tdh TARGET_DB_HOST] [-tdu TARGET_DB_USER] [-tdpw TARGET_DB_PASSWORD] [-tdpo TARGET_DB_PORT] [-tad TARGET_AFTER_DUMP] [-op ORIGIN_PATH] [-on ORIGIN_NAME] [-oh ORIGIN_HOST]
+ [-ou ORIGIN_USER] [-opw ORIGIN_PASSWORD] [-ok ORIGIN_KEY] [-opo ORIGIN_PORT] [-odd ORIGIN_DUMP_DIR] [-okd ORIGIN_KEEP_DUMPS] [-odn ORIGIN_DB_NAME] [-odh ORIGIN_DB_HOST]
+ [-odu ORIGIN_DB_USER] [-odpw ORIGIN_DB_PASSWORD] [-odpo ORIGIN_DB_PORT] [-fpw] [-ur] [-uro USE_RSYNC_OPTIONS]
+ [origin] [target]
+
+A tool for automatic database synchronization from and to host systems.
+
+positional arguments:
+ origin Origin database defined in host file
+ target Target database defined in host file
+
+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
+ -y, --yes Skipping user confirmation for database import
+ -m, --mute Mute console output
+ -dr, --dry-run Testing process without running database export, transfer or import.
+ -i IMPORT_FILE, --import-file IMPORT_FILE
+ Import database from a specific file dump
+ -dn DUMP_NAME, --dump-name DUMP_NAME
+ Set a specific dump file name (default is "_[dbname]_[date]")
+ -kd KEEP_DUMP, --keep-dump KEEP_DUMP
+ Skipping target import of the database dump and saving the available dump file in the given directory
+ -o HOST_FILE, --host-file HOST_FILE
+ Using an additional hosts file for merging hosts information with the configuration file
+ -l LOG_FILE, --log-file LOG_FILE
+ File path for creating a additional log file
+ -cd, --clear-database
+ Dropping all tables before importing a new sync to get a clean database.
+ -ta TABLES, --tables TABLES
+ Defining specific tables to export, e.g. --tables=table1,table2
+ -r, --reverse Reverse origin and target hosts
+ -t TYPE, --type TYPE Defining the framework type [TYPO3, Symfony, Drupal, Wordpress]
+ -tp TARGET_PATH, --target-path TARGET_PATH
+ File path to target database credential file depending on the framework type
+ -tn TARGET_NAME, --target-name TARGET_NAME
+ Providing a name for the target system
+ -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
+ -tdd TARGET_DUMP_DIR, --target-dump-dir TARGET_DUMP_DIR
+ Directory path for database dump file on target system
+ -tkd TARGET_KEEP_DUMPS, --target-keep-dumps TARGET_KEEP_DUMPS
+ Keep dump file count for target system
+ -tdn TARGET_DB_NAME, --target-db-name TARGET_DB_NAME
+ Database name for target system
+ -tdh TARGET_DB_HOST, --target-db-host TARGET_DB_HOST
+ Database host for target system
+ -tdu TARGET_DB_USER, --target-db-user TARGET_DB_USER
+ Database user for target system
+ -tdpw TARGET_DB_PASSWORD, --target-db-password TARGET_DB_PASSWORD
+ Database password for target system
+ -tdpo TARGET_DB_PORT, --target-db-port TARGET_DB_PORT
+ Database port for target system
+ -tad TARGET_AFTER_DUMP, --target-after-dump TARGET_AFTER_DUMP
+ Additional dump file to insert after the regular database import
+ -op ORIGIN_PATH, --origin-path ORIGIN_PATH
+ File path to origin database credential file depending on the framework type
+ -on ORIGIN_NAME, --origin-name ORIGIN_NAME
+ Providing a name for the origin 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
+ -odd ORIGIN_DUMP_DIR, --origin-dump-dir ORIGIN_DUMP_DIR
+ Directory path for database dump file on origin system
+ -okd ORIGIN_KEEP_DUMPS, --origin-keep-dumps ORIGIN_KEEP_DUMPS
+ Keep dump file count for origin system
+ -odn ORIGIN_DB_NAME, --origin-db-name ORIGIN_DB_NAME
+ Database name for origin system
+ -odh ORIGIN_DB_HOST, --origin-db-host ORIGIN_DB_HOST
+ Database host for origin system
+ -odu ORIGIN_DB_USER, --origin-db-user ORIGIN_DB_USER
+ Database user for origin system
+ -odpw ORIGIN_DB_PASSWORD, --origin-db-password ORIGIN_DB_PASSWORD
+ Database password for origin system
+ -odpo ORIGIN_DB_PORT, --origin-db-port ORIGIN_DB_PORT
+ Database port for origin system
+ -fpw, --force-password
+ Force password user query
+ -ur, --use-rsync Use rsync as transfer method
+ -uro USE_RSYNC_OPTIONS, --use-rsync-options USE_RSYNC_OPTIONS
+ 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:
+
+```python
+from db_sync_tool import sync
+
+if __name__ == "__main__":
+ sync.Sync(config={}, args*)
+```
+
+## Configuration
+
+You can configure the script with [shell arguments](#shell-arguments) or using a separate configuration file.
+
+### Configuration File
+
+The `config.json` contains important information about the origin and the target system. In dependence on the given configuration the [synchronisation mode](docs/MODE.md) is implicitly selected.
+
+Example structure of a `config.yml` for a Symfony system in receiver mode (`path` defines the location of the Symfony database configuration file):
+```yaml
+type: Symfony
+origin:
+ host: 192.87.33.123
+ user: ssh_demo_user
+ path: /var/www/html/project/shared/.env
+target:
+ path: /var/www/html/app/.env
+```
+
+It is possible to adjust the `config.yml` [configuration](docs/CONFIG.md).
+
+## File sync
+
+There is an addon script available to sync files to. Use the [file-sync-tool](https://github.com/jackd248/file-sync-tool) to easily transfer files between origin and target system.
+
+## Release Guide
+
+A detailed guide is available to release a new version. See [here](docs/RELEASE.md).
+
+## Tests
+
+A docker container set up is available for testing purpose. See [here](tests/README.md).
+
+## Support
+
+If you like the project, feel free to support the development.
+
+<a href="https://www.buymeacoffee.com/konradmichalik" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/default-green.png" alt="Buy Me A Coffee" height="41" width="174"></a>
+
+
+%package -n python3-db-sync-tool-kmi
+Summary: Synchronize a database from and to host systems.
+Provides: python-db-sync-tool-kmi
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-db-sync-tool-kmi
+# db sync tool
+
+![PyPI - Python Version](https://img.shields.io/pypi/pyversions/db_sync_tool-kmi)
+![PyPI](https://img.shields.io/pypi/v/db_sync_tool-kmi)
+[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/jackd248/db-sync-tool/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/jackd248/db-sync-tool/?branch=master)
+[![Build Status](https://scrutinizer-ci.com/g/jackd248/db-sync-tool/badges/build.png?b=master)](https://scrutinizer-ci.com/g/jackd248/db-sync-tool/build-status/master)
+
+Python script to synchronize a database from an origin to a target system with automatic database credential extraction depending on the selected framework.
+
+## Features
+
+- __Database sync__ from and to a remote system
+ - [MySQL](https://www.mysql.com/) (>= 5.5)
+ - [MariaDB](https://mariadb.org/) (>= 10.0)
+- __Proxy mode__ between two remote systems
+- Several [synchronisation modes](docs/MODE.md)
+- Automatic database __credential extraction__ using a supported framework
+ - [TYPO3](https://typo3.org/) (>= v7.6)
+ - [Symfony](https://symfony.com/) (>= v2.8)
+ - [Drupal](https://www.drupal.org/) (>= v8.0)
+ - [Wordpress](https://wordpress.org) (>= v5.0)
+ - [Laravel](https://laravel.com/) (>= v4.0)
+- Easily dump creation (database __backup__)
+- __Cleanup__ feature for backups
+- Extended __logging__ capabilities
+- Many more possibilities for [customization](docs/CONFIG.md)
+
+## Installation
+
+### Prerequisite
+
+The script needs [python](https://python.org/) __3.5__ or higher. It is necessary for some additional functionalities to have [pip](https://pypi.org/project/pip/) installed on your local machine.
+
+<a name="install-pip"></a>
+### pip
+The library can be installed from [PyPI](https://pypi.org/project/db-sync-tool-kmi/):
+```bash
+$ pip3 install db-sync-tool-kmi
+```
+
+<a name="install-composer"></a>
+### composer
+While using the script within the PHP framework context, the script is available via [packagist.org](https://packagist.org/packages/kmi/db-sync-tool) using composer:
+
+```bash
+$ composer require kmi/db-sync-tool
+```
+
+Additionally install the python requirements via the following pip command:
+
+````bash
+$ pip3 install -e vendor/kmi/db-sync-tool/
+````
+
+## Quickstart
+
+Detailed instructions for:
+
+- [Manual database sync](docs/quickstart/START.md)
+- [TYPO3 database sync](docs/quickstart/TYPO3.md)
+- [Symfony database sync](docs/quickstart/SYMFONY.md)
+- [Drupal database sync](docs/quickstart/DRUPAL.md)
+- [Wordpress database sync](docs/quickstart/WORDPRESS.md)
+
+If you want to have an inside in more configuration examples, see the [test scenarios](tests/scenario).
+
+## Usage
+
+### Command line
+
+Run the python script via command line.
+
+Installed via [pip](#install-pip):
+```bash
+$ db_sync_tool
+```
+
+Installed via [composer](#install-composer):
+```bash
+$ python3 vendor/kmi/db-sync-tool/db_sync_tool
+```
+
+![Example receiver](docs/images/db-sync-tool-example-receiver.gif)
+
+<a name="shell-arguments"></a>
+#### Shell arguments
+
+```bash
+usage: db_sync_tool [-h] [-f CONFIG_FILE] [-v] [-y] [-m] [-dr] [-i IMPORT_FILE] [-dn DUMP_NAME] [-kd KEEP_DUMP] [-o HOST_FILE] [-l LOG_FILE] [-cd] [-ta TABLES] [-r] [-t TYPE] [-tp TARGET_PATH]
+ [-tn TARGET_NAME] [-th TARGET_HOST] [-tu TARGET_USER] [-tpw TARGET_PASSWORD] [-tk TARGET_KEY] [-tpo TARGET_PORT] [-tdd TARGET_DUMP_DIR] [-tkd TARGET_KEEP_DUMPS] [-tdn TARGET_DB_NAME]
+ [-tdh TARGET_DB_HOST] [-tdu TARGET_DB_USER] [-tdpw TARGET_DB_PASSWORD] [-tdpo TARGET_DB_PORT] [-tad TARGET_AFTER_DUMP] [-op ORIGIN_PATH] [-on ORIGIN_NAME] [-oh ORIGIN_HOST]
+ [-ou ORIGIN_USER] [-opw ORIGIN_PASSWORD] [-ok ORIGIN_KEY] [-opo ORIGIN_PORT] [-odd ORIGIN_DUMP_DIR] [-okd ORIGIN_KEEP_DUMPS] [-odn ORIGIN_DB_NAME] [-odh ORIGIN_DB_HOST]
+ [-odu ORIGIN_DB_USER] [-odpw ORIGIN_DB_PASSWORD] [-odpo ORIGIN_DB_PORT] [-fpw] [-ur] [-uro USE_RSYNC_OPTIONS]
+ [origin] [target]
+
+A tool for automatic database synchronization from and to host systems.
+
+positional arguments:
+ origin Origin database defined in host file
+ target Target database defined in host file
+
+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
+ -y, --yes Skipping user confirmation for database import
+ -m, --mute Mute console output
+ -dr, --dry-run Testing process without running database export, transfer or import.
+ -i IMPORT_FILE, --import-file IMPORT_FILE
+ Import database from a specific file dump
+ -dn DUMP_NAME, --dump-name DUMP_NAME
+ Set a specific dump file name (default is "_[dbname]_[date]")
+ -kd KEEP_DUMP, --keep-dump KEEP_DUMP
+ Skipping target import of the database dump and saving the available dump file in the given directory
+ -o HOST_FILE, --host-file HOST_FILE
+ Using an additional hosts file for merging hosts information with the configuration file
+ -l LOG_FILE, --log-file LOG_FILE
+ File path for creating a additional log file
+ -cd, --clear-database
+ Dropping all tables before importing a new sync to get a clean database.
+ -ta TABLES, --tables TABLES
+ Defining specific tables to export, e.g. --tables=table1,table2
+ -r, --reverse Reverse origin and target hosts
+ -t TYPE, --type TYPE Defining the framework type [TYPO3, Symfony, Drupal, Wordpress]
+ -tp TARGET_PATH, --target-path TARGET_PATH
+ File path to target database credential file depending on the framework type
+ -tn TARGET_NAME, --target-name TARGET_NAME
+ Providing a name for the target system
+ -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
+ -tdd TARGET_DUMP_DIR, --target-dump-dir TARGET_DUMP_DIR
+ Directory path for database dump file on target system
+ -tkd TARGET_KEEP_DUMPS, --target-keep-dumps TARGET_KEEP_DUMPS
+ Keep dump file count for target system
+ -tdn TARGET_DB_NAME, --target-db-name TARGET_DB_NAME
+ Database name for target system
+ -tdh TARGET_DB_HOST, --target-db-host TARGET_DB_HOST
+ Database host for target system
+ -tdu TARGET_DB_USER, --target-db-user TARGET_DB_USER
+ Database user for target system
+ -tdpw TARGET_DB_PASSWORD, --target-db-password TARGET_DB_PASSWORD
+ Database password for target system
+ -tdpo TARGET_DB_PORT, --target-db-port TARGET_DB_PORT
+ Database port for target system
+ -tad TARGET_AFTER_DUMP, --target-after-dump TARGET_AFTER_DUMP
+ Additional dump file to insert after the regular database import
+ -op ORIGIN_PATH, --origin-path ORIGIN_PATH
+ File path to origin database credential file depending on the framework type
+ -on ORIGIN_NAME, --origin-name ORIGIN_NAME
+ Providing a name for the origin 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
+ -odd ORIGIN_DUMP_DIR, --origin-dump-dir ORIGIN_DUMP_DIR
+ Directory path for database dump file on origin system
+ -okd ORIGIN_KEEP_DUMPS, --origin-keep-dumps ORIGIN_KEEP_DUMPS
+ Keep dump file count for origin system
+ -odn ORIGIN_DB_NAME, --origin-db-name ORIGIN_DB_NAME
+ Database name for origin system
+ -odh ORIGIN_DB_HOST, --origin-db-host ORIGIN_DB_HOST
+ Database host for origin system
+ -odu ORIGIN_DB_USER, --origin-db-user ORIGIN_DB_USER
+ Database user for origin system
+ -odpw ORIGIN_DB_PASSWORD, --origin-db-password ORIGIN_DB_PASSWORD
+ Database password for origin system
+ -odpo ORIGIN_DB_PORT, --origin-db-port ORIGIN_DB_PORT
+ Database port for origin system
+ -fpw, --force-password
+ Force password user query
+ -ur, --use-rsync Use rsync as transfer method
+ -uro USE_RSYNC_OPTIONS, --use-rsync-options USE_RSYNC_OPTIONS
+ 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:
+
+```python
+from db_sync_tool import sync
+
+if __name__ == "__main__":
+ sync.Sync(config={}, args*)
+```
+
+## Configuration
+
+You can configure the script with [shell arguments](#shell-arguments) or using a separate configuration file.
+
+### Configuration File
+
+The `config.json` contains important information about the origin and the target system. In dependence on the given configuration the [synchronisation mode](docs/MODE.md) is implicitly selected.
+
+Example structure of a `config.yml` for a Symfony system in receiver mode (`path` defines the location of the Symfony database configuration file):
+```yaml
+type: Symfony
+origin:
+ host: 192.87.33.123
+ user: ssh_demo_user
+ path: /var/www/html/project/shared/.env
+target:
+ path: /var/www/html/app/.env
+```
+
+It is possible to adjust the `config.yml` [configuration](docs/CONFIG.md).
+
+## File sync
+
+There is an addon script available to sync files to. Use the [file-sync-tool](https://github.com/jackd248/file-sync-tool) to easily transfer files between origin and target system.
+
+## Release Guide
+
+A detailed guide is available to release a new version. See [here](docs/RELEASE.md).
+
+## Tests
+
+A docker container set up is available for testing purpose. See [here](tests/README.md).
+
+## Support
+
+If you like the project, feel free to support the development.
+
+<a href="https://www.buymeacoffee.com/konradmichalik" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/default-green.png" alt="Buy Me A Coffee" height="41" width="174"></a>
+
+
+%package help
+Summary: Development documents and examples for db-sync-tool-kmi
+Provides: python3-db-sync-tool-kmi-doc
+%description help
+# db sync tool
+
+![PyPI - Python Version](https://img.shields.io/pypi/pyversions/db_sync_tool-kmi)
+![PyPI](https://img.shields.io/pypi/v/db_sync_tool-kmi)
+[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/jackd248/db-sync-tool/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/jackd248/db-sync-tool/?branch=master)
+[![Build Status](https://scrutinizer-ci.com/g/jackd248/db-sync-tool/badges/build.png?b=master)](https://scrutinizer-ci.com/g/jackd248/db-sync-tool/build-status/master)
+
+Python script to synchronize a database from an origin to a target system with automatic database credential extraction depending on the selected framework.
+
+## Features
+
+- __Database sync__ from and to a remote system
+ - [MySQL](https://www.mysql.com/) (>= 5.5)
+ - [MariaDB](https://mariadb.org/) (>= 10.0)
+- __Proxy mode__ between two remote systems
+- Several [synchronisation modes](docs/MODE.md)
+- Automatic database __credential extraction__ using a supported framework
+ - [TYPO3](https://typo3.org/) (>= v7.6)
+ - [Symfony](https://symfony.com/) (>= v2.8)
+ - [Drupal](https://www.drupal.org/) (>= v8.0)
+ - [Wordpress](https://wordpress.org) (>= v5.0)
+ - [Laravel](https://laravel.com/) (>= v4.0)
+- Easily dump creation (database __backup__)
+- __Cleanup__ feature for backups
+- Extended __logging__ capabilities
+- Many more possibilities for [customization](docs/CONFIG.md)
+
+## Installation
+
+### Prerequisite
+
+The script needs [python](https://python.org/) __3.5__ or higher. It is necessary for some additional functionalities to have [pip](https://pypi.org/project/pip/) installed on your local machine.
+
+<a name="install-pip"></a>
+### pip
+The library can be installed from [PyPI](https://pypi.org/project/db-sync-tool-kmi/):
+```bash
+$ pip3 install db-sync-tool-kmi
+```
+
+<a name="install-composer"></a>
+### composer
+While using the script within the PHP framework context, the script is available via [packagist.org](https://packagist.org/packages/kmi/db-sync-tool) using composer:
+
+```bash
+$ composer require kmi/db-sync-tool
+```
+
+Additionally install the python requirements via the following pip command:
+
+````bash
+$ pip3 install -e vendor/kmi/db-sync-tool/
+````
+
+## Quickstart
+
+Detailed instructions for:
+
+- [Manual database sync](docs/quickstart/START.md)
+- [TYPO3 database sync](docs/quickstart/TYPO3.md)
+- [Symfony database sync](docs/quickstart/SYMFONY.md)
+- [Drupal database sync](docs/quickstart/DRUPAL.md)
+- [Wordpress database sync](docs/quickstart/WORDPRESS.md)
+
+If you want to have an inside in more configuration examples, see the [test scenarios](tests/scenario).
+
+## Usage
+
+### Command line
+
+Run the python script via command line.
+
+Installed via [pip](#install-pip):
+```bash
+$ db_sync_tool
+```
+
+Installed via [composer](#install-composer):
+```bash
+$ python3 vendor/kmi/db-sync-tool/db_sync_tool
+```
+
+![Example receiver](docs/images/db-sync-tool-example-receiver.gif)
+
+<a name="shell-arguments"></a>
+#### Shell arguments
+
+```bash
+usage: db_sync_tool [-h] [-f CONFIG_FILE] [-v] [-y] [-m] [-dr] [-i IMPORT_FILE] [-dn DUMP_NAME] [-kd KEEP_DUMP] [-o HOST_FILE] [-l LOG_FILE] [-cd] [-ta TABLES] [-r] [-t TYPE] [-tp TARGET_PATH]
+ [-tn TARGET_NAME] [-th TARGET_HOST] [-tu TARGET_USER] [-tpw TARGET_PASSWORD] [-tk TARGET_KEY] [-tpo TARGET_PORT] [-tdd TARGET_DUMP_DIR] [-tkd TARGET_KEEP_DUMPS] [-tdn TARGET_DB_NAME]
+ [-tdh TARGET_DB_HOST] [-tdu TARGET_DB_USER] [-tdpw TARGET_DB_PASSWORD] [-tdpo TARGET_DB_PORT] [-tad TARGET_AFTER_DUMP] [-op ORIGIN_PATH] [-on ORIGIN_NAME] [-oh ORIGIN_HOST]
+ [-ou ORIGIN_USER] [-opw ORIGIN_PASSWORD] [-ok ORIGIN_KEY] [-opo ORIGIN_PORT] [-odd ORIGIN_DUMP_DIR] [-okd ORIGIN_KEEP_DUMPS] [-odn ORIGIN_DB_NAME] [-odh ORIGIN_DB_HOST]
+ [-odu ORIGIN_DB_USER] [-odpw ORIGIN_DB_PASSWORD] [-odpo ORIGIN_DB_PORT] [-fpw] [-ur] [-uro USE_RSYNC_OPTIONS]
+ [origin] [target]
+
+A tool for automatic database synchronization from and to host systems.
+
+positional arguments:
+ origin Origin database defined in host file
+ target Target database defined in host file
+
+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
+ -y, --yes Skipping user confirmation for database import
+ -m, --mute Mute console output
+ -dr, --dry-run Testing process without running database export, transfer or import.
+ -i IMPORT_FILE, --import-file IMPORT_FILE
+ Import database from a specific file dump
+ -dn DUMP_NAME, --dump-name DUMP_NAME
+ Set a specific dump file name (default is "_[dbname]_[date]")
+ -kd KEEP_DUMP, --keep-dump KEEP_DUMP
+ Skipping target import of the database dump and saving the available dump file in the given directory
+ -o HOST_FILE, --host-file HOST_FILE
+ Using an additional hosts file for merging hosts information with the configuration file
+ -l LOG_FILE, --log-file LOG_FILE
+ File path for creating a additional log file
+ -cd, --clear-database
+ Dropping all tables before importing a new sync to get a clean database.
+ -ta TABLES, --tables TABLES
+ Defining specific tables to export, e.g. --tables=table1,table2
+ -r, --reverse Reverse origin and target hosts
+ -t TYPE, --type TYPE Defining the framework type [TYPO3, Symfony, Drupal, Wordpress]
+ -tp TARGET_PATH, --target-path TARGET_PATH
+ File path to target database credential file depending on the framework type
+ -tn TARGET_NAME, --target-name TARGET_NAME
+ Providing a name for the target system
+ -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
+ -tdd TARGET_DUMP_DIR, --target-dump-dir TARGET_DUMP_DIR
+ Directory path for database dump file on target system
+ -tkd TARGET_KEEP_DUMPS, --target-keep-dumps TARGET_KEEP_DUMPS
+ Keep dump file count for target system
+ -tdn TARGET_DB_NAME, --target-db-name TARGET_DB_NAME
+ Database name for target system
+ -tdh TARGET_DB_HOST, --target-db-host TARGET_DB_HOST
+ Database host for target system
+ -tdu TARGET_DB_USER, --target-db-user TARGET_DB_USER
+ Database user for target system
+ -tdpw TARGET_DB_PASSWORD, --target-db-password TARGET_DB_PASSWORD
+ Database password for target system
+ -tdpo TARGET_DB_PORT, --target-db-port TARGET_DB_PORT
+ Database port for target system
+ -tad TARGET_AFTER_DUMP, --target-after-dump TARGET_AFTER_DUMP
+ Additional dump file to insert after the regular database import
+ -op ORIGIN_PATH, --origin-path ORIGIN_PATH
+ File path to origin database credential file depending on the framework type
+ -on ORIGIN_NAME, --origin-name ORIGIN_NAME
+ Providing a name for the origin 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
+ -odd ORIGIN_DUMP_DIR, --origin-dump-dir ORIGIN_DUMP_DIR
+ Directory path for database dump file on origin system
+ -okd ORIGIN_KEEP_DUMPS, --origin-keep-dumps ORIGIN_KEEP_DUMPS
+ Keep dump file count for origin system
+ -odn ORIGIN_DB_NAME, --origin-db-name ORIGIN_DB_NAME
+ Database name for origin system
+ -odh ORIGIN_DB_HOST, --origin-db-host ORIGIN_DB_HOST
+ Database host for origin system
+ -odu ORIGIN_DB_USER, --origin-db-user ORIGIN_DB_USER
+ Database user for origin system
+ -odpw ORIGIN_DB_PASSWORD, --origin-db-password ORIGIN_DB_PASSWORD
+ Database password for origin system
+ -odpo ORIGIN_DB_PORT, --origin-db-port ORIGIN_DB_PORT
+ Database port for origin system
+ -fpw, --force-password
+ Force password user query
+ -ur, --use-rsync Use rsync as transfer method
+ -uro USE_RSYNC_OPTIONS, --use-rsync-options USE_RSYNC_OPTIONS
+ 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:
+
+```python
+from db_sync_tool import sync
+
+if __name__ == "__main__":
+ sync.Sync(config={}, args*)
+```
+
+## Configuration
+
+You can configure the script with [shell arguments](#shell-arguments) or using a separate configuration file.
+
+### Configuration File
+
+The `config.json` contains important information about the origin and the target system. In dependence on the given configuration the [synchronisation mode](docs/MODE.md) is implicitly selected.
+
+Example structure of a `config.yml` for a Symfony system in receiver mode (`path` defines the location of the Symfony database configuration file):
+```yaml
+type: Symfony
+origin:
+ host: 192.87.33.123
+ user: ssh_demo_user
+ path: /var/www/html/project/shared/.env
+target:
+ path: /var/www/html/app/.env
+```
+
+It is possible to adjust the `config.yml` [configuration](docs/CONFIG.md).
+
+## File sync
+
+There is an addon script available to sync files to. Use the [file-sync-tool](https://github.com/jackd248/file-sync-tool) to easily transfer files between origin and target system.
+
+## Release Guide
+
+A detailed guide is available to release a new version. See [here](docs/RELEASE.md).
+
+## Tests
+
+A docker container set up is available for testing purpose. See [here](tests/README.md).
+
+## Support
+
+If you like the project, feel free to support the development.
+
+<a href="https://www.buymeacoffee.com/konradmichalik" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/default-green.png" alt="Buy Me A Coffee" height="41" width="174"></a>
+
+
+%prep
+%autosetup -n db-sync-tool-kmi-2.10.9
+
+%build
+%py3_build
+
+%install
+%py3_install
+install -d -m755 %{buildroot}/%{_pkgdocdir}
+if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
+if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
+if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
+if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
+pushd %{buildroot}
+if [ -d usr/lib ]; then
+ find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/lib64 ]; then
+ find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/bin ]; then
+ find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/sbin ]; then
+ find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+touch doclist.lst
+if [ -d usr/share/man ]; then
+ find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
+fi
+popd
+mv %{buildroot}/filelist.lst .
+mv %{buildroot}/doclist.lst .
+
+%files -n python3-db-sync-tool-kmi -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Mon May 15 2023 Python_Bot <Python_Bot@openeuler.org> - 2.10.9-1
+- Package Spec generated