import borgthismachine and mysqlBackup
This commit is contained in:
parent
89a293efe0
commit
de9207112b
2 changed files with 126 additions and 0 deletions
86
borgthismachine.sh
Executable file
86
borgthismachine.sh
Executable 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
40
mysqlBackup.sh
Executable 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
|
||||
|
Loading…
Add table
Reference in a new issue