Вот PHP скрипт, который создает бэкап всех таблиц базы данных DBNAME, сохраняя каждую таблицу в отдельный файл в папке DUMP. Имена файлов будут содержать текущую дату и время:
<?php
// Параметры подключения к базе данных
$db_host = 'localhost';
$db_name = 'DBNAME'; // Имя БД
$db_user = 'user1'; // Имя пользователя БД
$db_pass = 'pass1'; // Пароль пользователя БД
// Папка для сохранения дампов
$backup_dir = 'DUMP';
if (!file_exists($backup_dir)) {
mkdir($backup_dir, 0755, true);
}
// Формат даты и времени для имени файла
$date = date('Y-m-d_H-i-s');
try {
// Подключение к базе данных
$pdo = new PDO("mysql:host=$db_host;dbname=$db_name", $db_user, $db_pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Получаем список всех таблиц в базе данных
$tables = $pdo->query("SHOW TABLES")->fetchAll(PDO::FETCH_COLUMN);
if (empty($tables)) {
die("В базе данных нет таблиц.");
}
// Создаем дамп для каждой таблицы
foreach ($tables as $table) {
$filename = $backup_dir . '/' . $date . '_' . $table . '.sql';
// Получаем структуру таблицы
$create_table = $pdo->query("SHOW CREATE TABLE `$table`")->fetch(PDO::FETCH_ASSOC);
// Получаем данные таблицы
$rows = $pdo->query("SELECT * FROM `$table`")->fetchAll(PDO::FETCH_ASSOC);
// Формируем SQL дамп
$dump = "-- Dump of table $table\n";
$dump .= "-- Created: " . date('Y-m-d H:i:s') . "\n\n";
$dump .= "DROP TABLE IF EXISTS `$table`;\n";
$dump .= $create_table['Create Table'] . ";\n\n";
if (!empty($rows)) {
$dump .= "INSERT INTO `$table` VALUES \n";
$values = array();
foreach ($rows as $row) {
$row_values = array();
foreach ($row as $value) {
$row_values[] = is_null($value) ? 'NULL' : $pdo->quote($value);
}
$values[] = "(" . implode(', ', $row_values) . ")";
}
$dump .= implode(",\n", $values) . ";\n";
}
// Сохраняем дамп в файл
file_put_contents($filename, $dump);
echo "Таблица $table сохранена в файл: $filename\n";
}
echo "Бэкап успешно создан.\n";
} catch (PDOException $e) {
die("Ошибка подключения к базе данных: " . $e->getMessage());
}
?>
Инструкция по использованию:
- Сохраните этот код в файл с расширением .php (например,
backup.php
) - Убедитесь, что на сервере существует папка DUMP или скрипт сможет ее создать
- Запустите скрипт через браузер или командную строку (php backup.php)
Особенности скрипта:
- Создает отдельный файл для каждой таблицы
- Имя файла содержит дату/время и имя таблицы (например:
2023-11-15_14-30-00_users.sql
) - В каждый файл записывается:
- SQL для удаления таблицы (если существует)
- SQL для создания таблицы
- Все данные в виде INSERT запросов
- Поддерживает NULL значения