Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Skrypt który tworzy kopię danych na ftp.
Forum PHP.pl > Forum > Gotowe rozwiązania > Szukam
przemo191
Witam. Musze zrobić kopię danych na serwerze i bazie mysql. Robienie kopi bazy danych już mam.
Dla zainteresowanych:
  1. include('../db_pass.php');
  2. $link = mysql_connect($host, $username, $password) or die('Connection error : ' . mysql_error());
  3.  
  4. mysql_select_db($database) or die('Could not select database');
  5. mysql_query('SET NAMES utf8_polish_ci');
  6. $sql = '';
  7. $crlf = "\r\n";
  8.  
  9. $time = date('Y m d, H:i', time());
  10. $sql .= '#' . $crlf;
  11. $sql .= '# Zrzut bazy danych ' . $crlf;
  12. $sql .= '# Wygenerowano: ' . $time . $crlf;
  13. $sql .= '#' . $crlf . $crlf;
  14.  
  15. @$res = mysql_list_tables($database);
  16. while($row = mysql_fetch_array($res))
  17. {
  18. $table_name = $row[0];
  19. $table_fields = array();
  20.  
  21. $sql .= '#' . $crlf;
  22. $sql .= '# Struktura tabeli ' . $table_name . $crlf;
  23. $sql .= '#' . $crlf;
  24.  
  25. $sql .= 'DROP TABLE IF EXISTS ' . $table_name . ';' . $crlf;
  26. $sql .= 'CREATE TABLE ' . $table_name . ' ( ' . $crlf;
  27.  
  28. /* Generujemy strukture tabeli. Najpierw wyciagamy pola */
  29. $res2 = mysql_query('SHOW FIELDS FROM ' . $table_name);
  30. while($fields = mysql_fetch_array($res2))
  31. {
  32. $sql .= ' ';
  33. $sql .= $fields['Field'] . ' ' . $fields['Type'];
  34. if (!empty($fields['Default']))
  35. {
  36. $sql .= 'DEFAULT \'' . $fields['Default'] . '\'';
  37. }
  38.  
  39. if ($fields['Null'] != 'Yes')
  40. {
  41. $sql .= ' NOT NULL';
  42. }
  43.  
  44. if (!empty($fields['Extra']))
  45. {
  46. $sql .= ' ' . $fields['Extra'];
  47. }
  48.  
  49. $sql .= ',' . $crlf;
  50.  
  51. $table_fields[] = $fields['Field'];
  52. }
  53.  
  54. $index = '';
  55.  
  56. /* Teraz wyciagamy pola typu KEY */
  57. $res2 = mysql_query('SHOW KEYS FROM ' . $table_name);
  58. while ($keys = mysql_fetch_assoc($res2))
  59. {
  60. $kname = $keys['Key_name'];
  61. if(($kname != 'PRIMARY') && ($keys['Non_unique'] == 0))
  62. {
  63. $kname = 'UNIQUE|' . $kname;
  64. }
  65.  
  66. $index[$kname] = array();
  67. $index[$kname][] = $keys['Column_name'];
  68. }
  69.  
  70. while(list($n, $columns) = @each($index))
  71. {
  72. if ($n == 'PRIMARY')
  73. {
  74. $sql .= ' PRIMARY KEY (' . implode($columns, ', ') . ')';
  75. }
  76. elseif (substr($n, 0, 6) == 'UNIQUE')
  77. {
  78. $sql .= ' UNIQUE ' . substr($n, 7) . ' (' . implode($columns, ', ') . ')';
  79. }
  80. else
  81. {
  82. $sql .= ' KEY ' . $n . ' (' . implode($columns, ', ') . ')';
  83. }
  84. $sql .= $crlf;
  85. }
  86.  
  87. $sql .= ');' . $crlf;
  88. $sql .= $crlf . $crlf;
  89.  
  90. $sql .= '#' . $crlf;
  91. $sql .= '# Dane z tabeli ' . $table_name . $crlf;
  92. $sql .= '#' . $crlf;
  93.  
  94. /* Mamy juz strukture, wiec teraz czas
  95.   wyciagnac dane z tabeli */
  96. $d_res = mysql_query('SELECT * FROM ' . $table_name);
  97. while ($data = mysql_fetch_array($d_res))
  98. {
  99. $sql .= 'INSERT INTO ' . $table_name . ' (' . implode(', ', $table_fields) . ') VALUES(';
  100.  
  101. $field_count = count($table_fields);
  102. $f_data = array();
  103. for ($i = 0; $i < $field_count; $i++)
  104. {
  105. $f_data[] .= '\'' . $data[$i] . '\'';
  106. }
  107. $sql .= implode(', ', $f_data);
  108. $sql .= ');' . $crlf;
  109. }
  110. $sql .= $crlf . $crlf;
  111. }
  112.  
  113.  
  114. $file = fopen('../backup/depis.sql', 'w');
  115. fwrite($file, $sql);
  116. fclose($file);
  117.  
  118. $time = date('Y-m-d_H.i.s', time());
  119. $zip = new ZipArchive();
  120. $time1 = $time;
  121. $plik_arch = "../backup/depis$time1.zip";
  122. if ($zip->open($plik_arch, ZIPARCHIVE::CREATE) !==TRUE) {
  123. exit ("nie mogę zrobić pliku archiwum <$plik_arch>");
  124. }
  125.  
  126. $zip->addFile("../backup/depis.sql");
  127. //echo "Ilość plików spakowanych: ".(($zip->numFiles)-1) . "\n";
  128. $zip->close();


Szukam skryptu w php, który zrobi mi kopię wszystkich plików które znajdują się na serwerze.

wNogachSpisz
Ten skrypt nie działa, uszkadza bazę danych dla phpbb3 i joomla.
Polecam komende "mysqldump" lub jeśli nie ma dostepu, funkcję backupu w skrypcie phpmyadmin.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.