Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> funkcja exec() i backup
korad1
post 24.05.2005, 13:10:04
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 10.05.2005

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


Moze macie jakies przykłady z wykorzystaniem funkcji exec() i uruchamianiem polecen w linux, szczegolnie zalezalo by mi, gdyby ktos mial tworzenie backupow w postgresie ( pg_dump .....) z wykorzystaniem funkcji exec()
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
mhs
post 24.05.2005, 13:18:49
Post #2





Grupa: Zarejestrowani
Postów: 764
Pomógł: 3
Dołączył: 30.04.2003

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


Nie mam pod reka postgresa w zwiazku z czym nie mam mozliwosci sprawdzic ale rozwiazanie dla Mysql'a na Win typu:


  1. <?php
  2. exec(&#092;"mysqldump --databases baza -u user -pHASLO > c:sql.sql\");
  3. ?>


działa bez problemów.

Wydaje mi się, że analogicznie postępując można to również zrobić dla pg.

Ten post edytował mhs 24.05.2005, 13:19:48
Go to the top of the page
+Quote Post
korad1
post 25.05.2005, 20:04:22
Post #3





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 10.05.2005

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


niestety u mnie niedziala
  1. <?php
  2.  exec(&#092;"pg_dump -Oc nazwa_bazy > plik.sql\");
  3. ?>

zreszta nawet uzycie
  1. <?php
  2. echo exec(&#092;"whoami\");
  3. ?>

nie działa
moze trzeba by cos pozmieniac w php.ini , moze safe_mode=On tutaj bruździ

Ten post edytował korad1 25.05.2005, 20:06:51
Go to the top of the page
+Quote Post
Kamis
post 26.05.2005, 15:30:18
Post #4





Grupa: Zarejestrowani
Postów: 127
Pomógł: 0
Dołączył: 13.05.2003

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


Pg_dump:

  1. <?php
  2. exec(&#092;"pg_dump -Oc nazwa_bazy > /sciezkadozapisu/plik.sql\");
  3. ?>


Dla whoami:

  1. <?php
  2. $kto = exec(&#092;"whoami\");
  3. echo &#092;"User $kto\";
  4. ?>


Działa ?


--------------------
Jeśli wiesz jak coś zrobić zrób to, jeśli nie wiesz... ryzykuj :o)
Go to the top of the page
+Quote Post
mhs
post 30.05.2005, 09:16:09
Post #5





Grupa: Zarejestrowani
Postów: 764
Pomógł: 3
Dołączył: 30.04.2003

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


Cytat(korad1 @ 2005-05-25 21:04:22)
moze trzeba by cos pozmieniac w php.ini , moze safe_mode=On tutaj bruździ

prawdopodobnie tak, w trybie bezpiecznym korzystanie funkcji exec (i innych) jest ograniczone
Go to the top of the page
+Quote Post
korad1
post 30.05.2005, 20:32:38
Post #6





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 10.05.2005

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


ustawienie safe_mode=Off spowodowalo ze
  1. <?php
  2.  echo exec(&#092;"whoami\");
  3. ?>

zaczelo dzialac, natomiast
  1. <?php
  2.  
  3. exec(&#092;"pg_dump -Oc nazwa_bazy > /sciezkadozapisu/plik.sql\");
  4.  
  5. ?>

w dalszym ciagu nie dziala
Go to the top of the page
+Quote Post
Kamis
post 1.06.2005, 00:49:28
Post #7





Grupa: Zarejestrowani
Postów: 127
Pomógł: 0
Dołączył: 13.05.2003

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


Hmm oczywiście "sciezkadozapisu" to jest np. "/home/korad1/plik.dmp"

To rozwiązanie jest oczywiście postackie bo:
a ) robiąc pierwszy raz bacqp bazy tworzysz plik.dmp i zapisujesz w nim bazę...
b ) robiąc drugi raz bacqp zapisujesz plik.dmp jeszcze raz (tamten jest "kasowany")

Wszystko przez wprowadzenie znaczka skierowania strumienia > oznacza to nadpisywanie. A >> dopisywanie smile.gif

Przydało by się również jakaś zmienna np. w php pobranie czasu (date). i w ten sposób oznaczanie plików (zamiast "plik.dmp" było by "010605.dmp").

Ten post edytował Kamis 1.06.2005, 00:49:52


--------------------
Jeśli wiesz jak coś zrobić zrób to, jeśli nie wiesz... ryzykuj :o)
Go to the top of the page
+Quote Post
korad1
post 1.06.2005, 18:44:06
Post #8





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 10.05.2005

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


Oczywiscie racja ze kolejen pliki z kopia bazy powinny byc pod innymi nazwami , co by sie nie nadpisywaly.
Natomiast sciezka dostepu jest u mnie katalog
  1. <?php
  2.  exec(&#092;"pg_dump -Oc nazwa_bazy > /var/lib/pgsql/plik.sql\");
  3. ?>


Problem w tym ze baza w dalszym ciagu nie chce sie utworzyc niezaleznie od wskazanaego katalogu
Go to the top of the page
+Quote Post
Kamis
post 2.06.2005, 00:19:36
Post #9





Grupa: Zarejestrowani
Postów: 127
Pomógł: 0
Dołączył: 13.05.2003

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


Najpierw w wierszu poleceń wydaj "pg_dump -Oc nazwa_bazy > /var/lib/pgsql/plik.sql" jeśli robi Ci plik.sql...

Coś mie się wydaje, że zamieszałeś z tymi -Oc... Poczytaj w manualu i najpierw zrób to z lini komend... podpowiem, że może trzeba kombinować z pg_dump -u passwd. Zobacz jak mhs zrobił to dla mysql i zamień to na psql smile.gif


--------------------
Jeśli wiesz jak coś zrobić zrób to, jeśli nie wiesz... ryzykuj :o)
Go to the top of the page
+Quote Post
korad1
post 2.06.2005, 06:31:20
Post #10





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 10.05.2005

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


wpisujac pg_dump.... z wiersza poleceń dziala od dawna , problem jest ze zrobieniem tego z poziomu php i funkcji exec().
Trudno zrobie to najwyzej z pozimu komend sql
  1. copy nazwa_tabeli TO 'nazwa_pliku.sql'

bo w ten sposob bez problemu zapisuje mi na dysku.

Zalozmy ze jest przycisk [kopia], uzytkowanik go naciska , po stronie serwera robia sie kopie wybranych tabel , jak zrobic zeby zapisane kopie przeslac do uzytkownika a po stornie uzytkownika pojawilo sie okienko do przegladania katalogow aby wybrac miejsce do zapisu tych kopii

Przy wysylaniu pliku na serwer wystarczy do przegladania dysku <input type=file> jak zrobic to w druga strone

Ten post edytował korad1 2.06.2005, 06:34:09
Go to the top of the page
+Quote Post
Kamis
post 2.06.2005, 20:39:53
Post #11





Grupa: Zarejestrowani
Postów: 127
Pomógł: 0
Dołączył: 13.05.2003

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


Nie no bez jaj... zrób to tak jak Ci mówię z podaniem usera i hasła do bazy... przecie jakby normalnie można było wydawać komendy tak z php bez hasła itp. to zwiększyło by to włam... pomyśl... zobacz na pierwszy przykład z mysql'a i zrób to na pgsql. Nie poddawaj się tak łatwo exclamation.gif! smile.gif


--------------------
Jeśli wiesz jak coś zrobić zrób to, jeśli nie wiesz... ryzykuj :o)
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 13.08.2025 - 22:53