Initial import.
This commit is contained in:
commit
8a74f4162f
6 changed files with 75 additions and 0 deletions
1
.gitattributes
vendored
Normal file
1
.gitattributes
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
* text=auto
|
7
.gitignore
vendored
Normal file
7
.gitignore
vendored
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
[Tt]humbs.db
|
||||||
|
[Dd]esktop.ini
|
||||||
|
.DS_Store
|
||||||
|
.vscode/
|
||||||
|
.vs/
|
||||||
|
.idea/
|
||||||
|
/config.sh
|
12
LICENCE
Normal file
12
LICENCE
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
Copyright (c) 2023, flashwave <me@flash.moe>
|
||||||
|
|
||||||
|
Permission to use, copy, modify, and/or distribute this software for any
|
||||||
|
purpose with or without fee is hereby granted.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||||||
|
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||||
|
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||||
|
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||||
|
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||||
|
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||||
|
PERFORMANCE OF THIS SOFTWARE.
|
5
README.md
Normal file
5
README.md
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
# Backup Tools
|
||||||
|
|
||||||
|
This repository is the replacement for the old C# Backup Manager program.
|
||||||
|
|
||||||
|
After reducing the amount of things the backup program was doing, I realised it made much more sense to just use Bash scripts to achieve the same thing, so here we are.
|
9
config.sh.example
Executable file
9
config.sh.example
Executable file
|
@ -0,0 +1,9 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Credentials for a MariaDB user with the following grant:
|
||||||
|
# GRANT SELECT, LOCK TABLES, SHOW VIEW, SHOW DATABASES, EVENT, TRIGGER, EXECUTE ON *.* TO 'user'@'localhost';
|
||||||
|
mariadb_user="username"
|
||||||
|
mariadb_pass="password"
|
||||||
|
|
||||||
|
# Path to where to storage the finished archives. Obviously you should move these to a more permanent location afterwards.
|
||||||
|
db_backups_depot="/path/to/backup/storage"
|
41
db-backup.sh
Executable file
41
db-backup.sh
Executable file
|
@ -0,0 +1,41 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
filename="$(hostname) $(date +'%Y-%m-%d %H%M%S')"
|
||||||
|
skip_dbs=("mysql" "information_schema" "performance_schema" "sys")
|
||||||
|
tmpdir="/tmp/fw-db-backup"
|
||||||
|
workdir="$tmpdir/$filename"
|
||||||
|
mariadb_user=""
|
||||||
|
mariadb_pass=""
|
||||||
|
db_backups_depot="."
|
||||||
|
|
||||||
|
if [ ! -e config.sh ]; then
|
||||||
|
echo "config.sh not found, copy config.sh.example if you haven't yet"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
source ./config.sh
|
||||||
|
|
||||||
|
echo "Resetting temp directory..."
|
||||||
|
rm -rf "$tmpdir"
|
||||||
|
mkdir -p "$workdir"
|
||||||
|
|
||||||
|
dbs=$(mysql -u "$mariadb_user" -p"$mariadb_pass" --skip-column-names -e "SHOW DATABASES")
|
||||||
|
|
||||||
|
for db in $dbs; do
|
||||||
|
if [[ " ${skip_dbs[@]} " =~ " $db " ]]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Dumping $db.sql..."
|
||||||
|
mysqldump --default-character-set=utf8mb4 --single-transaction \
|
||||||
|
--tz-utc --triggers --routines --hex-blob --add-locks \
|
||||||
|
--order-by-primary --skip-lock-tables -QqB \
|
||||||
|
-u "$mariadb_user" -p"$mariadb_pass" \
|
||||||
|
--result-file="$workdir/$db.sql" $db
|
||||||
|
done;
|
||||||
|
|
||||||
|
echo "Creating package..."
|
||||||
|
tar -cjvf "$db_backups_depot/$filename.tar.bz2" -C "$tmpdir/" "$filename"
|
||||||
|
|
||||||
|
echo "Cleaning up..."
|
||||||
|
rm -r "$tmpdir"
|
Loading…
Reference in a new issue