Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> kopia bezpieczeństwa
raf2001
post
Post #1





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 14.06.2002
Skąd: Żyrardów

Ostrzeżenie: (0%)
-----


Czy jest jakaś prosta metoda zrobienia kopii bezpieczeństwa całej bazy danych(lub danych tylko tabel)?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
MoD
post
Post #2





Grupa: Zarejestrowani
Postów: 193
Pomógł: 0
Dołączył: 14.09.2003
Skąd: Brodnica (koło Torunia)

Ostrzeżenie: (0%)
-----


Ja proponuje mój skrypcik, który wykonuje kopię podanej tabeli.

backup.php
  1. <?php
  2.  
  3. function copytable ( $host, $login, $password, $database, $table, $file_name, $orderby )
  4. {
  5. mysql_connect ( $host, $login, $password ); //Łączymy się z bazą danych
  6. mysql_select_db ( $database ); //Wybieramy baże danych
  7.  
  8. $date = date ( &#092;"jS F Y  g:i:s a\" ); //Ustalamy datę; Domyślnie jest w formacie angielskim.
  9.  
  10. if ( !$sql = mysql_query ( &#092;"SELECT * FROM `\" . $table . \"` ORDER BY `\" . $orderby . \"` ASC;\" ) )
  11. {
  12. return 0; //Jeśli nie ma tabeli zwraca błąd
  13. }
  14.  
  15. $records_num = mysql_num_rows ( $sql ); //Zliczamy rekordy
  16.  
  17. $file = fopen ( $file_name, &#092;"a+\" ); //Robimy pliczek lub dopisujemy do istniejącego
  18.  
  19. $head = &#092;"nnnn\";
  20. $head .= &#092;"##########################################################n\";
  21. $head .= &#092;"#n\";
  22. $head .= &#092;"# Backup data for table `\" . $table . \"`n\";
  23. $head .= &#092;"# Number of records: \" . $records_num . \"n\";
  24. $head .= &#092;"# Date of generate file: \" . $date . \"n\";
  25. $head .= &#092;"#n\";
  26. $head .= &#092;"##########################################################nnn\"; //Tu został ustawiony nagłówek pliku, MySQL potraktuje to jak komentarz
  27.  
  28. fputs ( $file, $head ); //Wrzucamy nagłówek do pliku
  29.  
  30. while ($sql_result = mysql_fetch_array( $sql, MYSQL_NUM ) ) //Pętelka która pozwala na odczytanie danych
  31. {
  32. $count = count ( $sql_result ); //Zliczamy pola tabeli
  33. $sql_for_write = &#092;"INSERT INTO '\" . $table . \"' VALUES(\" ;
  34. $i = 1 ;
  35. $sql_for_write .= &#092;"'\" . $sql_result[0] . \"'\";
  36. while ( $i < $count ) //Pętla odpowiedzialna za utworzenie zapytania
  37. {
  38. $sql_for_write .= &#092;", '\" . $sql_result[$i] . \"'\" ;
  39. $i++;
  40. }
  41. $sql_for_write .= &#092;");n\" ;
  42. fputs ( $file, $sql_for_write ); //Zapytanie zostaje zapisane do pliku.
  43. unset ( $sql_for_write ); //Czyścimy zmienną, żeby nie zajmowała pamięci. Zostanie ona później znowu wykorzy
  44. tana.
  45. }
  46.  
  47. fclose ( $file ); //Zamykamy plik
  48.  
  49. return 1 ; //Funkcja została poprawnie wykonana.
  50. }
  51.  
  52.  
  53.  
  54. ?>


Wykorzystanie:
  1. <?php
  2.  
  3. $host = &#092;"localhost\" ;
  4. $login = &#092;"root\" ;
  5. $password = &#092;"\" ;
  6. $database = &#092;"baza\" ;
  7. $table = &#092;"tabela\" ;
  8. $file_name = &#092;"backup.sql\" ;
  9. $orderby = &#092;"id\" ; //Tu zostały ustawione parametry funkcji; w zmienną \"orderby\" wpisujemy klucz, według którego bedzą sortowane wyniki.
  10.  
  11. require_once ( &#092;"backup.php\" ); //Dołączamy naszą funkcję
  12.  
  13. $result = copytable ( $host, $login, $password, $database, $table, $file_name, $orderby ); //Ustawiamy zmienną, aby sprawdzić czy wywołanie się powiodło.
  14.  
  15. if ( $result = 0 ) //Jeśli nie
  16. {
  17. print &#092;"Wystąpił błąd!\"; //Wyświetlamy komunikat
  18. }
  19. else //W przeciwnym wypadku
  20. {
  21. print &#092;"Kopia została wykonana!\"; //Powiadamiamy o wykonaniu zadania.
  22. }
  23.  
  24. ?>

Napewno działa, sprawdzałem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) i to na każdym serwerze.
Go to the top of the page
+Quote Post

Posty w temacie
- raf2001   kopia bezpieczeństwa   29.02.2004, 14:28:40
- - wojto   a nie slyszales o phpMyAdmin   29.02.2004, 15:33:12
- - maciu   najprostsza metoda to użycie PhpMyAdmin   29.02.2004, 15:33:41
- - q   polecenie systemowe: pojedyncza tabela: Kodmysqld...   29.02.2004, 15:56:13
- - raf2001   1. to że phpmyadmin to ma to ja od dawna wiem, ale...   29.02.2004, 17:11:38
- - q   1. rozwiazanie exec lub system z poleceniami tymi,...   29.02.2004, 17:20:36
- - raf2001   wole robić backup do pliku, ponieważ jest to owiel...   29.02.2004, 17:45:02
- - spenalzo   Może tak: <? exec('mysqldump -u krasnal -phasl...   29.02.2004, 18:09:37
- - raf2001   dziwne ale nawet to : <?php exec('mysqldump -u ...   29.02.2004, 18:25:26
- - spenalzo   Czy podałeś poprawne dane?   29.02.2004, 19:46:02
- - MaKARON   Backup   29.02.2004, 21:45:11
- - raf2001   dane sa prawidlowe, baze mam na krasnalku, więc da...   1.03.2004, 17:45:07
- - q   jezeli chcesz polozyc jakis szczegolny nacisk na s...   1.03.2004, 22:07:22
- - ave   lepiej SELECT * INTO OUTFILE "c:a.text" FIELDS TE...   2.03.2004, 01:51:23
- - raf2001   mysle, żę to by było najlepsze rozwiązanie, ael po...   2.03.2004, 17:49:11
- - ave   <?php mysql_query("SELECT * INTO OUTFILE 'c:a.t...   2.03.2004, 19:33:37
- - raf2001   tak wtedy była malutka pomylka :oops: . Ale teraz...   4.03.2004, 15:58:29
- - MoD   Ja proponuje mój skrypcik, który wykonuje kopię po...   15.06.2004, 19:06:08
- - TomASS   Warning: mysql_num_rows(): supplied argument is no...   21.06.2004, 18:26:04
- - MoD   Pytanie: podałeś dobre informacje do zmiennych? W...   22.06.2004, 18:55:37
- - slaug   Nie wiem na ile jest jeszcze ten post aktualny, al...   3.08.2004, 09:48:42


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 9.10.2025 - 00:58