SypexDumper 1.0.8 с поддержкой автоматизации через CRON ... а также передачи параметров в адресной строке и автоудаления старых бэкапов
Это модификация скрипта SypexDumper 1.0.8. Первая модификация произведена neochief: добавлена возможность передачи параметров скрипту через адресную строку, и, соответственно, автоматизация через любой CRON (даже расположенный на другом хосте)
Скачать: Attach:SypexDumper1.0.8-Cron_by_PhPh_2010-09-09.zip
Источники: www.sypex.net, www.drupal.ru/node/20156/
Вторая модификация произведена нами: в скрипт добавлен вызов PhPh_BackupAutodeleter.php, автоматически удаляющей лишние резервные копии при создании очередного дампа. Число копий, "остающихся в живых" также можно передать в адресной строке.
Установка и использование:
- перед началом работы сделайте резервную копию вашей БД обычными средствами и надежно сохраните ее;
- загрузите dumper_cron.php и PhPh_Autodeleter.php на хостинг в какую-либо директорию с достаточно случайным именем. Создайте поддиректорию /backup;
- обратитесь к скрипту dumper_cron.php, введите необходимые данные, как при использовании обычного Sypex. Выберите опцию резервного копирования нужной вам БД со сжатием, поддерживаемым вашим хостингом, или без него;
- в результате выполнения операции резервное копирование не будет осуществлено, но вы получите ссылку, по которой можно будет как вручную, так и автоматизированно вызывать выполнение данной операции с данными параметрами без ввода какой-либо дополнительной информации.
- скопируйте полученную ссылку в надежное место и используйте ее далее по своему усмотрению :) Можете воспользоваться cron'ом своего хостинга, и запускать ее с другого сервера.
Заметки:
- если вы хотите изменить дефолтное число резервных копий, которые будет оставлять скрипт (три), добавьте параметр &storenum=Х к концу скопированной ссылки, где X - число бэкапов. Если вы хотите временно отключить автоудаление, поставьте 0 вместо X;
- если у вас несколько баз, повторите операцию сначала, в разных директориях, для каждой базы. Этот момент надо бы доработать :)
Код скрипта PhPh_BackupAutodeleter.php
## This was coded by Ph&Ph (http://web.finar.ru) This is a script for automatical delete exisiting backups copies. It is siutable for using with Sypex Dumper for full CRON automatization.
## here is some config:
$dir = "./backup/"; // backup directory
$ext1 = "sql"; // first acceptible file extension
$ext2 = "gz"; // second acceptible file extension
$storenum = 3; //default value of how many backups will stay untouched. If 0, will not delete anything. Can be customed in command line by the following syntax:
// PhPh_BackupAutodeleter.php?storenum=5 , where 5 is how many backups do you want to keep alive
## here config finishes.
## -----------Do not modify anything below-----------
if (isset ($_GET["storenum"])) {
$storenum = $_GET["storenum"]; // if there is new value in command line, then apply it instead of default
}
echo "Script will keep <b>$storenum</b> backups<br><br>";
if (is_dir($dir) && $storenum != 0) {
$dh = opendir($dir); // opening directory...
while (false !== ($filename = readdir($dh))) { // reading directory
if ($filename != "." && $filename != ".." ) { // bypass parent and current dirs
$ext = end(explode(".", $filename)); // get extension
if ($ext == "$ext1" || $ext == "$ext2") { // if file has properly extension, then proceed
$files[] = $filename; // add this file to array
}
}
}
$count = count($files); //how many files we have now
$i = $count-$storenum; //how many files we have to delete
if ($count !=0 ) {
sort($files); // sort array by name. ToDo: replace sorting by filename via sorting by create time from filesystem
foreach ($files as $deleted) {
if ($i > 0) {
unlink("$dir$deleted");
echo "File <b>$deleted</b> was deleted<br>";
$i--;
}
else {
echo "File <b>$deleted</b> is alive<br>";
}
}
}
else {
echo "<b>Attention:</b> no backup files found. Nothing to delete :( ";
}
echo "<br>Operation completed successful.";
}
?>
To-do лист скрипта PhPh_BackupAutodeleter.php:
PhPh_BackupAutodeleter.php - это скрипт, удаляющий из выбранной директории N первых по имени файлов, двух выбранных расширений. Вот что можно бы с ним сделать:
- сделать сортировку файлов не по имени, как сейчас, а по дате создания, которую выцеплять из файловой системы;
- обрабатываемые расширения оформлять в виде array, которая может быть бесконечной;
- для использования с несколькими БД: научиться получать параметр имени базы из адресной строки, и, если он передается, оперировать только с теми файлами, имя которых начинается с имени полученной базы.