mirror of
https://github.com/tiredofit/docker-db-backup.git
synced 2025-12-22 21:53:42 +01:00
Compare commits
15 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a90e52091d | ||
|
|
ac58b5cdf6 | ||
|
|
fcbe771793 | ||
|
|
168982ab53 | ||
|
|
e377fcb6ae | ||
|
|
50f27233a9 | ||
|
|
7ccbf23af6 | ||
|
|
0921971aa3 | ||
|
|
fd3b9c5fa0 | ||
|
|
89b6176188 | ||
|
|
22e126200e | ||
|
|
3e79ca68a0 | ||
|
|
bfeb07d7c0 | ||
|
|
8a5d647de7 | ||
|
|
4f5c04acac |
1
.github/workflows/main.yml
vendored
1
.github/workflows/main.yml
vendored
@@ -19,7 +19,6 @@ jobs:
|
||||
id: prep
|
||||
run: |
|
||||
DOCKER_IMAGE=${GITHUB_REPOSITORY/docker-/}
|
||||
set -x
|
||||
if [[ $GITHUB_REF == refs/heads/* ]]; then
|
||||
if [[ $GITHUB_REF == refs/heads/*/* ]] ; then
|
||||
BRANCH="${DOCKER_IMAGE}:$(echo $GITHUB_REF | sed "s|refs/heads/||g" | sed "s|/|-|g")"
|
||||
|
||||
1
.github/workflows/manual.yml
vendored
1
.github/workflows/manual.yml
vendored
@@ -19,7 +19,6 @@ jobs:
|
||||
id: prep
|
||||
run: |
|
||||
DOCKER_IMAGE=${GITHUB_REPOSITORY/docker-/}
|
||||
set -x
|
||||
if [[ $GITHUB_REF == refs/heads/* ]]; then
|
||||
if [[ $GITHUB_REF == refs/heads/*/* ]] ; then
|
||||
BRANCH="${DOCKER_IMAGE}:$(echo $GITHUB_REF | sed "s|refs/heads/||g" | sed "s|/|-|g")"
|
||||
|
||||
55
CHANGELOG.md
55
CHANGELOG.md
@@ -1,3 +1,58 @@
|
||||
## 3.7.3 2022-12-20 <dave at tiredofit dot ca>
|
||||
|
||||
### Changed
|
||||
- Make S3_KEY_ID and S3_KEY_SECRET optional should IAM roles be used (Credit to alwynpan@github)
|
||||
|
||||
|
||||
## 3.7.2 2022-12-19 <dave at tiredofit dot ca>
|
||||
|
||||
### Changed
|
||||
- Bugfix for 3.7.1
|
||||
|
||||
|
||||
## 3.7.1 2022-12-19 <dave at tiredofit dot ca>
|
||||
|
||||
### Changed
|
||||
- Add MYSQL_ENABLE_TLS environment variable to switch on and off
|
||||
|
||||
### Reverted
|
||||
- Set default for MYSQL_TLS_CA_FILE to accomodate for most use cases
|
||||
|
||||
|
||||
## 3.7.0 2022-12-16 <dave at tiredofit dot ca>
|
||||
|
||||
### Added
|
||||
- Introduce support for connecting via TLS to MySQL / MariaDB Hosts with MYSQL_TLS_* variables - See README for more details
|
||||
|
||||
### Changed
|
||||
- Fix for cleaning up filesystems that are syncing to Azure via blobxfer
|
||||
|
||||
|
||||
## 3.6.1 2022-11-23 <dave at tiredofit dot ca>
|
||||
|
||||
### Added
|
||||
- Switch to Alpine 3.17 base
|
||||
- Switch to OpenSSL instead of LibreSSL
|
||||
|
||||
|
||||
## 3.6.0 2022-11-21 <dave at tiredofit dot ca>
|
||||
|
||||
### Added
|
||||
- Postgresql 15 Support
|
||||
|
||||
|
||||
## 3.5.6 2022-11-15 <dave at tiredofit dot ca>
|
||||
|
||||
### Changed
|
||||
- Add failure if DB_TYPE empty or malformed
|
||||
|
||||
|
||||
## 3.5.5 2022-10-18 <dave at tiredofit dot ca>
|
||||
|
||||
### Changed
|
||||
- Fix for S3 backups and trailing slashes (@greena13)
|
||||
|
||||
|
||||
## 3.5.4 2022-10-13 <dave at tiredofit dot ca>
|
||||
|
||||
### Changed
|
||||
|
||||
16
Dockerfile
16
Dockerfile
@@ -1,8 +1,7 @@
|
||||
FROM docker.io/tiredofit/alpine:3.16
|
||||
FROM docker.io/tiredofit/alpine:3.17
|
||||
LABEL maintainer="Dave Conroy (github.com/tiredofit)"
|
||||
|
||||
### Set Environment Variables
|
||||
|
||||
ENV INFLUX2_VERSION=2.4.0 \
|
||||
MSSQL_VERSION=18.0.1.1-1 \
|
||||
CONTAINER_ENABLE_MESSAGING=FALSE \
|
||||
@@ -12,7 +11,8 @@ ENV INFLUX2_VERSION=2.4.0 \
|
||||
IMAGE_REPO_URL="https://github.com/tiredofit/docker-db-backup/"
|
||||
|
||||
### Dependencies
|
||||
RUN set -ex && \
|
||||
RUN source /assets/functions/00-container && \
|
||||
set -ex && \
|
||||
apk update && \
|
||||
apk upgrade && \
|
||||
apk add -t .db-backup-build-deps \
|
||||
@@ -20,7 +20,7 @@ RUN set -ex && \
|
||||
bzip2-dev \
|
||||
git \
|
||||
libarchive-dev \
|
||||
libressl-dev \
|
||||
openssl-dev \
|
||||
libffi-dev \
|
||||
python3-dev \
|
||||
py3-pip \
|
||||
@@ -35,10 +35,10 @@ RUN set -ex && \
|
||||
mariadb-client \
|
||||
mariadb-connector-c \
|
||||
mongodb-tools \
|
||||
libressl \
|
||||
openssl \
|
||||
pigz \
|
||||
postgresql \
|
||||
postgresql-client \
|
||||
postgresql15 \
|
||||
postgresql15-client \
|
||||
pv \
|
||||
py3-cryptography \
|
||||
redis \
|
||||
@@ -83,4 +83,4 @@ RUN set -ex && \
|
||||
rm -rf /root/.cache /tmp/* /var/cache/apk/*
|
||||
|
||||
### S6 Setup
|
||||
ADD install /
|
||||
COPY install /
|
||||
|
||||
25
README.md
25
README.md
@@ -1,7 +1,7 @@
|
||||
# github.com/tiredofit/docker-db-backup
|
||||
|
||||
[](https://github.com/tiredofit/docker-db-backup/releases/latest)
|
||||
[](https://github.com/tiredofit/docker-db-backup/actions?query=workflow%3Abuild)
|
||||
[](https://github.com/tiredofit/docker-db-backup/actions)
|
||||
[](https://hub.docker.com/r/tiredofit/db-backup/)
|
||||
[](https://hub.docker.com/r/tiredofit/db-backup/)
|
||||
[](https://github.com/sponsors/tiredofit)
|
||||
@@ -53,6 +53,7 @@ Currently backs up CouchDB, InfluxDB, MySQL, MongoDB, Postgres, Redis servers.
|
||||
- [Scheduling Options](#scheduling-options)
|
||||
- [Backup Options](#backup-options)
|
||||
- [Backing Up to S3 Compatible Services](#backing-up-to-s3-compatible-services)
|
||||
- [Upload to a Azure storage account by `blobxfer`](#upload-to-a-azure-storage-account-by-blobxfer)
|
||||
- [Maintenance](#maintenance)
|
||||
- [Shell Access](#shell-access)
|
||||
- [Manual Backups](#manual-backups)
|
||||
@@ -139,7 +140,7 @@ Be sure to view the following repositories to understand all the customizable op
|
||||
|
||||
### Database Specific Options
|
||||
| Parameter | Description | Default |
|
||||
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------- |
|
||||
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------- |
|
||||
| `DB_AUTH` | (Mongo Only - Optional) Authentication Database | |
|
||||
| `DB_TYPE` | Type of DB Server to backup `couch` `influx` `mysql` `pgsql` `mongo` `redis` `sqlite3` | |
|
||||
| `DB_HOST` | Server Hostname e.g. `mariadb`. For `sqlite3`, full path to DB file e.g. `/backup/db.sqlite3` | |
|
||||
@@ -170,7 +171,7 @@ Your Organization will be mapped to `DB_USER` and your root token will need to b
|
||||
|
||||
### Backup Options
|
||||
| Parameter | Description | Default |
|
||||
| ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------- | -------------- |
|
||||
| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------- | ------------------------- |
|
||||
| `COMPRESSION` | Use either Gzip `GZ`, Bzip2 `BZ`, XZip `XZ`, ZSTD `ZSTD` or none `NONE` | `ZSTD` |
|
||||
| `COMPRESSION_LEVEL` | Numberical value of what level of compression to use, most allow `1` to `9` except for `ZSTD` which allows for `1` to `19` - | `3` |
|
||||
| `ENABLE_PARALLEL_COMPRESSION` | Use multiple cores when compressing backups `TRUE` or `FALSE` | `TRUE` |
|
||||
@@ -182,6 +183,12 @@ Your Organization will be mapped to `DB_USER` and your root token will need to b
|
||||
| `MYSQL_MAX_ALLOWED_PACKET` | Max allowed packet if backing up MySQL / MariaDB | `512M` |
|
||||
| `MYSQL_SINGLE_TRANSACTION` | Backup in a single transaction with MySQL / MariaDB | `TRUE` |
|
||||
| `MYSQL_STORED_PROCEDURES` | Backup stored procedures with MySQL / MariaDB | `TRUE` |
|
||||
| `MYSQL_ENABLE_TLS` | Enable TLS functionality for MySQL client | `FALSE` |
|
||||
| `MYSQL_TLS_VERIFY` | (optional) If using TLS (by means of MYSQL_TLS_* variables) verify remote host | `FALSE` |
|
||||
| `MYSQL_TLS_VERSION` | What TLS `v1.1` `v1.2` `v1.3` version to utilize | `TLSv1.1,TLSv1.2,TLSv1.3` |
|
||||
| `MYSQL_TLS_CA_FILE` | Filename to load custom CA certificate for connecting via TLS | `/etc/ssl/cert.pem` |
|
||||
| `MYSQL_TLS_CERT_FILE` | Filename to load client certificate for connecting via TLS | |
|
||||
| `MYSQL_TLS_KEY_FILE` | Filename to load client key for connecting via TLS | |
|
||||
|
||||
- When using compression with MongoDB, only `GZ` compression is possible.
|
||||
|
||||
@@ -190,11 +197,11 @@ Your Organization will be mapped to `DB_USER` and your root token will need to b
|
||||
If `BACKUP_LOCATION` = `S3` then the following options are used.
|
||||
|
||||
| Parameter | Description | Default |
|
||||
|-----------------------|-------------------------------------------------------------------------------------------|---------|
|
||||
| --------------------- | ----------------------------------------------------------------------------------------- | ------- |
|
||||
| `S3_BUCKET` | S3 Bucket name e.g. `mybucket` | |
|
||||
| `S3_KEY_ID` | S3 Key ID | |
|
||||
| `S3_KEY_SECRET` | S3 Key Secret | |
|
||||
| `S3_PATH` | S3 Pathname to save to (must end in a trailing slash e.g. '`backup/`') | |
|
||||
| `S3_KEY_ID` | S3 Key ID (Optional) | |
|
||||
| `S3_KEY_SECRET` | S3 Key Secret (Optional) | |
|
||||
| `S3_PATH` | S3 Pathname to save to (must NOT end in a trailing slash e.g. '`backup`') | |
|
||||
| `S3_REGION` | Define region in which bucket is defined. Example: `ap-northeast-2` | |
|
||||
| `S3_HOST` | Hostname (and port) of S3-compatible service, e.g. `minio:8080`. Defaults to AWS. | |
|
||||
| `S3_PROTOCOL` | Protocol to connect to `S3_HOST`. Either `http` or `https`. Defaults to `https`. | `https` |
|
||||
@@ -203,6 +210,8 @@ If `BACKUP_LOCATION` = `S3` then the following options are used.
|
||||
| _*OR*_ | | |
|
||||
| `S3_CERT_SKIP_VERIFY` | Skip verifying self signed certificates when connecting | `TRUE` |
|
||||
|
||||
- When `S3_KEY_ID` and/or `S3_KEY_SECRET` is not set, will try to use IAM role assigned (if any) for uploading the backup files to S3 bucket.
|
||||
|
||||
#### Upload to a Azure storage account by `blobxfer`
|
||||
|
||||
Support to upload backup files with [blobxfer](https://github.com/Azure/blobxfer) to the Azure fileshare storage.
|
||||
@@ -211,7 +220,7 @@ Support to upload backup files with [blobxfer](https://github.com/Azure/blobxfer
|
||||
If `BACKUP_LOCATION` = `blobxfer` then the following options are used.
|
||||
|
||||
| Parameter | Description | Default |
|
||||
| ------------------------------- | ------------------------------------------------------------------------ | -------------------- |
|
||||
| ------------------------------ | ------------------------------------------- | ------------------- |
|
||||
| `BLOBXFER_STORAGE_ACCOUNT` | Microsoft Azure Cloud storage account name. | |
|
||||
| `BLOBXFER_STORAGE_ACCOUNT_KEY` | Microsoft Azure Cloud storage account key. | |
|
||||
| `BLOBXFER_REMOTE_PATH` | Remote Azure path | `/docker-db-backup` |
|
||||
|
||||
@@ -12,9 +12,13 @@ ENABLE_CHECKSUM=${ENABLE_CHECKSUM:-"TRUE"}
|
||||
ENABLE_PARALLEL_COMPRESSION=${ENABLE_PARALLEL_COMPRESSION:-"TRUE"}
|
||||
MANUAL_RUN_FOREVER=${MANUAL_RUN_FOREVER:-"TRUE"}
|
||||
MODE=${MODE:-"AUTO"}
|
||||
MYSQL_ENABLE_TLS=${MYSQL_ENABLE_TLS:-"FALSE"}
|
||||
MYSQL_MAX_ALLOWED_PACKET=${MYSQL_MAX_ALLOWED_PACKET:-"512M"}
|
||||
MYSQL_SINGLE_TRANSACTION=${MYSQL_SINGLE_TRANSACTION:-"TRUE"}
|
||||
MYSQL_STORED_PROCEDURES=${MYSQL_STORED_PROCEDURES:-"TRUE"}
|
||||
MYSQL_TLS_CA_FILE=${MYSQL_TLS_CA_FILE:-"/etc/ssl/cert.pem"}
|
||||
MYSQL_TLS_VERIFY=${MYSQL_TLS_VERIFY:-"FALSE"}
|
||||
MYSQL_TLS_VERSION=${MYSQL_TLS_VERSION:-"TLSv1.1,TLSv1.2,TLSv1.3"}
|
||||
PARALLEL_COMPRESSION_THREADS=${PARALLEL_COMPRESSION_THREADS:-"$(nproc)"}
|
||||
S3_CERT_SKIP_VERIFY=${S3_CERT_SKIP_VERIFY:-"TRUE"}
|
||||
S3_PROTOCOL=${S3_PROTOCOL:-"https"}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#!/command/with-contenv bash
|
||||
|
||||
bootstrap_variables() {
|
||||
sanity_var DB_TYPE "Set appropriate DB_TYPE"
|
||||
case "${DB_TYPE,,}" in
|
||||
couch* )
|
||||
dbtype=couch
|
||||
@@ -45,9 +46,28 @@ bootstrap_variables() {
|
||||
"mysql" | "mariadb" )
|
||||
dbtype=mysql
|
||||
DB_PORT=${DB_PORT:-3306}
|
||||
sanity_var DB_NAME "Database Name to backup. Multiple seperated by commas"
|
||||
[[ ( -n "${DB_PASS}" ) || ( -n "${DB_PASS_FILE}" ) ]] && file_env 'DB_PASS'
|
||||
[[ ( -n "${DB_PASS}" ) ]] && export MYSQL_PWD=${DB_PASS}
|
||||
sanity_var DB_NAME "Database Name to backup. Multiple seperated by commas"
|
||||
if var_true "${MYSQL_ENABLE_TLS}" ; then
|
||||
if [ -n "${MYSQL_TLS_CA_FILE}" ] ; then
|
||||
mysql_tls_args="--ssl_ca=${MYSQL_TLS_CA_FILE}"
|
||||
fi
|
||||
if [ -n "${MYSQL_TLS_CERT_FILE}" ] ; then
|
||||
mysql_tls_args="${mysql_tls_args} --ssl_cert=${MYSQL_TLS_CERT_FILE}"
|
||||
fi
|
||||
if [ -n "${MYSQL_TLS_KEY_FILE}" ] ; then
|
||||
mysql_tls_args="${mysql_tls_args} --ssl_key=${MYSQL_TLS_KEY_FILE}"
|
||||
fi
|
||||
|
||||
if var_true "${TLS_VERIFY}" ; then
|
||||
mysql_tls_args="${mysql_tls_args} --sslverify-server-cert"
|
||||
fi
|
||||
|
||||
if [ -n "${MYSQL_TLS_VERSION}" ] ; then
|
||||
mysql_tls_args="${mysql_tls_args} --tls_version=${MYSQL_TLS_VERSION}"
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
"mssql" | "microsoftsql" )
|
||||
apkArch="$(apk --print-arch)"; \
|
||||
@@ -74,9 +94,13 @@ bootstrap_variables() {
|
||||
sqlite* )
|
||||
dbtype=sqlite3
|
||||
;;
|
||||
* )
|
||||
print_error "I don't recognize 'DB_TYPE=${DB_TYPE}' - Exitting.."
|
||||
exit 99
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ "${BACKUP_LOCATION,,}" = "s3" ] || [ "${BACKUP_LOCATION,,}" = "minio" ] ; then
|
||||
if [ "${BACKUP_LOCATION,,}" = "s3" ] || [ "${BACKUP_LOCATION,,}" = "minio" ] && [ -n "${S3_KEY_ID}" ] && [ -n "${S3_KEY_SECRET}" ]; then
|
||||
file_env 'S3_KEY_ID'
|
||||
file_env 'S3_KEY_SECRET'
|
||||
fi
|
||||
@@ -193,7 +217,7 @@ backup_mysql() {
|
||||
|
||||
if [ "${DB_NAME,,}" = "all" ] ; then
|
||||
print_debug "Preparing to back up everything except for information_schema and _* prefixes"
|
||||
db_names=$(mysql -h ${DB_HOST} -P $DB_PORT -u$DB_USER --batch -e "SHOW DATABASES;" | grep -v Database | grep -v schema )
|
||||
db_names=$(mysql -h ${DB_HOST} -P $DB_PORT -u$DB_USER ${mysql_tls_args} ${EXTRA_OPTS} --batch -e "SHOW DATABASES;" | grep -v Database | grep -v schema )
|
||||
if [ -n "${DB_NAME_EXCLUDE}" ] ; then
|
||||
db_names_exclusions=$(echo "${DB_NAME_EXCLUDE}" | tr ',' '\n')
|
||||
for db_exclude in ${db_names_exclusions} ; do
|
||||
@@ -214,7 +238,7 @@ backup_mysql() {
|
||||
compression
|
||||
pre_dbbackup $db
|
||||
print_notice "Dumping MySQL/MariaDB database: '${db}' ${compression_string}"
|
||||
mysqldump --max-allowed-packet=${MYSQL_MAX_ALLOWED_PACKET} -h ${DB_HOST} -P ${DB_PORT} -u${DB_USER} ${single_transaction} ${stored_procedures} ${EXTRA_OPTS} --databases $db | $compress_cmd > "${TEMP_LOCATION}"/"${target}"
|
||||
mysqldump --max-allowed-packet=${MYSQL_MAX_ALLOWED_PACKET} -h ${DB_HOST} -P ${DB_PORT} -u${DB_USER} ${single_transaction} ${stored_procedures} ${mysql_tls_args} ${EXTRA_OPTS} --databases $db | $compress_cmd > "${TEMP_LOCATION}"/"${target}"
|
||||
exit_code=$?
|
||||
check_exit_code $target
|
||||
generate_checksum
|
||||
@@ -228,7 +252,7 @@ backup_mysql() {
|
||||
compression
|
||||
pre_dbbackup all
|
||||
print_notice "Dumping all MySQL / MariaDB databases: '$(echo ${db_names} | xargs | tr ' ' ',')' ${compression_string}"
|
||||
mysqldump --max-allowed-packet=${MYSQL_MAX_ALLOWED_PACKET} -h ${DB_HOST} -P ${DB_PORT} -u${DB_USER} ${single_transaction} ${stored_procedures} ${EXTRA_OPTS} --databases $(echo ${db_names} | xargs) | $compress_cmd > "${TEMP_LOCATION}"/"${target}"
|
||||
mysqldump --max-allowed-packet=${MYSQL_MAX_ALLOWED_PACKET} -h ${DB_HOST} -P ${DB_PORT} -u${DB_USER} ${single_transaction} ${stored_procedures} ${mysql_tls_args} ${EXTRA_OPTS} --databases $(echo ${db_names} | xargs) | $compress_cmd > "${TEMP_LOCATION}"/"${target}"
|
||||
exit_code=$?
|
||||
check_exit_code $target
|
||||
generate_checksum
|
||||
@@ -392,7 +416,7 @@ check_availability() {
|
||||
"mysql" )
|
||||
counter=0
|
||||
export MYSQL_PWD=${DB_PASS}
|
||||
while ! (mysqladmin -u"${DB_USER}" -P"${DB_PORT}" -h"${DB_HOST}" status > /dev/null 2>&1) ; do
|
||||
while ! (mysqladmin -u"${DB_USER}" -P"${DB_PORT}" -h"${DB_HOST}" ${mysql_tls_args} ${EXTRA_OPTS} status > /dev/null 2>&1) ; do
|
||||
sleep 5
|
||||
(( counter+=5 ))
|
||||
print_warn "MySQL/MariaDB Server '${DB_HOST}' is not accessible, retrying.. (${counter} seconds so far)"
|
||||
@@ -460,18 +484,21 @@ cleanup_old_data() {
|
||||
if [ -n "${DB_CLEANUP_TIME}" ]; then
|
||||
if [ "${master_exit_code}" != 1 ]; then
|
||||
case "${BACKUP_LOCATION,,}" in
|
||||
"blobxfer" )
|
||||
print_info "Cleaning up old backups on filesystem"
|
||||
mkdir -p "${DB_DUMP_TARGET}"
|
||||
find "${DB_DUMP_TARGET}"/ -mmin +"${DB_CLEANUP_TIME}" -iname "*" -exec rm {} \;
|
||||
print_info "Syncing changes via blobxfer"
|
||||
silent blobxfer upload --mode file --remote-path ${BLOBXFER_REMOTE_PATH} --local-path ${DB_DUMP_TARGET} --delete --delete-only
|
||||
;;
|
||||
"file" | "filesystem" )
|
||||
print_info "Cleaning up old backups on filesystem"
|
||||
mkdir -p "${DB_DUMP_TARGET}"
|
||||
find "${DB_DUMP_TARGET}"/ -mmin +"${DB_CLEANUP_TIME}" -iname "*" -exec rm {} \;
|
||||
if [ "${BACKUP_LOCATION,,}" = "blobxfer" ] ; then
|
||||
print_info "Syncing changes via blobxfer"
|
||||
silent blobxfer upload --mode file --remote-path ${BLOBXFER_REMOTE_PATH} --local-path ${DB_DUMP_TARGET} --delete --delete-only
|
||||
fi
|
||||
;;
|
||||
"s3" | "minio" )
|
||||
print_info "Cleaning up old backups on S3 storage"
|
||||
aws ${PARAM_AWS_ENDPOINT_URL} s3 ls s3://${S3_BUCKET}/${S3_PATH} ${s3_ssl} ${s3_ca_cert} ${S3_EXTRA_OPTS} | grep " DIR " -v | grep " PRE " -v | while read -r s3_file; do
|
||||
aws ${PARAM_AWS_ENDPOINT_URL} s3 ls s3://${S3_BUCKET}/${S3_PATH}/ ${s3_ssl} ${s3_ca_cert} ${S3_EXTRA_OPTS} | grep " DIR " -v | grep " PRE " -v | while read -r s3_file; do
|
||||
s3_createdate=$(echo $s3_file | awk {'print $1" "$2'})
|
||||
s3_createdate=$(date -d "$s3_createdate" "+%s")
|
||||
s3_olderthan=$(echo $(( $(date +%s)-${DB_CLEANUP_TIME}*60 )))
|
||||
@@ -479,7 +506,7 @@ cleanup_old_data() {
|
||||
s3_filename=$(echo $s3_file | awk {'print $4'})
|
||||
if [ "$s3_filename" != "" ] ; then
|
||||
print_debug "Deleting $s3_filename"
|
||||
silent aws ${PARAM_AWS_ENDPOINT_URL} s3 rm s3://${S3_BUCKET}/${S3_PATH}${s3_filename} ${s3_ssl} ${s3_ca_cert} ${S3_EXTRA_OPTS}
|
||||
aws ${PARAM_AWS_ENDPOINT_URL} s3 rm s3://${S3_BUCKET}/${S3_PATH}/${s3_filename} ${s3_ssl} ${s3_ca_cert} ${S3_EXTRA_OPTS}
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -492,6 +519,7 @@ cleanup_old_data() {
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
compression() {
|
||||
if var_false "${ENABLE_PARALLEL_COMPRESSION}" ; then
|
||||
PARALLEL_COMPRESSION_THREADS=1
|
||||
@@ -559,7 +587,7 @@ compression() {
|
||||
|
||||
create_archive() {
|
||||
if [ "${exit_code}" = "0" ] ; then
|
||||
print_notice "Creating archive file of '${target_dir}' with tar ${compresion_string}"
|
||||
print_notice "Creating archive file of '${target_dir}' with tar ${compression_string}"
|
||||
tar cf - "${TEMP_LOCATION}"/"${target_dir}" | $dir_compress_cmd > "${TEMP_LOCATION}"/"${target_dir}".tar"${extension}"
|
||||
else
|
||||
print_error "Skipping creating archive file because backup did not complete successfully"
|
||||
@@ -624,8 +652,12 @@ move_dbbackup() {
|
||||
;;
|
||||
"s3" | "minio" )
|
||||
print_debug "Moving backup to S3 Bucket"
|
||||
if [ -n "${S3_KEY_ID}" ] && [ -n "${S3_KEY_SECRET}" ]; then
|
||||
export AWS_ACCESS_KEY_ID=${S3_KEY_ID}
|
||||
export AWS_SECRET_ACCESS_KEY=${S3_KEY_SECRET}
|
||||
else
|
||||
print_debug "Variable S3_KEY_ID or S3_KEY_SECRET is not set. Please ensure sufficiant IAM role is assigned."
|
||||
fi
|
||||
export AWS_DEFAULT_REGION=${S3_REGION}
|
||||
if [ -f "${S3_CERT_CA_FILE}" ] ; then
|
||||
print_debug "Using Custom CA for S3 Backups"
|
||||
@@ -781,7 +813,7 @@ sanity_test() {
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ "${BACKUP_LOCATION,,}" = "s3" ] || [ "${BACKUP_LOCATION,,}" = "minio" ] ; then
|
||||
if [ "${BACKUP_LOCATION,,}" = "s3" ] || [ "${BACKUP_LOCATION,,}" = "minio" ] && [ -n "${S3_KEY_ID}" ] && [ -n "${S3_KEY_SECRET}" ]; then
|
||||
sanity_var S3_BUCKET "S3 Bucket"
|
||||
sanity_var S3_PATH "S3 Path"
|
||||
sanity_var S3_REGION "S3 Region"
|
||||
@@ -799,6 +831,7 @@ setup_mode() {
|
||||
if var_true "${MANUAL_RUN_FOREVER}" ; then
|
||||
mkdir -p /etc/services.d/99-run_forever
|
||||
cat <<EOF > /etc/services.d/99-run_forever/run
|
||||
|
||||
#!/bin/bash
|
||||
while true
|
||||
do
|
||||
|
||||
Reference in New Issue
Block a user