From 00557e3f1b5ecd94386ea0b107ddab5d5cef185b Mon Sep 17 00:00:00 2001 From: CoprDistGit Date: Mon, 15 May 2023 04:19:25 +0000 Subject: automatic import of python-db-sync-tool-kmi --- python-db-sync-tool-kmi.spec | 802 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 802 insertions(+) create mode 100644 python-db-sync-tool-kmi.spec (limited to 'python-db-sync-tool-kmi.spec') 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. + + +### pip +The library can be installed from [PyPI](https://pypi.org/project/db-sync-tool-kmi/): +```bash +$ pip3 install db-sync-tool-kmi +``` + + +### 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) + + +#### 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. + +Buy Me A Coffee + + +%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. + + +### pip +The library can be installed from [PyPI](https://pypi.org/project/db-sync-tool-kmi/): +```bash +$ pip3 install db-sync-tool-kmi +``` + + +### 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) + + +#### 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. + +Buy Me A Coffee + + +%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. + + +### pip +The library can be installed from [PyPI](https://pypi.org/project/db-sync-tool-kmi/): +```bash +$ pip3 install db-sync-tool-kmi +``` + + +### 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) + + +#### 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. + +Buy Me A Coffee + + +%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 - 2.10.9-1 +- Package Spec generated -- cgit v1.2.3