в mysql транзакции не работают.
oXiOn,
Не надо хранить логин-пароль в скрипте, это вредно для здоровья.
Тем более логин-пароль рутового пользователя.
Для бэкапа вполне достаточно враппера
#!/bin/sh
/usr/bin/mysqldump --defaults-extra-file=/etc/mysql/debian.cnf "$@"
Логирование - man logger
P.S.
А сайт в обслуживание переводить - чтобы в процессе бэкапа не изменялось состояние копируемого объекта.
Иначе бэкап получается неполный -> к использованию непригодный.
Если остановка сайта не вариант, и нет возможности перевести сайт в режим "только для чтения", тогда
1. СНАЧАЛА делаем копию БД,
2. ПОТОМ копируем контент.
Лучше даже разделить контент на программы и пользовательский аплоад.
Бэкап всё равно МОЖЕТ быть неполным, но он, по крайней мере, будет рабочим, ибо база снимается в одной транзакции.
И в абсолютно любом случае, совершенно необходимо хранить несколько резервных копий за разные даты.
Пользователь может удалить файлы, а через два дня прийти к тебе и требовать их восстановить.