Для своих нужд держу на кроне скрипт для резервного копирования. Очень простой и примитивный, но для небольших сайтов на виртуальном сервере сойдет.
Приведу весь скрипт, он не очень большой:
#!/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 дней, то контроль на стороне фтп вам понадобится сделать самостоятельно.
Делайте бэкапы, они не раз выручат вас в сложной ситуации 🙂