Backup

MySQL

Debian / Ubuntu Linux – /var/spool/cron/crontabs/

Install the package php5-cli as this may not be installed by default.

/root/.my.cnf

[client]
user=username
pass=****
mkdir /root/backup/mysql/

/root/cron/backup-mysql.sh

#!/bin/sh

datum=`/bin/date +%Y%m%d-%H%M`

mysqldump db1 > /root/backup/mysql/db1-${datum}.sql
mysqldump db2 > /root/backup/mysql/db2-${datum}.sql

find /root/backup/mysql/ -type f -mtime +10 -exec rm {} \;

Bash script to backup all your MySQL databases

#!/bin/bash
 
OUTPUT="/root/backup/mysql/"

rm "$OUTPUT/*gz" > /dev/null 2>&1

databases=`mysql -e "SHOW DATABASES;" | tr -d "| " | grep -v Database`


for db in $databases; do
	if [[ "$db" != "information_schema" ]] && [[ "$db" != "performance_schema" ]] && [[ "$db" != "mysql" ]] && [[ "$db" != _* ]] ; then
		echo "Dumping database: $db"
		mysqldump --force --opt --databases $db > $OUTPUT/`date +%Y%m%d`-$db.sql
		gzip $OUTPUT/`date +%Y%m%d`-$db.sql
	fi
done

find /root/backup/mysql/ -type f -mtime +0 -exec rm {} \;
chmod 755 /root/cron/backup-mysql.sh
crontab -e
0 3 * * * /root/cron/backup-mysql.sh
0 4 * * * /usr/bin/php /var/www/.../*.php

Files

mkdir /root/backup/www/

/root/cron/backup-www.sh

#!/bin/bash
# Path to backup directories: 1 row = 1 directory
LIST_FILE="/root/cron/list_file"
 
# Store todays date
NOW=$(date +"%F")
 
# Store backup path
BACKUP="/root/backup/www"
 
# Backup file name hostname.time.tar.gz
BFILE="$NOW-$(date +'%T').tar.gz"
 
# Paths for binary files
TAR="/bin/tar"
 
# Backup websever dirs
$TAR --exclude={*.wav,.git} -zcvf ${BACKUP}/${BFILE} -T "${LIST_FILE}"

find /root/backup/www/ -type f -mtime +2 -exec rm {} \;

list_file

/var/www/dir (no slash)
/var/www/dir (no slash)
chmod 755 /root/cron/backup-www.sh
crontab -e
0 4 * * * /root/cron/backup-www.sh

Apache restart

crontab -e
0 5 * * * /etc/init.d/mysql restart
0 6 * * * service apache2 restart