Backup на хостинге Masterhost

Хостинг Мастерхост достаточно хорош, вот только есть некоторые проблемы с бэкапом своих данных. Поскольку на данном хостинге есть доступ по ssh, я решил написать свой скрипт backup-а. Так как сайтов может быть несколько, желательно разбить бэкап по доменным именам и по базам.

А вот и сам скрипт:

  1. #!/bin/sh
  2. #!/bin/sh
  3. clear
  4. USER=u123456 # имя площадки
  5. DB_USER=u123456 # имя пользователя базы данных
  6. DB_PASSW=password # пароль пользователя базы данных
  7. WHAT_BACKUP=/home/$USER # каталог в котором все бэкапить
  8. WHERE_SAVE_BACKUP=$WHAT_BACKUP/backup # каталог куда бэкапить
  9.  
  10. rm -r $WHERE_SAVE_BACKUP
  11. cd $WHAT_BACKUP
  12. FILES="$(ls -F | grep / | sed 's/\///g')" # в выбранном каталоге берем только директории
  13. mkdir $WHERE_SAVE_BACKUP
  14. mkdir $WHERE_SAVE_BACKUP/db
  15. mkdir $WHERE_SAVE_BACKUP/files
  16.  
  17. echo Start DATABASES backup...
  18. DATABASES="$(mysql -u $DB_USER -h $USER.mysql.masterhost.ru -p$DB_PASSW -Bse 'show databases')"
  19. for db in $DATABASES
  20. do
  21. echo Backup $db; mysqldump -h $USER.mysql.masterhost.ru -u $DB_USER -p$DB_PASSW --database $db | gzip > $WHERE_SAVE_BACKUP/db/$db.sql.gz;
  22. done
  23.  
  24. echo Start FILES backup...
  25. for fl in $FILES
  26. do
  27. echo Backup $fl;
  28. tar -cpzf $WHERE_SAVE_BACKUP/files/$fl.tgz $WHAT_BACKUP/$fl;
  29. done
  30. echo ALL DONE!

Скрипт записать как backup.sh (в кодировке сервера) и исправить в нем имена и пароли на свои. Затем выполнить chmod 755 backup.sh, чтобы скрипт стал запускаемым и запустить ./backup.sh. Внимание: при запуске скрипт полностью удаляет каталог бэкапа. Затем создает заново каталог backup и в нем 2 подкаталога:

  • db — архивы баз данных
  • files — архивы с содержимым каталогов доменов

Если все работает правильно, можно повесить бэкап на cron, выполнив команду:
crontab -e

И там в редакторе добавить строчку:
0 4 * * * /home/имя_площадки/backup.sh
Что означает запускать скрипт каждый день в 4:00.