====== Synchronize data Script ======
This script is designed to manage backups for various databases. It supports functionalities like downloading the latest backups, selecting daily/weekly/monthly backups, and restoring databases.
==== Link ====
You can find the script under **Dev services ** repo . Follow this [[https://git.elosys.net/sys/dev.services/-/blob/master/synchronise_data?ref_type=heads|Gitlab]] link
==== Functions ====
* **print_help()** :
* Displays the help message and usage instructions.
* **parse_yaml()** :
* Parses a **YAML** file and converts it into bash variables.
* **compose_file_exists()** :
* Checks if the Docker Compose file exists.
* **get_odoo_container_name(), get_db_container_name(), get_odoo_image(), get_odoo_hostname()**:
* Retrieve various details from the Docker Compose configuration.
* **get_db_filename()** :
* Fetches the filename of the database backup based on the container name.
* **db_supported()** :
* Checks if the database is supported for synchronization.
* **check_dependencies()** :
* Installs necessary packages if they are not already installed.
* **set_backup_host()** :
* Sets the backup host based on the current hostname or network availability.
* **shutdown_odoo(), startup_odoo(), shutdown_db(), startup_db()** :
* Control Odoo and database services using Docker Compose.
* **db_available_on_bkh()** :
* Checks if the database backup is available on the backup host.
* **choose_file()** :
* Allows the user to select a backup file or selects the latest one if the -y option is used.
* **download_file()** :
* Downloads the specified type of file (db, fs, ex, eth) from the backup host.
* **retrieve()** :
* Retrieves the selected files based on the download mode.
* **wait_db_up()** :
* Waits until the database service is up and running.
* **restore_db()** :
* Restores the database from the downloaded backup file.
* **gauge()** :
* Displays a progress bar for the database restoration process.
* **alter_db()** :
* Alters the database configuration after restoration (e.g., updating URLs, disabling cron jobs).
==== Usage ====
synchronize_data.sh [OPTION]
==== Options ====
* **-y** : Get the latest backup.
* **-d** : Only download the **database** backup.
* **-e** : Only download the **extra-addons** backup.
* **-f** : Only download the **filestore** backup.
* **-s** : Select daily backups.
* **-w** : Select weekly backups.
* **-m** : Select monthly backups.
* **-x** : Enable debug mode.
* **-h** : Print the help message.
==== Example Commands ====
# Download the latest backup
./synchronize_data.sh -y
# Download only the database backup
./synchronize_data.sh -d
# Enable debug mode and select daily backups
./synchronize_data.sh -x -s
# Print help message
./synchronize_data.sh -h
----
--- //[[nadirhabib96@gmail.com|Nadir Habib]] 2024/06/05 12:21//