Резервное Копирование Файлов И Баз Данных

Возможности скрипта: — резервное копирование каталогов и баз данных — загрузка архивов в локальную папку или на FTP — уведомление по электронной почте об успешном/неудачном завершении



Каталоги резервного копирования
Создать резервный каталог легко.

Достаточно просто указать let (путь) к папке, которую мы хотим заархивировать и дать резервной копии имя (имя).

По желанию можно указать папки и файлы, которые мы хотим исключить (исключить).

Может быть несколько каталогов, для которых необходимо создать резервную копию.



Резервная БД
Не менее легко создать резервную копию базы данных.

Для этого достаточно указать имя базы данных (db_name).

При желании вы можете исключить некоторые таблицы (например, тестовые) или импортировать только структуру таблицы (например, таблицу журнала).

Как и для каталогов, баз данных может быть несколько.



Загрузка резервной копии
Созданную резервную копию можно сохранить как в локальную папку, так и загрузить по FTP. Здесь же вы можете указать количество копий, которые хотите сохранить, то есть после загрузки нового архива старые будут удалены.



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

При успешном завершении (on_success) будет взят указанный вами шаблон письма (шаблон), в него будет парситься вся статистика и отправлена на указанный вами адрес электронной почты.

Также можно настроить отправку письма при возникновении каких-либо ошибок (on_failed)

Применение
Пример конфигурации:
  
  
   

array( // common options 'common' => array( 'tar_cmd' => '/bin/tar', 'gzip_cmd' => '/bin/gzip', 'backup_filename_prefix' => $prefix, 'backup_filename' => 'backupname', ), // backup options 'backup' => array( // directory backup 'directory' => array( 'tar_cmd' => '/bin/tar', 'items' => array( array( 'name' => 'home_user1', 'path' => '/home/user1', 'exclude' => 'tmp,logs,cache', ), array( 'name' => 'home_user2', 'path' => '/home/user2', 'exclude' => 'tmp', ) ) ), // database backup 'mysql' => array( 'mysqldump_cmd' => '/usr/bin/mysqldump', 'user' => 'root', 'password' => 'xxx', 'host' => 'localhost', 'items' => array( array( 'db_name' => 'xxx', 'ignore_tables' => 'test', 'tables_structure' => 'logs,sessions', ), array( 'db_name' => 'xxx2', ), ), ), ), // upload backup options 'upload' => array( // upload to local directoey 'directory' => array( 'max_count' => 3, 'path' => '/backups', ), // upload to ftp 'ftp' => array( 'max_count' => 3, 'path' => '/backups', 'host' => 'xxx', 'user' => 'xxx', 'password' => 'xxx' ), ), // notification options 'nofification' => array( // email notification 'email' => array( 'on_success' => array( 'to' => '[email protected]', 'subject' => 'Success backup', 'template' => realpath(__DIR__ .

'/.

/Command/Notification/email_templates/success.php') ), 'on_failed' => array( 'to' => '[email protected]', 'subject' => 'Failed backup', 'template' => realpath(__DIR__ .

'/.

/Command/Notification/email_templates/failed.php') ), ), ),

Пример использования:

$backupTask = new BackupTask\BackupTask($config); $backupTask->run();

Пример короны:

@daily /usr/bin/php /path/to/backup.php daily @weekly /usr/bin/php /path/to/backup.php weekly @monthly /usr/bin/php /path/to/backup.php monthly

Источники здесь Теги: #php #backup #Backup #administration #administration #разработка сайтов #php
Вместе с данным постом часто просматривают: