Skip to content

Instantly share code, notes, and snippets.

@orrisroot
Last active November 13, 2023 00:49
Show Gist options
  • Save orrisroot/4c4979b3bcb2122df24f01978494b778 to your computer and use it in GitHub Desktop.
Save orrisroot/4c4979b3bcb2122df24f01978494b778 to your computer and use it in GitHub Desktop.
cron daily backup script
#!/bin/bash
export LANG=C
BACKUPDIR=/backup/daily
DATE=`date`
if test ! -d $BACKUPDIR; then
mkdir -p $BACKUPDIR
chmod 700 $BACKUPDIR
fi
echo $DATE > $BACKUPDIR/timestamp.txt
# mariadb data
MARIADB_CONF=/data/admin/etc/my.cnf
if test ! -d $BACKUPDIR/mariadb; then
mkdir -p $BACKUPDIR/mariadb
fi
if [ -f "${MARIADB_CONF}" ]; then
MARIADB_OPTS="--defaults-extra-file=${MARIADB_CONF}"
fi
MARIADB_DATABASES=$(\
mysql ${MARIADB_OPTS} -s -e 'SHOW DATABASES' | \
sed -e '/^Database$/d' \
-e '/^mysql$/d' \
-e '/^information_schema$/d' \
-e '/^performance_schema$/d' \
-e '/^sys$/d' \
)
if test ! -z "${MARIADB_DATABASES}"; then
for database in ${MARIADB_DATABASES}; do
mysqldump ${MARIADB_OPTS} -Q --opt --skip-extended-insert ${database} | gzip > $BACKUPDIR/mariadb/${database}.sql.gz
done
fi
# web data
rsync -aq --delete /data/www $BACKUPDIR/
# root
rsync -aq --delete /root $BACKUPDIR/
# home
rsync -aq --delete /home $BACKUPDIR/
# etc
rsync -aq --delete /etc $BACKUPDIR/
# logs
rsync -aq --delete /var/log $BACKUPDIR/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment