You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
1.3 KiB
Bash
42 lines
1.3 KiB
Bash
#!/bin/bash
|
|
|
|
# TODO: Use a password file instead of passing password to script
|
|
|
|
# Flags, for running on different devices # Cronjob needs to be on one line
|
|
# e.g. 0 0 * * * /home/nathan/scripts/backup/backup_git.sh -d /srv/git -b /srv/dev-disk-by-uuid-d9f9e8fd-c473-450e-919e-c43200a6ac4a/gitBackup/ -r nathan@alphavps.aney.co.uk -R ~/backups/git/lilman/
|
|
|
|
while getopts s:d:b:r:R: flag
|
|
do
|
|
case "${flag}" in
|
|
d) DATA=${OPTARG};;
|
|
b) BACKUPDIR=${OPTARG};;
|
|
r) REMOTE=${OPTARG};;
|
|
R) REMOTEBACKUP=${OPTARG};;
|
|
esac
|
|
done
|
|
|
|
SERVER=rn1
|
|
BACKUPDIR=/home/nathan/backups/$SERVER
|
|
DATE=$(date +%Y%m%d)
|
|
PASSWORD=password
|
|
DBS="$(mysql -u admin -p$(echo $PASSWORD) -Bse 'show databases' | egrep -v '^Database$|hold$' | grep -v 'performance_schema\|information_schema\|mysql')"
|
|
REMOTE=alphavps
|
|
REMOTEBACKUP=~/backups/sql/$SERVER
|
|
|
|
for DB in ${DBS[@]};
|
|
do
|
|
mkdir -p $BACKUPDIR/$DB
|
|
# Take the backup
|
|
mysqldump -u admin -p$(echo $PASSWORD) $DB > $BACKUPDIR/$DB/${DB}_${DATE}
|
|
# tarball the backup
|
|
# Change the directory, to prevent backup to all path
|
|
cd $BACKUPDIR
|
|
tar -zcf $DB/${DB}_${DATE}.gz $DB/${DB}_${DATE}
|
|
# remove untarballed
|
|
rm $BACKUPDIR/$DB/${DB}_${DATE}
|
|
|
|
ssh $REMOTE mkdir -p $REMOTEBACKUP/$DB
|
|
scp $BACKUPDIR/$DB/${DB}_${DATE}.gz $REMOTE:$REMOTEBACKUP/$DB
|
|
done
|
|
|