Compare commits

...

15 Commits

Author SHA1 Message Date
fb3bbe212d removed datetime from docker log output
All checks were successful
/ build-docker-image (push) Successful in 50s
2025-01-28 19:56:01 +00:00
e79bfbf384 revision
All checks were successful
/ build-docker-image (push) Successful in 24s
2025-01-20 20:16:51 +00:00
11af5b8729 docker context revision
All checks were successful
/ build-docker-image (push) Successful in 1m21s
2024-09-16 20:30:10 +01:00
54fe3460b6 fix docker file
Some checks failed
/ build-docker-image (push) Failing after 12s
2024-09-16 19:53:11 +01:00
03c4aa8f83 fix CDI 2
Some checks failed
/ build-docker-image (push) Failing after 40s
2024-09-16 19:50:04 +01:00
2afc508157 fix ci
Some checks failed
/ build-docker-image (push) Failing after 10s
2024-09-16 19:48:39 +01:00
4b7d6b8cd4 continous integration
Some checks failed
/ build-docker-image (push) Failing after 12s
2024-09-16 19:45:00 +01:00
bc4b4c322e Update README.md 2024-04-01 15:12:01 +00:00
9d48fc6d2d docker log message revision 2024-03-16 23:57:45 +00:00
174b528899 added docker log 2024-03-16 23:39:58 +00:00
90e90d64a2 fix: message impr 2023-06-10 09:59:24 +01:00
feeaf2e9d5 feat: added INFLUXDB_CLIENT_HOSTNAME to influxdb report 2023-06-10 09:48:02 +01:00
6d6b30d934 fix: script error 2023-06-10 09:31:25 +01:00
a4e05c1f33 fix: encoding problems 2023-06-10 09:11:59 +01:00
94db5c16d7 fix: small fixes 2023-06-10 08:57:16 +01:00
13 changed files with 388 additions and 271 deletions

7
.devcontainer/Dockerfile Normal file
View File

@@ -0,0 +1,7 @@
FROM duplicati/duplicati
RUN apt update && \
apt install -y default-mysql-client && \
rm -rf /var/lib/apt/lists/*
EXPOSE 8200

View File

@@ -0,0 +1,38 @@
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
// README at: https://github.com/devcontainers/templates/tree/main/src/ubuntu
{
"name": "duplicati_dev-container",
"build": {
// Path is relative to the devcontainer.json file.
"dockerfile": "Dockerfile"
},
"features": {
"ghcr.io/devcontainers/features/git:1": {
"ppa": true,
"version": "latest"
},
"ghcr.io/prulloac/devcontainer-features/gitlint:1": {}
},
"containerEnv": {}
//"features": {
// "ghcr.io/wxw-matt/devcontainer-features/command_runner:0": {},
// "ghcr.io/wxw-matt/devcontainer-features/script_runner:0": {},
// "ghcr.io/devcontainers-extra/features/act:1": {}
// }
// Features to add to the dev container. More info: https://containers.dev/features.
// "features": {},
// Use 'forwardPorts' to make a list of ports inside the container available locally.
// "forwardPorts": [],
// Use 'postCreateCommand' to run commands after the container is created.
// "postCreateCommand": "uname -a",
// Configure tool-specific properties.
// "customizations": {},
// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
// "remoteUser": "root"
}

View File

@@ -0,0 +1,31 @@
on:
push:
paths:
- "docker/**"
- ".gitea/**"
- "scripts/**"
jobs:
build-docker-image:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Log in to git.limbosolutions.com docker registry
uses: docker/login-action@v3
with:
registry: git.limbosolutions.com
username: ${{ secrets.GITLIMBO_DOCKER_REGISTRY_USERNAME }}
password: ${{ secrets.GITLIMBO_DOCKER_REGISTRY_PASSWORD }}
- name: Build and push Docker images
id: push
uses: docker/build-push-action@v6
with:
context: ${{gitea.workspace}}
file: ${{gitea.workspace}}/docker/Dockerfile
push: true
tags: git.limbosolutions.com/kb/duplicati:latest

12
.github/dependabot.yml vendored Normal file
View File

@@ -0,0 +1,12 @@
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for more information:
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
# https://containers.dev/guide/dependabot
version: 2
updates:
- package-ecosystem: "devcontainers"
directory: "/"
schedule:
interval: weekly

19
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,19 @@
{
"docker.commands.composeUpSubset": [
{
"label": "Compose Up",
"template": "${composeCommand} ${profileList} ${configurationFile} up ${detached} ${build} ${serviceList}"
}
],
"docker.commands.composeUp": [
{
"label": "Compose Up",
"template": "${composeCommand} ${configurationFile} up ${detached} ${build}"
}
],
"docker.contexts.showInStatusBar": true
} // {
// "docker.commands.build": "${containerCommand} build --pull --rm -f \"${dockerfile}\" -t ${tag} . --progress=plain"
// }

267
README.md
View File

@@ -1,121 +1,146 @@
# Duplicati # Duplicati
## Docker - [Docker](#docker)
- [Duplicati/mySql Client - image](#duplicatimysql-client---image)
### Duplicati/mySql Client - image - [Scripts](#scripts)
- [mysql - dump backup](#mysql---dump-backup)
Image contains all scripts - [Influxdb Reporting](#influxdb-reporting)
- [Docker log](#docker-log)
[+ Information](docker/mysqlclient/README.md) - [Environment Variables](#environment-variables)
- [Exit Codes](#exit-codes)
- [cli](#cli)
## Scripts - [Send Mail](#send-mail)
- [Settings](#settings)
_Source: https://github.com/duplicati/duplicati/blob/master/Duplicati/Library/Modules/Builtin/run-script-example.sh_ - [Send Email](#send-email)
- [nginx](#nginx)
### Backup mySql Database
## Docker
Using option run-script-before-required on duplicati job set value to [script](scripts/duplicati-mysql-backup). ### Duplicati/mySql Client - image
And job will create a database dump configured using environment variables.
Example: Image contains all scripts
--run-script-after=/root/repos/duplicate/scripts/duplicati-mysql-backup
[+ Information](docker/README.md)
[script](scripts/duplicati-mysql-backup)
## Scripts
```bash
#/etc/default/duplicati-mysql Source: <https://github.com/duplicati/duplicati/blob/master/Duplicati/Library/Modules/Builtin/run-script-example.sh>
MYSQL_HOST="mysqlserver"
MYSQL_USER="msqluser" ### mysql - dump backup
MYSQL_PASSWORD="msqlpassord"
MYSQL_DATABASE="msqlpassword" Duplicati options set `run-script-before-required` to [duplicati-mysql-backup](scripts/duplicati-mysql-backup).
MYSQL_BACKUP_FOLDER="/var/db-dumps"
``` ```bash
MYSQL_HOST="mysqlserver"
### Influxdb Reporting MYSQL_USER="msqluser"
MYSQL_PASSWORD="msqlpassord"
```bash MYSQL_DATABASE="msqlpassword"
#/etc/default/duplicati-influxdb MYSQL_BACKUP_FOLDER="/var/db-dumps"
INFLUXDB_SERVER=http://influxdb01.lan:8086 ```
INFLUXDB_BUCKET=bucketname
INFLUXDB_ORG=orgname ### Influxdb Reporting
INFLUXDB_TOKEN=influxdbname
``` ```bash
#/etc/default/duplicati-influxdb
Add [script](scripts/duplicati-influxdb-notify) to default settings. INFLUXDB_SERVER=http://influxdb01.lan:8086
Example: INFLUXDB_BUCKET=bucketname
--run-script-after=/root/repos/duplicate/scripts/duplicati-influxdb-notify INFLUXDB_ORG=orgname
INFLUXDB_TOKEN=influxdbname
#by default it uses client hostname in measurement field host
### Environment Variables #to override uncomment
#INFLUXDB_CLIENT_HOSTNAME=xxx
Source: https://github.com/duplicati/duplicati/blob/master/Duplicati/Library/Modules/Builtin/run-script-example.sh_ ```
- DUPLICATI__EVENTNAME Add [script](scripts/duplicati-influxdb-notify) to default settings.
Example:
Eventname is BEFORE if invoked as --run-script-before, and AFTER if invoked as --run-script-after. This value cannot be changed by writing it back! --run-script-after=duplicati-influxdb-notify
- DUPLICATI__OPERATIONNAME ### Docker log
Operation name can be any of the operations that Duplicati supports. For example it can be "Backup", "Cleanup", "Restore", or "DeleteAllButN". This value cannot be changed by writing it back! Add [script](docker/scripts/dockerlog) to default settings.
Example:
- DUPLICATI__RESULTFILE --run-script-after=dockerlog
If invoked as --run-script-after this will contain the name of the file where result data is placed. This value cannot be changed by writing it back! ### Environment Variables
- DUPLICATI__REMOTEURL Source: <https://github.com/duplicati/duplicati/blob/master/Duplicati/Library/Modules/Builtin/run-script-example.sh>_
This is the remote url for the target backend. This value can be changed by echoing --remoteurl = "new value". - DUPLICATI__EVENTNAME
- DUPLICATI__LOCALPATH Eventname is BEFORE if invoked as --run-script-before, and AFTER if invoked as --run-script-after. This value cannot be changed by writing it back!
This is the path to the folders being backed up or restored. This variable is empty operations other than backup or restore. The local path can contain : to separate multiple folders. This value can be changed by echoing --localpath = "new value". - DUPLICATI__OPERATIONNAME
- DUPLICATI__PARSED_RESULT Operation name can be any of the operations that Duplicati supports. For example it can be "Backup", "Cleanup", "Restore", or "DeleteAllButN". This value cannot be changed by writing it back!
This is a value indicating how well the operation was performed. It can take the values: Unknown, Success, Warning, Error, Fatal. - DUPLICATI__RESULTFILE
### Exit Codes If invoked as --run-script-after this will contain the name of the file where result data is placed. This value cannot be changed by writing it back!
- DUPLICATI__REMOTEURL
The following exit codes are supported:
This is the remote url for the target backend. This value can be changed by echoing --remoteurl = "new value".
- 0: OK, run operation
- 1: OK, don't run operation - DUPLICATI__LOCALPATH
- 2: Warning, run operation
- 3: Warning, don't run operation This is the path to the folders being backed up or restored. This variable is empty operations other than backup or restore. The local path can contain : to separate multiple folders. This value can be changed by echoing --localpath = "new value".
- 4: Error, run operation
- 5: Error don't run operation - DUPLICATI__PARSED_RESULT
- other: Error don't run operation
This is a value indicating how well the operation was performed. It can take the values: Unknown, Success, Warning, Error, Fatal.
### Exit Codes
The following exit codes are supported:
## cli
- 0: OK, run operation
## Send Mail - 1: OK, don't run operation
- 2: Warning, run operation
```bash - 3: Warning, don't run operation
#for testing - 4: Error, run operation
duplicati-cli send-mail --send-mail-password="pass" --send-mail-to="target@mail.lan" --send-mail-username="suer@mail.lan" --send-mail-url="smtp://serveraddress:25" - 5: Error don't run operation
``` - other: Error don't run operation
## cli
## Settings
## Send Mail
### Send Email
```bash
```bash #for testing
duplicati-cli send-mail --send-mail-password="pass" --send-mail-to="target@mail.lan" --send-mail-username="suer@mail.lan" --send-mail-url="smtp://serveraddress:25"
--send-mail-any-operation=true ```
--send-mail-body=%RESULT%
--send-mail-level=all ## Settings
--send-mail-subject=Duplicati %OPERATIONNAME% report for -> %backup-name%
--send-mail-to=destination@mail.lan ### Send Email
--send-http-result-output-format=Duplicati
--send-mail-url=smtp://serveraddress:25 ```bash
--send-mail-password=password
--send-mail-username=user@mail.lan --send-mail-any-operation=true
--send-mail-body=%RESULT%
``` --send-mail-level=all
--send-mail-subject=Duplicati %OPERATIONNAME% report for -> %backup-name%
--send-mail-to=destination@mail.lan
--send-http-result-output-format=Duplicati
--send-mail-url=smtp://serveraddress:25
--send-mail-password=password
--send-mail-username=user@mail.lan
```
## nginx
Example running on _duplicati sub folder
```bash
location /_duplicati/ {
proxy_pass http://<duplicatiserver>:8200/;
proxy_redirect ~^/(.*) $scheme://$http_host/_duplicati/$1;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Protocol $scheme;
proxy_set_header X-Url-Scheme $scheme;
}
```

17
docker/Dockerfile Normal file
View File

@@ -0,0 +1,17 @@
FROM duplicati/duplicati
RUN apt update && \
apt install -y default-mysql-client && \
rm -rf /var/lib/apt/lists/*
#repo root scripts
COPY /docker/scripts /usr/local/bin
#docker scripts
COPY ./scripts /usr/local/bin
RUN \
chmod +x /usr/local/bin/duplicati-influxdb-notify; \
chmod +x /usr/local/bin/duplicati-mysql-backup; \
chmod +x /usr/local/bin/dockerlog
EXPOSE 8200

34
docker/README.md Normal file
View File

@@ -0,0 +1,34 @@
# Duplicati / mySql Client
- [Docker Compose](#docker-compose)
- [Development](#development)
- [Docker Build](#docker-build)
## Docker Compose
```yaml
version: "3"
services:
duplicati:
image: git.limbosolutions.com/kb/duplicati:mysql-latest
environment:
- MYSQL_HOST=${MYSQL_HOST}
- MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_USER=${MYSQL_USER}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
- INFLUXDB_SERVER=${INFLUXDB_SERVER}
- INFLUXDB_BUCKET=${INFLUXDB_BUCKET}
- INFLUXDB_ORG=${INFLUXDB_ORG}
- INFLUXDB_TOKEN=${INFLUXDB_TOKEN}
- INFLUXDB_CLIENT_HOSTNAME=${INFLUXDB_CLIENT_HOSTNAME}
volumes:
- duplicati-data:/data
- db-dumps:/db-dumps
ports:
- 8200:8200
restart: unless-stopped
volumes:
duplicati-data:
db-dumps:
```

View File

@@ -1,10 +0,0 @@
FROM duplicati/duplicati
RUN apt update && apt install -y default-mysql-client && rm -rf /var/lib/apt/lists/*
COPY /scripts/* /usr/local/bin
RUN chmod +x /usr/local/bin/duplicati-influxdb-notify
RUN chmod +x /usr/local/bin/duplicati-mysql-backup
EXPOSE 8200

View File

@@ -1,71 +0,0 @@
# Duplicati / mySql Client
```bash
#Executed on repository root folder
docker build -t duplicati-mysqlclient:latest -f docker/mysqlclient/Dockerfile .
```
```bash
#Executed on repository root folder
sudo docker build -t duplicati-mysqlclient:latest -f docker/mysqlclient/Dockerfile --output type=tar,dest=build/duplicati-mysqlclient.tar .
```
## Portainer
Images -> Build a new Image -> URL
**Name:** duplicati-mysqlclient:latest
**URL:** https://git.limbosolutions.com/kb/duplicati.git
**Dockerfile path:** docker/mysqlclient/Dockerfile
## Docker Compose
```yaml
version: "3"
services:
duplicati:
image: duplicati-mysqlclient
environment:
- MYSQL_HOST=${MYSQL_HOST}
- MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_USER=${MYSQL_USER}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
- INFLUXDB_SERVER=${INFLUXDB_SERVER}
- INFLUXDB_BUCKET=${INFLUXDB_BUCKET}
- INFLUXDB_ORG=${INFLUXDB_ORG}
- INFLUXDB_TOKEN=:{INFLUXDB_TOKEN}
volumes:
- duplicati-data:/data
- db-dumps:/db-dumps
ports:
- 8200:8200
restart: unless-stopped
volumes:
duplicati-data:
db-dumps:
```
### Transfer To another system
1. Copy docker compose and execute on another system
2. Check volumes and service started succesfully
3. Stop all compose services
4. Change volume on duplicati service to user a temporary volume example (duclicati_tmpdata)
5. Check if all volumes are writable on duplication service
6. Start only the duplicati service (with temporary volume) on target system
7. On source system Stop app services on docker compose except duplicati
8. Execute a full backup ou source system
9. On target system execute a manual restore to original destination
10. Stop duplicati
11. Change duplicati to use original volume
12. And change volumes on duplicati to RO
13. Start all services
14. Check everything ok

10
docker/scripts/dockerlog Normal file
View File

@@ -0,0 +1,10 @@
#!/bin/bash
#printf $(date '+%Y-%m-%d') >> /proc/1/fd/1;
#printf " " >> /proc/1/fd/1;
#printf $(date '+%H:%M:%S') >> /proc/1/fd/1;
printf "INFO:" >> /proc/1/fd/1;
printf " %s" $DUPLICATI__OPERATIONNAME >> /proc/1/fd/1;
printf " %s" $DUPLICATI__PARSED_RESULT >> /proc/1/fd/1;
printf " %s" $DUPLICATI__backup_name >> /proc/1/fd/1;
printf " %s" $DUPLICATI__LOCALPATH >> /proc/1/fd/1;
printf "\n" >> /proc/1/fd/1

View File

@@ -20,13 +20,18 @@ escape_tag_str () {
ESCAPED=${UNSCAPED//[ ]/\\ } ESCAPED=${UNSCAPED//[ ]/\\ }
} }
if [[ ! -z "$INFLUXDB_CLIENT_HOSTNAME" ]]; then
UNSCAPED=$INFLUXDB_CLIENT_HOSTNAME
if [[ ! -z "$HOSTNAME" ]]; then
UNSCAPED=$HOSTNAME
escape_tag_str escape_tag_str
TAGS="${TAGS},host=${ESCAPED}" TAGS="${TAGS},host=${ESCAPED}"
MESSAGE_FIELD_VALUE="${MESSAGE_FIELD_VALUE} ${HOSTNAME}" MESSAGE_FIELD_VALUE="${MESSAGE_FIELD_VALUE}${INFLUXDB_CLIENT_HOSTNAME} "
else
if [[ ! -z "$HOSTNAME" ]]; then
UNSCAPED=$HOSTNAME
escape_tag_str
TAGS="${TAGS},host=${ESCAPED}"
MESSAGE_FIELD_VALUE="${MESSAGE_FIELD_VALUE}${HOSTNAME} "
fi
fi fi
if [[ ! -z "$DUPLICATI__EVENTNAME" ]]; then if [[ ! -z "$DUPLICATI__EVENTNAME" ]]; then
@@ -39,21 +44,21 @@ if [[ ! -z "$DUPLICATI__OPERATIONNAME" ]]; then
UNSCAPED=$DUPLICATI__OPERATIONNAME UNSCAPED=$DUPLICATI__OPERATIONNAME
escape_tag_str escape_tag_str
TAGS="${TAGS},operationName=${ESCAPED}" TAGS="${TAGS},operationName=${ESCAPED}"
MESSAGE_FIELD_VALUE="${MESSAGE_FIELD_VALUE} ${DUPLICATI__OPERATIONNAME}" MESSAGE_FIELD_VALUE="${MESSAGE_FIELD_VALUE}${DUPLICATI__OPERATIONNAME} "
fi fi
if [[ ! -z "$DUPLICATI__backup_name" ]]; then if [[ ! -z "$DUPLICATI__backup_name" ]]; then
UNSCAPED=$DUPLICATI__backup_name UNSCAPED=$DUPLICATI__backup_name
escape_tag_str escape_tag_str
TAGS="${TAGS},backupName=${ESCAPED}" TAGS="${TAGS},backupName=${ESCAPED}"
MESSAGE_FIELD_VALUE="${MESSAGE_FIELD_VALUE} ${DUPLICATI__backup_name}" MESSAGE_FIELD_VALUE="${MESSAGE_FIELD_VALUE}${DUPLICATI__backup_name} "
fi fi
if [[ ! -z "$DUPLICATI__PARSED_RESULT" ]]; then if [[ ! -z "$DUPLICATI__PARSED_RESULT" ]]; then
UNSCAPED=$DUPLICATI__PARSED_RESULT UNSCAPED=$DUPLICATI__PARSED_RESULT
escape_tag_str escape_tag_str
TAGS="${TAGS},status=${ESCAPED}" TAGS="${TAGS},status=${ESCAPED}"
MESSAGE_FIELD_VALUE="${MESSAGE_FIELD_VALUE} ${DUPLICATI__PARSED_RESULT}" MESSAGE_FIELD_VALUE="${MESSAGE_FIELD_VALUE}${DUPLICATI__PARSED_RESULT} "
fi fi
if [[ ! -z "$DUPLICATI__RESULTFILE" ]]; then if [[ ! -z "$DUPLICATI__RESULTFILE" ]]; then
@@ -68,7 +73,7 @@ if [[ ! -z "$DUPLICATI__LOCALPATH" ]]; then
TAGS="${TAGS},localPath=${ESCAPED}" TAGS="${TAGS},localPath=${ESCAPED}"
fi fi
FIELDS="message=\"Duplicati ${MESSAGE_FIELD_VALUE}\"" FIELDS="message=\"${MESSAGE_FIELD_VALUE}\""
#echo $TAGS #echo $TAGS
curl --request POST \ curl --request POST \

View File

@@ -1,60 +1,60 @@
#!/bin/bash #!/bin/bash
# mysql database backup. # mysql database backup.
# executed by duplicati run-script-before-required # executed by duplicati run-script-before-required
# required environment variables: # required environment variables:
# MYSQL_HOST # MYSQL_HOST
# MYSQL_USER # MYSQL_USER
# MYSQL_PASSWORD # MYSQL_PASSWORD
# MYSQL_DATABASE # MYSQL_DATABASE
# MYSQL_BACKUP_FOLDER # MYSQL_BACKUP_FOLDER
#any error must stop execution #any error must stop execution
set -e set -e
if [ -f "/etc/default/duplicati-mysql" ]; then if [ -f "/etc/default/duplicati-mysql" ]; then
export $(cat /etc/default/duplicati-mysql) export $(cat /etc/default/duplicati-mysql)
fi fi
if [ -f "~/.config/duplicati-mysql" ]; then if [ -f "~/.config/duplicati-mysql" ]; then
export $(cat ~/default/duplicati-mysql) export $(cat ~/default/duplicati-mysql)
fi fi
if [ $DUPLICATI__OPERATIONNAME == "Backup" ] if [ $DUPLICATI__OPERATIONNAME == "Backup" ]
then then
echo "Backup Job!!" echo "Backup Job!!"
else else
echo "Not a backup operation. exiting!" echo "Not a backup operation. exiting!"
#OK, run operation #OK, run operation
exit exit
fi fi
if [[-z "$MYSQL_BACKUP_FOLDER" ]]; then if [ -z "$MYSQL_BACKUP_FOLDER" ]; then
MYSQL_BACKUP_FOLDER="/var/db-dumps" MYSQL_BACKUP_FOLDER="/var/db-dumps"
fi fi
if [ ! -d $MYSQL_BACKUP_FOLDER ]; then if [ ! -d $MYSQL_BACKUP_FOLDER ]; then
mkdir -p $MYSQL_BACKUP_FOLDER; mkdir -p $MYSQL_BACKUP_FOLDER;
fi fi
TARGETFILENAME=${MYSQL_DATABASE}_dump_$(date -d "today" +"%Y%m%d%H%M%S").sql TARGETFILENAME=${MYSQL_DATABASE}_dump_$(date -d "today" +"%Y%m%d%H%M%S").sql
echo "dump file name:$TARGETFILENAME" echo "dump file name:$TARGETFILENAME"
if [ -f /tmp/${TARGETFILENAME} ] if [ -f /tmp/${TARGETFILENAME} ]
then then
rm /tmp/${TARGETFILENAME} rm /tmp/${TARGETFILENAME}
fi fi
mysqldump -h ${MYSQL_HOST} --user=${MYSQL_USER} -p"${MYSQL_PASSWORD}" ${MYSQL_DATABASE} > /tmp/${TARGETFILENAME} mysqldump -h ${MYSQL_HOST} --user=${MYSQL_USER} -p"${MYSQL_PASSWORD}" ${MYSQL_DATABASE} > /tmp/${TARGETFILENAME}
if [ x$(find "$MYSQL_BACKUP_FOLDER" -prune -empty) = x"$MYSQL_BACKUP_FOLDER" ]; then if [ x$(find "$MYSQL_BACKUP_FOLDER" -prune -empty) = x"$MYSQL_BACKUP_FOLDER" ]; then
echo "folder is empty... ignoring clean db dump folder" echo "folder is empty... ignoring clean db dump folder"
else else
rm -r ${MYSQL_BACKUP_FOLDER}/* rm -r ${MYSQL_BACKUP_FOLDER}/*
fi fi
mv /tmp/${TARGETFILENAME} ${MYSQL_BACKUP_FOLDER}/${TARGETFILENAME} mv /tmp/${TARGETFILENAME} ${MYSQL_BACKUP_FOLDER}/${TARGETFILENAME}