Давно использую вот такой bash скрипт.
Для бэкапа файлов можно раскомментировать соответствующую строчку.
Также пути к некоторым командам типа find могут отличаться в разных системах.
#!/bin/bash
MyUSER="user" # USERNAME
MyPASS="password" # PASSWORD
MyHOST="127.0.0.1" # Hostname
DBName="dbname" # Dbname
DEST="/..../backups"
# заносим в переменную DATE текущую дату
DATE=`/bin/date '+%Y.%m.%d'`
FILE="$DEST/$DBName"_"$DATE.sql.gz"
# оптимизация
mysqlcheck -u $MyUSER -p$MyPASS --auto-repair --check --optimize --all-databases >/dev/null 2>&1
# сохраняем дамп mysql
mysqldump -u $MyUSER -h $MyHOST -p$MyPASS $DBName | gzip -9 > $FILE
# архивируем все каталоги, кроме тех, в которых находится файл .noarchive
# /bin/tar -zcf PATH-TO-DIR-BACKUP/$DATE.backup.tar.gz --exclude-tag=.noarchive ./
# удаляем архивы, которым уже больше семи дней
/usr/bin/find $DEST -type f -name *.gz -atime +7 -exec rm -f \{\} \; >/dev/null 2>&1
Для бэкапа файлов можно раскомментировать соответствующую строчку.
Также пути к некоторым командам типа find могут отличаться в разных системах.