Просмотр файла sys/fnc/backup.php

Размер файла: 2.86Kb
  1. <?
  2. if (!isset($hard_process)){
  3. $q=mysql_query("SELECT * FROM `cron` WHERE `id` = 'backup_mysql'");
  4. if (mysql_num_rows($q)==0)mysql_query("INSERT INTO `cron` (`id`, `time`) VALUES ('backup_mysql', '".time()."')");
  5. $backup = mysql_fetch_assoc($q);
  6. if (eregi('^[^@]*@[^@]*\.[^@]*$',$set['mail_backup']) && ($backup['time']==NULL || $backup['time']<time()-60*60*24)){
  7. mysql_query("UPDATE `cron` SET `time` = '".time()."' WHERE `id` = 'backup_mysql'");
  8. $hard_process=true;
  9. if (function_exists('set_time_limit'))@set_time_limit(600); // Ставим ограничение на 10 минут
  10.  
  11. @unlink(H."sys/tmp/MySQL.sql.gz");
  12. $list_tables=NULL;
  13. $tab=mysql_list_tables($set['mysql_db_name']);
  14.  
  15.  
  16.  
  17. for($i=0;$i<mysql_num_rows($tab);$i++)
  18. {
  19. $sql=NULL;
  20. $table=mysql_tablename($tab,$i);
  21.  
  22. $sql.="DROP TABLE IF EXISTS `$table`;\r\n";
  23. $res=@mysql_query("SHOW CREATE TABLE `$table`");
  24. $row=@mysql_fetch_row($res);
  25. $sql.=$row[1].";\r\n\r\n";
  26. $res = @mysql_query("SELECT * FROM `$table`");
  27. if (@mysql_num_rows($res) > 0) {
  28. while (($row = @mysql_fetch_assoc($res))) {
  29. $keys = @implode("`, `", @array_keys($row));
  30. $values = @array_values($row);
  31. foreach($values as $k=>$v) {
  32.  
  33. $values[$k] = my_esc($v);
  34. $values[$k]=ereg_replace("(\n|\r){1,}", '\n', $values[$k]);
  35.  
  36. }
  37. $values2 = @implode("', '", $values);
  38. $values2 = "'".$values2."'";
  39. $values2= str_replace("''", "null", $values2);
  40.  
  41. $sql .= "INSERT INTO `$table` (`$keys`) VALUES ($values2);\r\n";
  42. }
  43.  
  44. $sql .= "\r\n\r\n";
  45. }
  46. $fopen_mysql=fopen(H."sys/tmp/MySQL.sql.gz",'a');
  47. if (strlen($sql)<5*1024*1024)
  48. fwrite($fopen_mysql, gzencode($sql,9));
  49. fclose($fopen_mysql);
  50. }
  51.  
  52. $EOL="\r\n";
  53. $subj='BackUp DCMS';
  54. $bound = "--".md5(uniqid(time()));
  55.  
  56. $headers="From: \"BackUP@$_SERVER[HTTP_HOST]\" <BackUp@$_SERVER[HTTP_HOST]>$EOL";
  57. $headers.="To: $set[mail_backup]$EOL";
  58. $headers.="Subject: $subj$EOL";
  59. $headers.="Mime-Version: 1.0$EOL";
  60. $headers.="Content-Type: multipart/mixed; boundary=\"$bound\"$EOL";
  61.  
  62. $body="--$bound$EOL";
  63. $body.="Content-Type: text/plain; charset=\"utf-8\"$EOL";
  64. $body.="Content-Transfer-Encoding: 8bit$EOL";
  65. $body.=$EOL;
  66. $body.="Автоматическая отправка BackUp базы данных";
  67.  
  68. $body.="$EOL--$bound$EOL";
  69.  
  70. $body.="Content-Type: application/x-gzip; name=\"MySQL.sql.gz\"$EOL";
  71. $body.="Content-Disposition: attachment; filename=\"MySQL.sql.gz\"$EOL";
  72. $body.="Content-Transfer-Encoding: Base64$EOL";
  73. $body.=$EOL;
  74. $body.=chunk_split(base64_encode(file_get_contents(H."sys/tmp/MySQL.sql.gz")));
  75.  
  76. $body.="$EOL--$bound$EOL";
  77. $body.="Content-Type: text/plain; name=\"settings_6.2.dat\"$EOL";
  78. $body.="Content-Disposition: attachment; filename=\"settings_6.2.dat\"$EOL";
  79. $body.="Content-Transfer-Encoding: Base64$EOL";
  80. $body.=$EOL;
  81. $body.=chunk_split(base64_encode(file_get_contents(H."sys/dat/settings_6.2.dat")));
  82.  
  83. $body.="$EOL--$bound--$EOL";
  84.  
  85. mail("$set[mail_backup]", '=?utf-8?B?'.base64_encode($subj).'?=', $body, $headers);
  86. unlink(H."sys/tmp/MySQL.sql.gz");
  87.  
  88. }
  89. }
  90. ?>