Слетела кодировка после бэкапа. Заплачу за помощь.

Пользовался BackUpWordPress.
Нажал в плагине Сделать бэкап сейчас, потом Restore. Теперь вся кириллица стала вопросиками. Возможно ли вернуть контент?
Да, и зайти в админку не удается. – "Вы не имеете достаточно прав для доступа к данной странице."

пишите и присылайте базу которую вы сохранили на lecactus {@} lecactus {.} ru
укажите какая версия была при бэкапе и в какую восстанавливаете.
проверьте кстати свой wp-config чтобы был идентичен по количеству настроек wp-config-sample той версии в которую импортируете.

а проблема "Вы не имеете достаточно прав для доступа к данной странице." лечится только удалением таблицы настроек. проверено не раз

Бэкапа уже нет. Я его случайно удалил не зная об этом, т.к. бэкап был размером в 170 мб. Идиотизм какой-то, нету там базы такого размера.

Похоже ничего не сделать. Большая часть текста просто исчезла. Например был пост в 1200 символов и 3 картинки, осталось только вот это "?????? ?????? ? ???????".
Обидно, блин, столько уникального текста пропало.

На будущее, киньте ссылку как правильно сделать бэкап и восстановить с него.

личное предпочтение – делать backup ручками – под шеллом, или с помощью PhpMyAdmin. там всё прости и интуитивно понятно.
backup всё-таки пошлите Ивану, может не всё так плачевно. плюс попробуйте достучаться саппорту вашего хостинга, часто они сами делают бекап (например, на mchost делают backup раз в сутки, но всё же дополнительно использую скрипт в кроне, скидывающий и пакующий в gz дамп раз в три дня – могу поделиться им если есть необходимость)

Может текст еще восстановить можно, покопавшись по архивам Гугля, Яшки, webarchive.org.

CMEPTHuk, если делать через PhpMyAdmin проблем с кодировкой не будет?
Начал выдергивать текст из гугла.

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

<?php
class MySQLDump {
        var $database = null;
        var $compress = false;
        var $hexValue = false;
        var $filename = null;
        var $file = null;
        var $isWritten = false;
        function MYSQLDump($db = null, $filepath = 'dump.sql', $compress = false, $hexValue = false){
                $this->compress = $compress;
                if ( !$this->setOutputFile($filepath) )
                        return false;
                return $this->setDatabase($db);
        }
        function setDatabase($db){
                $this->database = $db;
                if ( !@mysql_select_db($this->database) )
                        return false;
                return true;
  }
  function getDatabase(){
                return $this->database;
        }
        function setCompress($compress){
                if ( $this->isWritten )
                        return false;
                $this->compress = $compress;
                $this->openFile($this->filename);
                return true;
  }
  function getCompress(){
                return $this->compress;
        }
        function setOutputFile($filepath){
                if ( $this->isWritten )
                        return false;
                $this->filename = $filepath;
                $this->file = $this->openFile($this->filename);
                return $this->file;
  }
  function getOutputFile(){
                return $this->filename;
        }
  function getTableStructure($table){
                if ( !$this->setDatabase($this->database) )
                        return false;
                $structure = "-- \n";
                $structure .= "-- Table structure for table `{$table}` \n";
                $structure .= "-- \n\n";
                $structure .= 'DROP TABLE IF EXISTS `'.$table.'`;'."\n";
                $structure .= "CREATE TABLE `".$table."` (\n";
                $records = @mysql_query('SHOW FIELDS FROM `'.$table.'`');
                if ( @mysql_num_rows($records) == 0 )
                        return false;
                while ( $record = mysql_fetch_assoc($records) ) {
                        $structure .= '`'.$record['Field'].'` '.$record['Type'];
                        if ( !empty($record['Default']) )
                                $structure .= ' DEFAULT \''.$record['Default'].'\'';
                        if ( @strcmp($record['Null'],'YES') != 0 )
                                $structure .= ' NOT NULL';
                        if ( !empty($record['Extra']) )
                                $structure .= ' '.$record['Extra'];
                        $structure .= ",\n";
                }
                $structure = @ereg_replace(",\n$", null, $structure);
                $structure .= $this->getSqlKeysTable($table);
                $structure .= "\n)";
                $records = @mysql_query("SHOW TABLE STATUS LIKE '".$table."'");
                echo @$query;
                if ( $record = @mysql_fetch_assoc($records) ) {
                        if ( !empty($record['Engine']) )
                                $structure .= ' ENGINE='.$record['Engine'];
                        if ( !empty($record['Auto_increment']) )
                                $structure .= ' AUTO_INCREMENT='.$record['Auto_increment'];
                }
                $structure .= ";\n\n-- --------------------------------------------------------\n\n";
                $this->saveToFile($this->file,$structure);
        }
        function getTableData($table,$hexValue = true) {
                if ( !$this->setDatabase($this->database) )
                        return false;
                $data = "-- \n";
                $data .= "-- Dumping data for table `$table` \n";
                $data .= "-- \n\n";
                $records = mysql_query('SHOW FIELDS FROM `'.$table.'`');
                $num_fields = @mysql_num_rows($records);
                if ( $num_fields == 0 )
                        return false;
                $selectStatement = "SELECT ";
                $insertStatement = "INSERT INTO `$table` (";
                $hexField = array();
                for ($x = 0; $x < $num_fields; $x++) {
                        $record = @mysql_fetch_assoc($records);
                        if ( ($hexValue) && ($this->isTextValue($record['Type'])) ) {
                                $selectStatement .= 'HEX(`'.$record['Field'].'`)';
                                $hexField [$x] = true;
                        }
                        else
                                $selectStatement .= '`'.$record['Field'].'`';
                        $insertStatement .= '`'.$record['Field'].'`';
                        $insertStatement .= ", ";
                        $selectStatement .= ", ";
                }
                $insertStatement = @substr($insertStatement,0,-2).') VALUES';
                $selectStatement = @substr($selectStatement,0,-2).' FROM `'.$table.'`';
                $records = @mysql_query($selectStatement);
                $num_rows = @mysql_num_rows($records);
                $num_fields = @mysql_num_fields($records);
                if ( $num_rows > 0 ) {
                        $data .= $insertStatement;
                        for ($i = 0; $i < $num_rows; $i++) {
                                $record = @mysql_fetch_assoc($records);
                                $data .= ' (';
                                for ($j = 0; $j < $num_fields; $j++) {
                                        $field_name = @mysql_field_name($records, $j);
                                        if ( @$hexField[$j] && (@@strlen(@$record[@$field_name]) > 0) )
                                                $data .= "0x".$record[$field_name];
                                        else
                                                $data .= "'".@str_replace('\"','"',@mysql_escape_string($record[$field_name]))."'";
                                        $data .= ',';
                                }
                                $data = @substr($data,0,-1).")";
                                $data .= ( $i < ($num_rows-1) ) ? ',' : ';';
                                $data .= "\n";
                                if (strlen($data) > 1048576) {
                                        $this->saveToFile($this->file,$data);
                                        $data = '';
                                }
                        }
                        $data .= "\n-- --------------------------------------------------------\n\n";
                        $this->saveToFile($this->file,$data);
                }
        }
        function getDatabaseStructure(){
                $records = @mysql_query('SHOW TABLES');
                if ( @mysql_num_rows($records) == 0 )
                        return false;
                while ( $record = @mysql_fetch_row($records) ) {
                        @$structure .= @$this->getTableStructure($record[0]);
                }
                return true;
  }
        function getDatabaseData($hexValue = true){
                $records = @mysql_query('SHOW TABLES');
                if ( @mysql_num_rows($records) == 0 )
                        return false;
                while ( $record = @mysql_fetch_row($records) ) {
                        $this->getTableData($record[0],$hexValue);
                }
  }
        function doDump() {
                $this->saveToFile($this->file,"SET FOREIGN_KEY_CHECKS = 0;\n\n");
                $this->getDatabaseStructure();
                $this->getDatabaseData($this->hexValue);
                $this->saveToFile($this->file,"SET FOREIGN_KEY_CHECKS = 1;\n\n");
                $this->closeFile($this->file);
                return true;
        }
        function writeDump($filename) {
                if ( !$this->setOutputFile($filename) )
                        return false;
                $this->doDump();
    $this->closeFile($this->file);
    return true;
        }
        function getSqlKeysTable ($table) {
                $primary = "";
                unset($unique);
                unset($index);
                unset($fulltext);
                $results = mysql_query("SHOW KEYS FROM `{$table}`");
                if ( @mysql_num_rows($results) == 0 )
                        return false;
                while($row = mysql_fetch_object($results)) {
                        if (($row->Key_name == 'PRIMARY') AND ($row->Index_type == 'BTREE')) {
                                if ( $primary == "" )
                                        $primary = "  PRIMARY KEY  (`{$row->Column_name}`";
                                else
                                        $primary .= ", `{$row->Column_name}`";
                        }
                        if (($row->Key_name != 'PRIMARY') AND ($row->Non_unique == '0') AND ($row->Index_type == 'BTREE')) {
                                if ( (!is_array(@$unique)) OR (@$unique[@$row->Key_name]=="") )
                                        $unique[$row->Key_name] = "  UNIQUE KEY `{$row->Key_name}` (`{$row->Column_name}`";
                                else
                                        $unique[$row->Key_name] .= ", `{$row->Column_name}`";
                        }
                        if (($row->Key_name != 'PRIMARY') AND ($row->Non_unique == '1') AND ($row->Index_type == 'BTREE')) {
                                if ( (!is_array(@$index)) OR (@$index[@$row->Key_name]=="") )
                                        $index[$row->Key_name] = "  KEY `{$row->Key_name}` (`{$row->Column_name}`";
                                else
                                        $index[$row->Key_name] .= ", `{$row->Column_name}`";
                        }
                        if (($row->Key_name != 'PRIMARY') AND ($row->Non_unique == '1') AND ($row->Index_type == 'FULLTEXT')) {
                                if ( (!is_array($fulltext)) OR ($fulltext[$row->Key_name]=="") )
                                        $fulltext[$row->Key_name] = "  FULLTEXT `{$row->Key_name}` (`{$row->Column_name}`";
                                else
                                        $fulltext[$row->Key_name] .= ", `{$row->Column_name}`";
                        }
                }
                $sqlKeyStatement = '';
                if ( $primary != "" ) {
                        $sqlKeyStatement .= ",\n";
                        $primary .= ")";
                        $sqlKeyStatement .= $primary;
                }
                if (is_array(@$unique)) {
                        foreach ($unique as $keyName => $keyDef) {
                                $sqlKeyStatement .= ",\n";
                                $keyDef .= ")";
                                $sqlKeyStatement .= $keyDef;

                        }
                }
                if (is_array(@$index)) {
                        foreach ($index as $keyName => $keyDef) {
                                $sqlKeyStatement .= ",\n";
                                $keyDef .= ")";
                                $sqlKeyStatement .= $keyDef;
                        }
                }
                if (is_array(@$fulltext)) {
                        foreach ($fulltext as $keyName => $keyDef) {
                                $sqlKeyStatement .= ",\n";
                                $keyDef .= ")";
                                $sqlKeyStatement .= $keyDef;
                        }
                }
                return $sqlKeyStatement;
        }
        function isTextValue($field_type) {
                switch ($field_type) {
                        case "tinytext":
                        case "text":
                        case "mediumtext":
                        case "longtext":
                        case "binary":
                        case "varbinary":
                        case "tinyblob":
                        case "blob":
                        case "mediumblob":
                        case "longblob":
                                return True;
                                break;
                        default:
                                return False;
                }
        }
        function openFile($filename) {
                $file = false;
                if ( $this->compress )
                        $file = @gzopen($filename, "w9");
                else
                        $file = @fopen($filename, "w");
                return $file;
        }
        function saveToFile($file, $data) {
                if ( $this->compress )
                        @gzwrite($file, $data);
                else
                        @fwrite($file, $data);
                $this->isWritten = true;
        }
        function closeFile($file) {
                if ( $this->compress )
                        @gzclose($file);
                else
                        @fclose($file);
        }
}

@mysql_connect("localhost", "mysql_username", "mysql_password") ? print('') : die();
$bdbname = 'database_name';
$filename = 'backup_'.$bdbname.'_'.date('Y\\_m\\_d\\_H\\h_i\\m').'.sql.gz';


$dumper = new MySQLDump($bdbname,$filename,true,false);
$dumper->doDump();

?>

создаем в корне сайта директорию, например, mysqldumps, аккуратно ложим его в эту директорию, правим данные аутентификации, и ставим в крон запись вида "/usr/bin/php -q /home/…/httpdocs/mysqldumps/mysqldump.php", после чего забываем о нем. можно проще, но не на всех серверах расшарены утилиты для работы непосредственно с СУБД

кстати вы в БАЗЕ смотрели? там тоже все вопросиками кажет? а то бывает просто хэндс.длл случайно в конфиге не то пропишут и показывает весь сайт вопросами, хотя в базе все отлично может быть. а еще один надежный способ резервирования – сделать полную ленту и подписать себя самого в гуглридере. туда все посты будут копироваться и храниться…

а база 170мб может весить из-за того что какой нибудь хитрож..ый плагин туда пишет статистику по строке на юзера. сам видел только таблички под 30-40мб

или пришлите данные для доступа к базе по мылу – посмотрим что там творится на самом деле

Anonymous
Отправить
Ответ на: