Skocz do zawartości
Damian...

[Root] Skrypt na wykonanie backup przez www

Polecane posty

Chcem zeby wejsciu na skrypt php tworzy se backup.tar z folderow ktore chcem i po tym przenosi plik do /var/www napisalem takie cos ale nie dziala :(

 

<?php

$minecraft_dir = '/home/minecraft/';

system ("cd $minecraft_dir");

system ("tar -cvf backup.tar /swiat");

system ("cp backup.tar /var/www/");

echo "<a href='backup.tar'>Pobierz Backup</a>";

?>

 

jesli ktos moze pomoc bede wdzieczny :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Lepiej skorzystaj z czegoś, co zostało napisane przez ludzi mających nieco więcej wiedzy (a przy okazji zerknij w kod, może się czegoś nowego nauczysz). Parę przykładów na podobne narzędzia masz np. tutaj: http://www.hotscripts.com/category/php/scripts-programs/file-manipulation/file-backup/

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Kamikadze

Zainstaluj sobie webmina i tam możesz ustalić sobie backup do pliku lokalnego (np. tar), wrzucić na inny serwer ftp i dodatkowo ustalić sobie czas o której i w jakie dni ma się robić backup (ja u siebie ustawiłem że codziennie o 3 w nocy robi się backup całego katalogu /home na mój serwer w domu). Dodatkowo jest powiadomienie na maila.

 

 

No i możliwość ręcznego backupu (po wciśnięciu przycisku).

Edytowano przez Kamikadze (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Kamikadze

Teoretycznie nic ale taki skrypt jest mało bezpieczny.

 

 

Ja na Twoim miejscu bym zrobił to samo tylko że z SSH2 plus wysyłka na zewnętrzny FTP.

 

 

Ktoś ci wejdzie do w ten skrypt i może ci "podpierdzielić" wszystko z serwera (dane itp.)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

no chyba ze dam na haslo + sesje wtedy nie tak latwo :)

 

mozesz powiedziec co tam zle zrobilem ? i jak to poprawic?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Pokombinuj, sprawdź czy ci w ogóle działa funkcja system() np. przez echo. Jeżeli tak to sprawdź czy ci zadziała, jeżeli wpiszesz komendy ręcznie z konsoli zamiast używania php.

 

@down

O ile ściężka do folderu z minecraftem byłąby niezmienna to chyba najłatwiej zrobić skrypt w bashu.

Edytowano przez adi011 (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
mozesz powiedziec co tam zle zrobilem ? i jak to poprawic?

Trzy wywołania funkcji system są odrębnymi wywoływanymi subprocesami, których środowisko po ich wykonaniu się czyści.

Porównaj to do próby otworzenia pod windowsem pliku następującą metodą:

 

start > uruchom > cd C:\moje_pliki\ > [ok]

start > uruchom > notepad moj_plik.txt [ok]

 

Żeby to poprawić, to sobie napisz skrypt bashowy gdzie zawrzesz te trzy linijki,

ewentualnie pokombinuj, jak by tu te trzy polecenia odpalić przy pomocy jednego wywołania funkcji system().

Pomocne ci będą wszelakiego rodzaju znaki określane po polsku jako interpunkcyjne.

 

Powodzenia :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

No i może skorzystaj ze słownika ortograficznego? Przyda ci się przy zadawaniu kolejnych pytań.

  • Upvote 1

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Kamikadze

Może coś takiego zadziała:

 

 

 

<?php

$minecraft_dir = '/home/minecraft/';

system ("cd $minecraft_dir && tar -cvf backup.tar /swiat && cp backup.tar /var/www/");

echo "<a href='backup.tar'>Pobierz Backup</a>";

?>

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Poszukałem trochę w internecie i udało mi się coś stworzyć (działa). A więc tak

visudo

na końcu dopisz

www-data    ALL=NOPASSWD:   /sciezka/do/pliku.sh

(ja zrestartowałem jeszcze VPS, nie wiem czy trzeba bo nie sprawdzałem czy działa bez restartu).

Teraz stwórz plik .php np. backup.php, i tam wpisz

<?php
shell_exec("sudo /sciezka/do/pliku.sh");
echo "<a href='test.rar'>Pobierz Backup</a>";
?>

W przeglądarce odpal ten plik .php i boom działa :)

Myślę że pomogłem

 

Ps. Blueman, mógłbyś napisać czemu mnie zminusowałeś :)?

Edytowano przez Gość (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Ps. Blueman, mógłbyś napisać czemu mnie zminusowałeś ?

Może nie jestem Blueman, ale ode mnie minus za wybitnie szkodliwą radę.

Do wykonywania backupu nie są potrzebne uprawnienia root'a.

A wywoływanie via sudo takiego skryptu (szczególnie dostępnego do zapisu dla osób postronnych) to proszenie się o problemy. Poważne problemy.

  • Upvote 1

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Dzieki wszsytkim za pomoc. A i przepraszam za ortografie ale mieszkam kilka lat w UK :P

 

5 lat temu co drugi miał dys-cośtam. Teraz co drugi zagranicą od lat.. ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Kamikadze

Ja mam XP po angielsku i jakoś mogę pisać po polsku...

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Swoją drogą podejrzewam że błąd z pierwszego posta może być w lini:

system ("tar -cvf backup.tar /swiat");

a powinno chyba być:

system ("tar -cvf backup.tar ./swiat");

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość
Temat jest zablokowany i nie można w nim pisać.

×