Skip to content

Instantly share code, notes, and snippets.

@mobeigi
Created July 3, 2020 17:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mobeigi/20108e9db683040913e18b995e6ab2c2 to your computer and use it in GitHub Desktop.
Save mobeigi/20108e9db683040913e18b995e6ab2c2 to your computer and use it in GitHub Desktop.
Linux Server Backup Script for Files + MySQL Databases
#!/usr/bin/env bash
# Server Backup Script
# Backs up:
# MySQL databases
# Important files on file system
# Variables
TIMESTAMP=$(date +"%d-%m-%Y_%H-%M-%S")
BACKUP_DIR="/root/backups/full"
FILE_BACKUP_FILE_NAME="backups-file-backup-$TIMESTAMP"
MYSQL_BACKUP_FILE_NAME="backups-mysql-backup-$TIMESTAMP"
MYSQL_USER="root"
MYSQL=/usr/bin/mysql
MYSQL_PASSWORD="example_pass"
MYSQLDUMP=/usr/bin/mysqldump
cd $BACKUP_DIR
# Backup MySQL databases
echo "Backing up MYSQL databases..."
databases=`$MYSQL --user=$MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema)"`
for db in $databases; do
$MYSQLDUMP --force --opt --user=$MYSQL_USER -p$MYSQL_PASSWORD --databases $db > "$db.sql"
done
tar --remove-files -czvf "$MYSQL_BACKUP_FILE_NAME.tar.gz" *.sql
# Backup files
echo "Backing up files..."
tar --exclude=$BACKUP_DIR -zcvf "$FILE_BACKUP_FILE_NAME.tar.gz" \
"/etc" \
"/home" \
"/usr/local/etc" \
"/usr/local/src" \
"/opt" \
"/srv" \
"/root" \
"/var/spool/mail" \
"/var/www" \
"/var/log"
echo "Backup complete."
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment