aiuto con mysqldump

Silen

Utente Attivo
24 Nov 2008
64
0
0
silen.netsons.org
salve!
ho provato questo interessantissimo script per fare i backup del db in modo automatico senza andare in PhpMyAdmin
ma mi riporta questo errore
Codice:
Warning: filesize() [function.filesize]: stat failed for /Backups/2009-06-20_18:31.sql in /home/silennet/public_html/Backups/backup.php on line 13
Backup di silennet_silen eseguito con successo.
e mi manda persino la mail, però di file .sql nella directory non c'è nemmeno l'ombra :crying:
ovviamente dalla riga 13 in poi c'è questo
PHP:
$dimensione=filesize($backup);
switch ($dimensione) {
case ($dimensione>=1048576):
$dimensione=round($dimensione/1048576)." MB"; break;
case ($dimensione>=1024):
$dimensione=round($dimensione/1024)." KB"; break;
default: $dimensione=$dimensione." bytes"; break;

un aiutino? :book:

credo che il mio hosting permetta l'esecuzione del dump, perché quello che avevo prima come hostname dava "localhost" mentre questo che ho adesso mi da questo indirizzo esterno "mysql.netsons.com" dico giusto o una cavolata? :p comunque l'host precedente mi diceva proprio che la funzione non era consentita nell'errore, mentre ora no

mi sciogliete qualche dubbio?:confused:
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
prova a mettere prima di filesize

file_exists($backup)

facendo un if

PHP:
if(file_exists($backup)){
//quello che devi fare
}else{
echo "il file non esiste";
}

così ti accorgi se hai creato o no il file, se no l'errore non è in filesize ma altrove
 

Silen

Utente Attivo
24 Nov 2008
64
0
0
silen.netsons.org
@borgo_italia
grazie dell'aiuto, avevo già il sospetto che non creasse il file, infatti
mi manda persino la mail, però di file .sql nella directory non c'è nemmeno l'ombra :crying:
ora ne ho la certezza, perché anche dice di aver spedito la mail restituisce l'output "il file non esiste"
quindi? cosa devo fare per farglielo creare? :confused: io ho seguito alla lettera quello script :book:

ho modificato il codice così intanto
PHP:
<?php
$hostname="nomehosting";		//Nome Host
$username="mionomeuser";		//Nome Utente
$password="miapassword";		//Password Database
$database="miodatabase";		//Nome Database

$gg=date("Y-m-d");
$hh=date("H:i");
$backup="/Backups/".$gg."_".$hh.".sql";

system("mysqldump --user=$username --password=$password --host=$hostname $database > $backup", $res);

if (file_exists($backup)) {
unlink($backup);
$dimensione=filesize($backup);
switch ($dimensione) {
case ($dimensione>=1048576):
$dimensione=round($dimensione/1048576)." MB"; break;
case ($dimensione>=1024):
$dimensione=round($dimensione/1024)." KB"; break;
default: $dimensione=$dimensione." bytes"; break;
}
$email="mioindirizzoemail";
$headers="FROM: $email\n";
$headers.="Return-Path: $email\n";
ini_set("sendmail_from", $email);
$oggetto="Backup eseguito!";
$testo = "Backup di ".$database." eseguito con successo.\n\n";
$testo.="Sql: ".$res."\n";
$testo.="Percorso: ".$backup."\n";
$testo.="Dimensione: ".$dimensione."\n";
$testo.="Eseguito il: ".date("l d F Y @ H:i")."";
mail($email, $oggetto , $testo, $headers);
echo "Backup di ".$database." eseguito con successo.";
} else {
echo "Il file non esiste!";
}
?>
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao, scusa una cosa, nel tuo scrip non vedo la riga

system(
"mysqldump --user=$user --password=$password --host=$host $database > $bk",$res
);
 

Silen

Utente Attivo
24 Nov 2008
64
0
0
silen.netsons.org
hai ragione borgo_italia :eek:
ora ho postato il codice completo della pagina backup.php :D (ovviamente omettendo i dati "sensibili") e aggiungo che la cartella Backup si trova nella root dello spazio FTP, non so se può essere un'informazione utile
 
Ultima modifica:

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
eccomi qui, scusate ma il processo di santificazione andava per le lunghe :)
Per poter eseguire lo script è necessario che la configurazione del proprio ambiente php supporti l'utilizzo del comando system, diversamente lo script non verrà eseguito.
 

Silen

Utente Attivo
24 Nov 2008
64
0
0
silen.netsons.org
scusa la domanda niubba ma, posso saperlo con un comando tipo phpinfo() :confused:
e quest'errore
PHP:
Warning: filesize() [function.filesize]: stat failed for /Backups/2009-06-20_18:31.sql in /home/silennet/public_html/Backups/backup.php on line 13
è relativo o non c'entra nulla?
ultima domanda, poi mi sotterro :p
mi potreste indicare uno script alternativo da studiarmi per automatizzare i backups? :book:
grazie ancora a tutti :fonzie:
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
scusa la mia ignoranza ,eliox, vampira permettendo, potrà darti una risposta, mentre io ti faccio una domanda:
ti da errorre alla riga
$dimensione=filesize($backup);
giusto?
ma come fa a prendere la dimensione di un file che hai eliminato
unlink($backup);
?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
come il solito spera in sant'eliox, come detto non sono un expertissimo, l'unico dubbio che ho è che prima cancello il file (unlike), poi lo "misuro".
se c'e comunque a qualcosa dovrebbe servire:confused:
se stai facendo delle prove (non su veri files) prova a commentarlo e vedi che succede, oppure a metterlo dopo il filesize
tentar (su file fasulli) non nuoce
 

Silen

Utente Attivo
24 Nov 2008
64
0
0
silen.netsons.org
intanto grazie mille del suggerimento borgo_italia :fonzie:
spostando quel comando dopo il filesize l'errore è sparito :tifoso: ed è già qualcosa :) ora il codice dello script si presenta così
PHP:
<?php
$hostname="nomehosting";		//Nome Host
$username="mionomeuser";		//Nome Utente
$password="miapassword";		//Password Database
$database="miodatabase";		//Nome Database

$gg=date("Y-m-d");
$hh=date("H:i");
$backup="../Backups/".$gg."_".$hh.".sql";

system("mysqldump --user=$username --password=$password --host=$hostname $database > $backup", $res);

if (file_exists($backup)) {
$dimensione=filesize($backup);
switch ($dimensione) {
case ($dimensione>=1048576):
$dimensione=round($dimensione/1048576)." MB"; break;
case ($dimensione>=1024):
$dimensione=round($dimensione/1024)." KB"; break;
default: $dimensione=$dimensione." bytes"; break;
unlink($backup);
}
$email="mioindirizzoemail";
$headers="FROM: $email\n";
$headers.="Return-Path: $email\n";
ini_set("sendmail_from", $email);
$oggetto="Backup eseguito!";
$testo = "Backup di ".$database." eseguito con successo.\n\n";
$testo.="Sql: ".$res."\n";
$testo.="Percorso: ".$backup."\n";
$testo.="Dimensione: ".$dimensione."\n";
$testo.="Eseguito il: ".date("l d F Y @ H:i")."";
mail($email, $oggetto , $testo, $headers);
echo "Backup di ".$database." eseguito con successo.";
} else {
echo "Il file non esiste!";
}
?>
a questo punto, quando lancio il batch, mi riporta soltanto che il file non esiste, quindi attendo la prossima apparizione del Sant'Eliox :D

se poi qualcuno nel frattempo mi suggerisce come fare a sapere se il comando dump è abilitato o no,
oppure anche un metodo alternativo per automatizzare il backup, gliene sarei davvero riconoscente :love:
 
Ultima modifica:

Trogo

Utente Attivo
11 Gen 2008
370
0
0
43
Sanremo
Sapere l'elenco delle funzioni disabilitate è semplice. Basta scrivere uno script così:

PHP:
<?php

echo ini_get('disable_functions');

?>

Ed è moooolto probabile che trovi la funzione system disabilitata (e non solo quella)...
 

Silen

Utente Attivo
24 Nov 2008
64
0
0
silen.netsons.org
grazie mille millissimissimo Trogo :fonzie:
l'ho provata subito ed è venuto fuori questo
PHP:
show_source, passthru, exec, proc_open, allow_url_fopen
quindi mi pare che system sia abilitata, o sbaglio? :confused:
 

Trogo

Utente Attivo
11 Gen 2008
370
0
0
43
Sanremo
Si è esatto, direi che è abilitata. A questo punto potresti provare a vedere se il comando ritorna un errore di qualche tipo. Prova con uno script così:

PHP:
<?php

$stdout_err = system("mysqldump 2>&1", $res);  

echo "<div>Codice di ritorno: " . $res . "</div>";
echo "<div>" . $stdout_err . "</div>";

?>

e vediamo che dice...
 

Silen

Utente Attivo
24 Nov 2008
64
0
0
silen.netsons.org
ok Trogo, ti ringrazio di nuovo :) ho fatto, e questo è il risultato
PHP:
Usage: mysqldump [OPTIONS] database [tables] OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...] OR mysqldump [OPTIONS] --all-databases [OPTIONS] For more options, use mysqldump --help
Codice di ritorno: 1
For more options, use mysqldump --help
solo che io non ho la più pallida idea di che significhi, spero ti sia di aiuto :)
 

Trogo

Utente Attivo
11 Gen 2008
370
0
0
43
Sanremo
Sicuramente è di aiuto nel senso che così abbiamo testato la possibilità di utilizzare mysqldump. Aggiungere questo 2>&1 dopo il comando è servito a redirezionare lo stderr sullo sdtout e vedere il messaggio che ritorna.
Visto che ha ritornato l'help di mysqldump, vuol dire che puoi lanciare l'eseguibile da PHP.

Guardando il codice ho notato questo:
PHP:
$backup="/Backups/".$gg."_".$hh.".sql";

Implica un path assoluto e mi sembra molto strano che su un sito in hosting tu abbia accesso ad una cartella sotto radice. E' possibile che il problema sia il path. Prova ad usare solo il nome del file:
PHP:
$backup = $gg . "_" . $hh . ".sql";
 

Silen

Utente Attivo
24 Nov 2008
64
0
0
silen.netsons.org
Trogo hai ragionissima!!!!!!!!! :fonzie:
impuntandomi a cercare di capire il perché dell'errore che mi dava sulla dimensione,
non ho considerato il percorso di salvataggio del backup, sono proprio una tonna :p

adesso ho aggiunto i "puntini" per far diventare il path relativo e finalmente funziona senza errori:
lo script viene eseguito e il file di backup uppato nella cartella, e contestualmente mi viene inotrata la mail

però ci dev'essere qualcos'altro che non va, perché il backup fatto con PHPMyAdmin è di quasi cinque mega,
mentre quello che viene fuori con questo batch è due mega e mezzo abbondanti; mi sono detta che magari
era dovuto al metodo di backup diverso, così ho provato a scaricarlo dal server ftp per vedere se mancava
qualche tabella, ma non me lo fa downloadare, dice che non è stato possibile aprire il file in scrittura, anche
se la cartella ha i permessi impostati a 755, e nemmeno se li cambio a 777 :confused: però, sempre tramite ftp posso
aprirlo direttamente dal server e visualizzarlo, e pare proprio che il backup sia completo

poi ho una domanda: a che serve la variabile $res? nella mail mi riporta come valore sempre zero, è giusto così?

intanto ringrazio borgo_italia e Trogo per l'aiuto
poi ho corretto il codice con le ultime modifiche
e scusate se le mie domande sono stupide ^^''
 
Discussioni simili
Autore Titolo Forum Risposte Data
L Aiuto con DataGridView Visual Basic 1
K Aiuto con file audio in html HTML e CSS 1
R Aiuto con le query MS Access 2
G Aiuto con htaccess e rewriterule PHP 0
M Aiuto con inserimento immagini WordPress 6
G Aiuto HTML, collegamento con un bottone a una <div> di un' altra pagna HTML e CSS 5
motleyrulez Aiuto con un ciclo PHP 0
maicol07 Python - Tkinter - Aiuto con pulsanti e tuple Programmazione 0
L [Javascript] aiuto non riesco a inviare in get dal server web locale su altervista con httpRequest Javascript 0
N Mi serve aiuto con "Snake". C/C++ 1
F ciao, sono ferro e ho bisogno di aiuto per problemi con la mail di alice.it Presentati al Forum 1
M Aiuto: problema con il mio TP-Link range extender Reti LAN e Wireless 0
L [HTML] Aiuto con immagini random HTML e CSS 1
S PHP: Aiuto con upload immagini che si auto tuotano PHP 24
A scambio lavoro per aiuto con android Sviluppo app per Android 0
I Form/aree di testo con input da lista di nomi!Chiedo aiuto!! HTML e CSS 3
M Aiuto con script di ricerca video youtube data api v3 Javascript 1
I attributo con IF aiuto PHP 3
ecosito Aiuto con la traduzione in italiano per capire come installare questo JavaScript jQuery 0
F Aiuto: impossibile la mappatura di un'immagine con Dreamweaver CC2015 HTML e CSS 8
D aiuto con query PHP 1
J Aiuto per localstorage con jquery/js/json Javascript 4
Marco_88 Aiuto con istruzione INSERT Database 8
M Aiuto su come procedere con un ciclo foreach PHP 4
R Redirect 301 con htaccess non funziona. Aiuto! PHP 1
I database con visual studio 2012 aiuto Database 0
L Aiuto con l'html di una pagina web HTML e CSS 0
V Aiuto con swipe e DB Sviluppo app per Android 2
N Aiuto con html nascondere i media HTML e CSS 4
T Aiuto con script PHP PHP 0
N ciao a tutti ho bisogno di aiuto con l'estensione mysqli?? MySQL 0
I Aiuto uso Nivo Slider con javascript jQuery 2
L problema con la funzione header!!! AIUTO! PHP 24
S Aiuto con PHP! PHP 4
D Aiuto Ajax da PHP con codifica json Ajax 0
K AIUTO con Apache WEBDAV E MOD_DAV Joomla 0
S aiuto con le query PHP 0
D aiuto con pag di login in php PHP 1
S [RISOLTO]aiuto, non riesco afar funzionare il camp odi ricerca per un DB con PHP PHP 5
S aiuto con query MySQL 10
P Aiuto con onclick Javascript 2
W Aiuto per menù fatto con immagini e relativo sottomenù HTML e CSS 2
D Chiedo aiuto con questo codice PHP 0
L Sito con mamp AIUTO PHP 12
M Aiuto con questo script PHP 21
D Aiuto con Ajax e pagine incluse nei DIV Ajax 1
L verifica mail in db con jquery e ajax. Aiuto jQuery 9
P Aiuto con Prestashop CMS (Content Management System) 3
Z Aiuto con l'input PHP 0
P Aiuto con query "SELECT" PHP 6

Discussioni simili