Для своих нужд держу на кроне скрипт для резервного копирования. Очень простой и примитивный, но для небольших сайтов на виртуальном сервере сойдет.
Приведу весь скрипт, он не очень большой:
#!/bin/bash
# Установим от куда и куда будем копировать данные
BACKUP=/var/www/backups
SITE=/var/www/mysite.ru
# Установим дату бэкапа и создадим соответствующую папку
daten=`date +%Y.%m.%d-%H`
mkdir $BACKUP/$daten
# Делаем дамп базы данных
mysqldump -u USER -pPASSWORD DATABASE | gzip > `date +$BACKUP/$daten/database.sql.gz`
# Перейдем в папку с сайтом, чтобы не прихватить лишнего в структуре
cd $SITE
# Создадим архив файлов
tar -zcvf $BACKUP/$daten/files.tar.gz . > /dev/null 2>&1
# Отправляем архивы по фтп, если это конечно требуется,
# но хранить бэкапы лучше удаленно
FTP="$(which ftp)"
### FTP ###
FTPD="/"
FTPU="ftpuser"
FTPP="ftppassword"
FTPS="ftphost"
### ftp ###
cd $BACKUP/$daten
DUMPFILE1=files.tar.gz
DUMPFILE2=database.sql.gz
$FTP -n $FTPS <<END_SCRIPT
quote USER $FTPU
quote PASS $FTPP
mkdir $daten
cd $daten
put $DUMPFILE1
put $DUMPFILE2
quit
END_SCRIPT
# Переходим в папку с бэкапами
cd $BACKUP
# и удаляем старые бэкапы
find ./ -type d -mtime +30 -exec rm -r '{}' \; 2> /dev/null
Теперь кладем скрипт в исполняемую папку, например /bin и ставим права на выполнение и в cron ставим задачу что то типо:
0 3 */2 * * /bin/наш_скрипт.sh > /dev/null 2>&1
И на выходе получаем backup каждые 2 дня в 3 часа ночи с отправкой по фтп. Если на виртуальном хосте и будут удаляться архивы старше 30 дней, то контроль на стороне фтп вам понадобится сделать самостоятельно.
Делайте бэкапы, они не раз выручат вас в сложной ситуации 🙂