import borgthismachine and mysqlBackup

This commit is contained in:
Tobias Klaus 2018-02-12 15:31:36 +01:00
parent 89a293efe0
commit de9207112b
No known key found for this signature in database
GPG key ID: E490E43F6C363F6C
2 changed files with 126 additions and 0 deletions

86
borgthismachine.sh Executable file
View file

@ -0,0 +1,86 @@
#!/usr/bin/env bash
if [[ "$HOME" == "/" ]] ; then
HOME="/root/"
fi
HOME=${HOME:-"/root/"}
PERSONALCONFIG="$HOME/.config/borg.conf"
BORGHOST=""
USER=""
REPO=""
MAC=""
BORG_PASSPHRASE=""
BORG_EXCLUDE_FILE=""
BORG_EXCLUDE_PATTERN=("/var/cache/*"
"/var/tmp/*"
)
BORG_BACKUP_DIRS=(
"/etc"
"/var"
"/home"
"/usr/local"
)
APPENDONLY="YES" #unset if not used
BORG_PRUNEARG=("--keep-daily=7" "--keep-weekly=4" "--keep-monthly=12")
MYREPO=${USER}@${BORGHOST}:${REPO}
BORG_ARGS=""
if [[ -e "$PERSONALCONFIG" ]] ; then
ls -l "$PERSONALCONFIG"
#shellcheck disable=SC1090
source "$PERSONALCONFIG"
else
echo "$PERSONALCONFIG not found"
fi
MYREPO="${USER}@${BORGHOST}:${REPO}"
export BORG_PASSPHRASE
export HOME
echo using repo: $MYREPO
SNAPSHOT="$(date +%a-%Y-%m-%d)"
echo #### borg backup ####
if [[ -n "${MAC}" ]] ; then
if ! ping -c 1 $BORGHOST &> /dev/null ; then
wakeonlan $MAC
#wakup may take some time
sleep 10
else
echo $BORGHOST is up
fi
fi
#wordsplitting is needed for arguments
#shellcheck disable=SC2046
nice ionice -c 3 borg create --stats \
--exclude-caches \
--one-file-system \
${BORG_ARGS} \
$([[ -n "${BORG_EXCLUDE_PATTERN[*]}" ]] && printf " --exclude \"%s\" " "${BORG_EXCLUDE_PATTERN[@]}" ) \
$([[ -n "$BORG_EXCLUDE_FILE" ]] && printf " --exclude-from \"%s\" " "${BORG_EXCLUDE_FILE}" ) \
"${MYREPO}::${SNAPSHOT}" \
"${BORG_BACKUP_DIRS[@]}"
echo RetVal = $?
if [[ "${APPENDONLY}" != "YES" ]] ; then
time borg prune -v "$MYREPO" "${BORG_PRUNEARG[@]}"
echo RetVal = $?
time borg list -v $MYREPO
echo RetVal = $?
else
echo "#############"
echo "You should purge the repository from time to time"
fi
echo ##### borg end ######

40
mysqlBackup.sh Executable file
View file

@ -0,0 +1,40 @@
MYSQLDIR="/var/lib/backups/mysql"
MYSQLOPTIONFILE="/root/.my.cnf"
DAYS="30"
set -e
umask 0077
if ! pgrep mysqld > /dev/null ; then
echo "no mysqld running!"
exit 0
fi
mkdir -p "$MYSQLDIR"
for db in $(mysql "--defaults-file=$MYSQLOPTIONFILE" -u backupuser -s -N -e 'SHOW DATABASES;'); do
#echo -e "==> Backing up database $db"
BACKEDUP="$BACKEDUP $db"
file=$MYSQLDIR/mysqldump-$db-$(date +%F_%H-%M).sql
mysqldump "--defaults-file=$MYSQLOPTIONFILE" -u backupuser --opt --single-transaction --databases "$db" | bzip2 > "$file.bz2"
done
count=0
#echo -e "\n==> Searching $MYSQLDIR for backups older than $DAYS days..."
for file in $(find "$MYSQLDIR" -type f -mtime "+$DAYS"); do
#echo "rm $file"
DELETED="$DELETED $(basename "$file")"
rm "$file"
count=$(($count+1))
done
if [[ -n "$BACKEDUP" ]] ; then
echo "Backed up databases: $BACKEDUP"
else
echo "no database backed up"
fi
if [[ -n "$DELETED" ]] ; then
echo "<== End: $count backups removed: ${DELETED}"
else
echo "No old backups removed!"
fi