Compare commits
No commits in common. "main" and "v4" have entirely different histories.
2 changed files with 5 additions and 18 deletions
|
|
@ -7,7 +7,6 @@ set -e
|
||||||
# CONTAINER - name of the container where the database is running
|
# CONTAINER - name of the container where the database is running
|
||||||
# NOTIFY_URL - optional, URL to send notification to
|
# NOTIFY_URL - optional, URL to send notification to
|
||||||
# TARGET_DIR - directory where to store the backup
|
# TARGET_DIR - directory where to store the backup
|
||||||
# HISTORY - number of backups to keep (default: 3)
|
|
||||||
|
|
||||||
if [ -z "$CONTAINER" ]; then
|
if [ -z "$CONTAINER" ]; then
|
||||||
echo "CONTAINER environment variable is not set."
|
echo "CONTAINER environment variable is not set."
|
||||||
|
|
@ -19,10 +18,6 @@ if [ -z "$TARGET_DIR" ]; then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -z "$HISTORY" ]; then
|
|
||||||
HISTORY=3
|
|
||||||
fi
|
|
||||||
|
|
||||||
docker info > /dev/null 2>&1
|
docker info > /dev/null 2>&1
|
||||||
if [ ! $? -eq 0 ]; then
|
if [ ! $? -eq 0 ]; then
|
||||||
echo "Docker is not available."
|
echo "Docker is not available."
|
||||||
|
|
@ -38,7 +33,7 @@ fi
|
||||||
echo "Starting backup for container: $CONTAINER"
|
echo "Starting backup for container: $CONTAINER"
|
||||||
if [ `docker exec -i $CONTAINER test -e /usr/bin/mariadb-dump && echo "yes" || echo "no"` = "yes" ]; then
|
if [ `docker exec -i $CONTAINER test -e /usr/bin/mariadb-dump && echo "yes" || echo "no"` = "yes" ]; then
|
||||||
DBTYPE="mariadb"
|
DBTYPE="mariadb"
|
||||||
FILENAME=`date +"%Y%m%d_%H%M%S"`_$DBTYPE_$CONTAINER.sql.zst
|
FILENAME=`date +"%Y%m%d_%H%M%S"`_$DBTYPE_$CONTAINER_$DB_NAME.sql.zst
|
||||||
docker exec -i $CONTAINER mariadb-dump \
|
docker exec -i $CONTAINER mariadb-dump \
|
||||||
--all-databases \
|
--all-databases \
|
||||||
--user=root \
|
--user=root \
|
||||||
|
|
@ -55,8 +50,8 @@ if [ `docker exec -i $CONTAINER test -e /usr/bin/mariadb-dump && echo "yes" || e
|
||||||
mv $TARGET_DIR/$FILENAME.tmp $TARGET_DIR/$FILENAME
|
mv $TARGET_DIR/$FILENAME.tmp $TARGET_DIR/$FILENAME
|
||||||
elif [ `docker exec -i $CONTAINER test -e /usr/bin/pg_dump && echo "yes" || echo "no"` = "yes" ]; then
|
elif [ `docker exec -i $CONTAINER test -e /usr/bin/pg_dump && echo "yes" || echo "no"` = "yes" ]; then
|
||||||
DBTYPE="pgsql"
|
DBTYPE="pgsql"
|
||||||
FILENAME=`date +"%Y%m%d_%H%M%S"`_$DBTYPE_$CONTAINER.sql.zst
|
FILENAME=`date +"%Y%m%d_%H%M%S"`_$DBTYPE_$CONTAINER_$DB_NAME.sql.zst
|
||||||
docker exec -i $CONTAINER pg_dumpall --username=$DB_USER --password=$PGPASSWORD | zstd -1 > $TARGET_DIR/$FILENAME.tmp
|
docker exec -i $CONTAINER pg_dump --username=$DB_USER --password=$PGPASSWORD $DB_NAME | zstd -1 > $TARGET_DIR/$FILENAME.tmp
|
||||||
mv $TARGET_DIR/$FILENAME.tmp $TARGET_DIR/$FILENAME
|
mv $TARGET_DIR/$FILENAME.tmp $TARGET_DIR/$FILENAME
|
||||||
else
|
else
|
||||||
echo "Unsupported database type or database client not found in the container."
|
echo "Unsupported database type or database client not found in the container."
|
||||||
|
|
@ -65,14 +60,6 @@ fi
|
||||||
|
|
||||||
echo "Backup completed successfully."
|
echo "Backup completed successfully."
|
||||||
|
|
||||||
# Remove old backups
|
|
||||||
echo "Removing old backups, keeping last $HISTORY backups..."
|
|
||||||
cd $TARGET_DIR
|
|
||||||
ls -1t *_$DBTYPE_$CONTAINER.sql.zst | tail -n +$((HISTORY + 1)) | xargs -r rm --
|
|
||||||
cd -
|
|
||||||
echo "Old backups removed."
|
|
||||||
|
|
||||||
|
|
||||||
if [ -n "$NOTIFY_URL" ]; then
|
if [ -n "$NOTIFY_URL" ]; then
|
||||||
curl $NOTIFY_URL
|
curl $NOTIFY_URL
|
||||||
fi
|
fi
|
||||||
|
|
|
||||||
|
|
@ -45,10 +45,10 @@ if [ `docker exec -i $CONTAINER test -e /usr/bin/mariadb-dump && echo "yes" || e
|
||||||
--events \
|
--events \
|
||||||
--routines \
|
--routines \
|
||||||
--single-transaction \
|
--single-transaction \
|
||||||
--triggers | restic backup --stdin --stdin-filename=$DBTYPE_$CONTAINER.sql
|
--triggers | restic backup --stdin --stdin-filename=$DBTYPE_$CONTAINER_$DB_NAME.sql
|
||||||
elif [ `docker exec -i $CONTAINER test -e /usr/bin/pg_dump && echo "yes" || echo "no"` = "yes" ]; then
|
elif [ `docker exec -i $CONTAINER test -e /usr/bin/pg_dump && echo "yes" || echo "no"` = "yes" ]; then
|
||||||
DBTYPE="pgsql"
|
DBTYPE="pgsql"
|
||||||
docker exec -i $CONTAINER pg_dumpall --username=$DB_USER --password=$PGPASSWORD | restic backup --stdin --stdin-filename=$DBTYPE_$CONTAINER.sql
|
docker exec -i $CONTAINER pg_dump --username=$DB_USER --password=$PGPASSWORD $DB_NAME | restic backup --stdin --stdin-filename=$DBTYPE_$CONTAINER_$DB_NAME.sql
|
||||||
else
|
else
|
||||||
echo "Unsupported database type or database client not found in the container."
|
echo "Unsupported database type or database client not found in the container."
|
||||||
exit 1
|
exit 1
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue