#!/bin/bash ## Backup Script Nick Leffler 20190326 ## servername=$(hostname --fqdn) date22=$(date +'%Y%m%d_%H%M') bdir="/opt/backup" dir="${bdir}/${date22}" sqlDir="${dir}/mysql" sshLoc="location_to_rsync_to" mkdir -p "${dir}" || exit sqlBackup () { mkdir -p "${sqlDir}" || exit databases=`mysql -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema)"` for db in $databases; do mysqldump --force --opt --databases $db > "${sqlDir}/$db.sql" done mysqldump --all-databases > "${sqlDir}/fullDump.sql" tar -Jcf "${dir}/${date22}-mysql.tar.xz" "${sqlDir}" > /dev/null 2>&1 sleep 4 rm -rf "${sqlDir}" } # SQL Backup sqlBackup # etc backup tar -Jcf "${dir}/${date22}-etc.tar.xz" "/etc/" > /dev/null 2>&1 # root dir backup tar -Jcf "${dir}/${date22}-root.tar.xz" "/root/" > /dev/null 2>&1 # WWW data backup tar --exclude='old' -Jcf "${dir}/${date22}-www.tar.xz" "/usr/share/nginx/html/" > /dev/null 2>&1 # Copy to backup server rsync -vP -a "${bdir}"/ "${sshLoc}:backup/rsync/${servername}/" # delete backup after moving rm -rfv "${bdir}/"* # delete older than 2 days since there's already snapshots ssh "${sshLoc}" "find backup/rsync/$servername/ -type f -atime +2 -delete; find backup/rsync/$servername/ -type d -empty -delete"