X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость ( Вход | Регистрация )

Открыть тему
Тема закрыта
> Инструмент для автоматического бекапа.
apodhodi
apodhodi
Topic Starter сообщение 7.7.2013, 2:49; Ответить: apodhodi
Сообщение #1


Новичок
*

Группа: User
Сообщений: 32
Регистрация: 22.4.2013
Поблагодарили: 0 раз
Репутация:   0  


Нужен инструмент для автоматического бекапа сайта, автоотправкой по ftp на другой сервак и возможностью запуска по крону! Кто что использует?


--------------------
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Belos
Belos
сообщение 7.7.2013, 4:05; Ответить: Belos
Сообщение #2


Старожил
******

Группа: Active User
Сообщений: 2468
Регистрация: 11.11.2008
Из: Украина
Поблагодарили: 695 раз
Репутация:   96  


Свой сервер, крон, скрипы.

А вообще, автобэкап делается на многих хостингах, и крон работает

Сообщение отредактировал Belos - 7.7.2013, 4:06
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
apodhodi
apodhodi
Topic Starter сообщение 7.7.2013, 12:48; Ответить: apodhodi
Сообщение #3


Новичок
*

Группа: User
Сообщений: 32
Регистрация: 22.4.2013
Поблагодарили: 0 раз
Репутация:   0  


(Belos @ 7.7.2013, 4:05) *
А вообще, автобэкап делается на многих хостингах, и крон работает
Возможность делать бекап есть, но не автоматическом режиме.


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
KipiaSoft
KipiaSoft
сообщение 7.7.2013, 12:57; Ответить: KipiaSoft
Сообщение #4


Старожил
******

Группа: Active User
Сообщений: 2096
Регистрация: 16.11.2009
Из: Волгоград
Поблагодарили: 632 раза
Репутация:   74  


если сайт на wp, то можно использовать плагин,который делает бэкап по расписанию и отправляет его на облачный сервис дропбокс. все это на автомате


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
apodhodi
apodhodi
Topic Starter сообщение 7.7.2013, 21:35; Ответить: apodhodi
Сообщение #5


Новичок
*

Группа: User
Сообщений: 32
Регистрация: 22.4.2013
Поблагодарили: 0 раз
Репутация:   0  


KipiaSoft, Почти все на DLE, но хотелось бы что бы это было не привязано к CMS/


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Gerga
Gerga
сообщение 8.7.2013, 20:31; Ответить: Gerga
Сообщение #6


Участник
***

Группа: User
Сообщений: 247
Регистрация: 15.2.2013
Из: Одесса
Поблагодарили: 168 раз
Репутация:   43  


php-скрипт бэкапа базы данных. Вводите аутентификационные данные и запускаете скрипт. Можно поставить крона.

Развернуть/Свернуть
<?php  
    backup_database_tables('localhost', 'user', 'password', 'data_base', '*'); // Вызываем функцию резервного копирования БД
    
    // Начало функция резервного копирования базы данных
    function backup_database_tables($host,$user,$pass,$name,$tables) {
        $link = mysql_connect($host,$user,$pass);
        if (mysql_select_db($name, $link)) {                
        
            //Получаем все таблицы
            if($tables == '*') {
                $tables = array();
                $result = mysql_query('SHOW TABLES');
                while($row = mysql_fetch_row($result)) {
                    $tables[] = $row[0];
                }
            } else {
                $tables = is_array($tables) ? $tables : explode(',',$tables);
            }
        
            //Цикл по всем таблицам и формирование данных
            foreach($tables as $table) {
                $result = mysql_query('SELECT * FROM '.$table);
                $num_fields = mysql_num_fields($result);
        
                $return.= 'DROP TABLE '.$table.';';
                $row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));
                $return.= "\n\n".$row2[1].";\n\n";
        
                for ($i = 0; $i < $num_fields; $i++) {
                    while($row = mysql_fetch_row($result)) {
                        $return.= 'INSERT INTO '.$table.' VALUES(';
                        for($j=0; $j<$num_fields; $j++) {
                            $row[$j] = addslashes($row[$j]);
                            //$row[$j] = ereg_replace("\n","\\n",$row[$j]);
                            if (isset($row[$j])) { $return.= '"'.$row[$j].'"'; } else { $return.= '""'; }
                            if ($j<($num_fields-1)) { $return.= ','; }
                        }
                        $return.= ");\n";
                    }
                }
                $return.="\n\n\n";
            }
        
            //Сохраняем файл
            $handle = fopen('db-backup-'.time().'-'.(md5(implode(',',$tables))).'.sql','w+');
            if (fwrite($handle, $return)) {
                echo '<div class="succer" style="background-color: #FFFFE0; border: 1px solid #E6DB55; padding: 10px;">Бэкап успешно создан!</div>';
            } else echo '<div class="error" style="background-color: #E64432; border: 1px solid #88281D; padding: 10px;">Ошибка! Бэкaп не создан!</div>';
            fclose($handle);
        }
    }    
?>


html + php. Эту версию нельзя под крон:

Развернуть/Свернуть
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Бэкап БД</title>
<link href="style.css" type="text/css" rel="stylesheet">
</head>
<style>
.ok {
    background-color: #FFFFE0;
    border: 1px solid #E6DB55;
    padding: 10px;
}

.error {
    color: black;
    background-color: #E64432;
    border: 1px solid #88281D;
    padding: 10px;
}

</style>
<body>
    <form action="?" method="post">
        <table>
            <tr>
                <td><label for="host">Хост (обычно localhost): </label></td>
                <td><input type="text" name="host" id="host" value="localhost"></td>
            </tr>
            <tr>
                <td><label for="user">Пользователь БД (*): </label></td>
                <td><input type="text" name="user" id="user"></td>
            </tr>
            <tr>
                <td><label for="pass">Пароль БД (*): </label></td>
                <td><input type="text" name="pass" id="pass"></td>
            </tr>
            <tr>
                <td><label for="db">Название БД (*): </label></td>
                <td><input type="text" name="db" id="db"></td>
            </tr>
        </table>
        <input type="submit" value="Выполнить" name="go">
    </form>
    <?php
        if (isset($_POST['go'])) {
            if ($_POST['db'] <> '' AND $_POST['user'] <> '') {
                function obr ($a) {
                    $a = addslashes($a);
                    $a = htmlspecialchars($a);
                    $a = stripslashes($a);
                    $a = mysql_real_escape_string($a);
                    return $a;
                }
                
                    $host = 'localhost';
                    $name = obr($_POST['db']);
                    $pass = obr($_POST['pass']);
                    $user = obr($_POST['user']);
                    $tables = '*';
                            
                    // Начало резервного копирования базы данных
                
                    $link = mysql_connect($host,$user,$pass);
                    if (mysql_select_db($name, $link)) {                
                    
                        //Получаем все таблицы
                        if($tables == '*') {
                            $tables = array();
                            $result = mysql_query('SHOW TABLES');
                            while($row = mysql_fetch_row($result)) {
                                $tables[] = $row[0];
                            }
                        } else {
                            $tables = is_array($tables) ? $tables : explode(',',$tables);
                        }
                    
                        //Цикл по всем таблицам и формирование данных
                        foreach($tables as $table) {
                            $result = mysql_query('SELECT * FROM '.$table);
                            $num_fields = mysql_num_fields($result);
                    
                            $return.= 'DROP TABLE '.$table.';';
                            $row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));
                            $return.= "\n\n".$row2[1].";\n\n";
                    
                            for ($i = 0; $i < $num_fields; $i++) {
                                while($row = mysql_fetch_row($result)) {
                                    $return.= 'INSERT INTO '.$table.' VALUES(';
                                    for($j=0; $j<$num_fields; $j++) {
                                        $row[$j] = addslashes($row[$j]);
                                        //$row[$j] = ereg_replace("\n","\\n",$row[$j]);
                                        if (isset($row[$j])) { $return.= '"'.$row[$j].'"'; } else { $return.= '""'; }
                                        if ($j<($num_fields-1)) { $return.= ','; }
                                    }
                                    $return.= ");\n";
                                }
                            }
                            $return.="\n\n\n";
                        }
                    
                        //Сохраняем файл
                        $handle = fopen('db-backup-'.time().'-'.(md5(implode(',',$tables))).'.sql','w+');
                        if (fwrite($handle, $return)) {
                            echo '<div class="ok">Бэкап успешно создан!</div>';
                        } else echo '<div class="error">Ошибка! Бэкaп не создан!</div>';
                        fclose($handle);
                    }
                
                } else echo '<div class="error">Не все поля заполнены</div>';
        }  
    ?>
</body>
</html>


Сообщение отредактировал Gerga - 8.7.2013, 20:33


--------------------
Разработка на WordPress -> Верстка/Натяжка/Добавление функционала в шаблонах на WP


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Ultrastalker
Ultrastalker
сообщение 9.7.2013, 0:40; Ответить: Ultrastalker
Сообщение #7


Участник
***

Группа: User
Сообщений: 102
Регистрация: 2.7.2013
Из: Россия, Москва
Поблагодарили: 38 раз
Репутация:   7  


SXD + планировщик + самописные скрипты.


--------------------
Коллекция аватаров из кинофильмов и мультфильмов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
shyrik_don
shyrik_don
сообщение 24.7.2013, 16:19; Ответить: shyrik_don
Сообщение #8


Новичок
*

Группа: User
Сообщений: 24
Регистрация: 17.7.2013
Поблагодарили: 18 раз
Репутация:   7  


apodhodi, обычно для таких задач используются разного рода скрипты на shell/pash/python/php, которые запускаются по крону. Если надо, то могу свой скрипт скинуть.


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Открыть валютной карты для обменника
6 fair_exchange 373 Вчера, 19:38
автор: Mistic
Открытая тема (нет новых ответов) Нужен человек для поиска клиентов за процент от сделки
3 Evgos 535 15.12.2017, 22:34
автор: Yepperoni
Открытая тема (нет новых ответов) Вопрос по seo для интернет магазина
куда девать продвинутые товары, которые уже не выпускают
18 viktormerke 2803 15.12.2017, 15:18
автор: Smspva
Открытая тема (нет новых ответов) ВНИМАНИЕ: Тема для обсуждения работ фотоконкурса «Новогодний косплей» 18+
6 admin 1082 15.12.2017, 15:14
автор: admin
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыSE Ranking – новый сервис для проверки позиций сайтов в поисковиках
173 seranking 158118 15.12.2017, 14:29
автор: seranking


 



RSS Текстовая версия Сейчас: 17.12.2017, 3:12
Дизайн