Бэкап сайта (да и любых других папок на linux-сервере), равно как и баз данных (в частности, mysql) можно делать с помощью набора простых команд, помещенных в скрипт. Вводные данные: сайт в системе (пример на ubuntu) располагается по адресу /var/www/mysite.ru, база данных вертится на этом же сервере (dbname — mysitedb, dbuser — mysitedbuser, dbpass — Passw0rd). Бэкапить будем каждую ночь по записи в cron`е, архивы будем класть в папку /home/user/backup
Сначала создаем файл скрипта (кладем его в любое удобное место, например в /home/user/scripts) и делаем его исполняемым.
$ touch /home/user/scripts/backup.sh
$ chmod +x /home/user/scripts/backup.sh
Открываем созданный файл на редактирование и пишем скрипт (не забываем заменить пути и учетные данные на свои).
#!/bin/bash
tar -czf /home/user/backup/mysiteru.tar.gz /var/www/mysite.ru
mysqldump --opt -umysitedbuser -pPassw0rd -B mysitedb > /home/user/backup/mysitedb.sql
Теперь добавляем задание в cron.
$ crontab -e
Будем бэкапить сайт и базу данных mysql каждую ночь в 2 часа. Дописываем последней строкой:
00 2 * * * sh /home/user/scripts/backup.sh
Сохраняем, перезапускаем службу cron и проверяем, что запись добавлена в расписание.
$ service cron restart
$ crontab -l
В этой конфигурации бэкап будет каждую ночь затирать предыдущий. Если нужно хранить бэкапы за несколько дней (например, 10) и потом удалять те, что старше, то листинг файла backup.sh будет таким:
#!/bin/bash
tar -czf /home/user/backup/mysiteru_`date +%Y-%m-%d`.tar.gz /var/www/mysite.ru
mysqldump --opt -umysitedbuser -pPassw0rd -B mysitedb > /home/user/backup/mysitedb_`date +%Y-%m-%d`.sql
find /home/user/backup/ -type f -mtime +10 -exec rm '{}' \;
Теперь в название каждого архива будет добавлена дата создания, а после создания копий папки сайта и БД команда find найдет и удалит все копии, которые старше 10 дней.
Gute Arbeit. Danke.