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, автоматически удаляющей лишние резервные копии при создании очередного дампа. Число копий, "остающихся в живых" также можно передать в адресной строке.

Установка и использование:

SypexDumper с поддержкой Cron
вот так выглядит исполнение ссылки
  1. перед началом работы сделайте резервную копию вашей БД обычными средствами и надежно сохраните ее;
  2. загрузите dumper_cron.php и PhPh_Autodeleter.php на хостинг в какую-либо директорию с достаточно случайным именем. Создайте поддиректорию /backup;
  3. обратитесь к скрипту dumper_cron.php, введите необходимые данные, как при использовании обычного Sypex. Выберите опцию резервного копирования нужной вам БД со сжатием, поддерживаемым вашим хостингом, или без него;
  4. в результате выполнения операции резервное копирование не будет осуществлено, но вы получите ссылку, по которой можно будет как вручную, так и автоматизированно вызывать выполнение данной операции с данными параметрами без ввода какой-либо дополнительной информации.
  5. скопируйте полученную ссылку в надежное место и используйте ее далее по своему усмотрению :) Можете воспользоваться cron'ом своего хостинга, и запускать ее с другого сервера.

Заметки:

  • если вы хотите изменить дефолтное число резервных копий, которые будет оставлять скрипт (три), добавьте параметр &storenum=Х к концу скопированной ссылки, где X - число бэкапов. Если вы хотите временно отключить автоудаление, поставьте 0 вместо X;
  • если у вас несколько баз, повторите операцию сначала, в разных директориях, для каждой базы. Этот момент надо бы доработать :)

Код скрипта PhPh_BackupAutodeleter.php

<?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, которая может быть бесконечной;
  • для использования с несколькими БД: научиться получать параметр имени базы из адресной строки, и, если он передается, оперировать только с теми файлами, имя которых начинается с имени полученной базы.

Связанные статьи:

Блог

WebSocket: интеграция с NetCat

Хотите добавить на сайт под управлением CMS NetCat поддержку технологии WebSocket? Обращайтесь к нам! Посетители сайта смогут получать мгновенные уведомления о событиях сайта без обращений к серверу и перезагрузок страниц. Превратите свой сайт в интерактивную площадку, работающую в реальном времени!

далее

Поломка админки NetCat 4.7 в Google Chrome и Opera

В современных версиях Google Chrome и Opera, вышедших в прошлом месяце, админка CMS NetCat 4.7 и младше вдруг сломалась. Поломка проявляется в том, что в правой части админки перестала показываться нижняя панель редактирования (там, где кнопки Добавить и прочие), а скролл-прокрутка не осуществляется до конца. Работать с сайтом и добавлять новые материалы не представляется возможным.

далее

NetCat: техническая поддержка и доработка сайтов

Мы работаем с CMS NetCat уже больше 10 лет. У нас большой опыт и ответственный подход к делу.

далее

Права Доступа в Компонентах: работают не так, как ожидается; но можно накостылить патч

Если в настройках Раздела или Инфоблока NetCat попробовать дать доступ на изменение объекта ВСЕМ, ничего не получится. Просмотр и Добавление работают одним образом, а Изменение, Включение и Удаление -- другим.

далее

Весь блог тут