Web lists-archives.com

Re: [PHP] One Button DB backup




On Sat, Nov 5, 2016 at 3:52 PM, Adam Jon Richardson <adamjonr@xxxxxxxxx>
wrote:

> On Sat, Nov 5, 2016 at 3:41 PM, Tedd Sperling <tedd@xxxxxxxxxxxx> wrote:
>
>>
>> > On Nov 5, 2016, at 10:12 AM, Paul M Foster <paulf@xxxxxxxxxxxxxxxxx>
>> wrote:
>> >
>> > On Fri, Nov 04, 2016 at 01:14:37PM -0400, Tedd Sperling wrote:
>> >
>> >> Hi gang:
>> >>
>> >> I am in need of a one-button backup of a database via a php script
>> >>
>> >> Anyone have any suggestions, comments, code?
>> >>
>> >
>> > What I like about SQLite is that it's generally a single file which can
>> > be copied out. As I recall, MySQL has a cluster of files which can be
>> > done the same way, if you can find which directory they reside in.
>> > PostgreSQL is a lost cause. The files are all in one place, but the
>> > names are weird.
>> >
>> > If you can't use the shell (from inside PHP) to run the "dump" commands
>> > for the DBMS involved, the last way I know is to use the SQL standard
>> > "information_schema" view(s) to get at the schema for the database, and
>> > then iterate over the results to fetch the individual table contents.
>> >
>> > If you're looking for an off-the-shelf solution (push button, suck
>> > data), I don't know one.
>> >
>> > Paul
>>
>> Paul:
>>
>> I can download the entire database via phpMyAdmin — it’s quite simple —
>> just export.
>>
>> I know I did it some time ago, but I can’t find the code.
>>
>> So, I was hoping someone had written a db export.
>>
>> In any event, thanks.
>>
>> Cheers,
>>
>> tedd
>> --
>> PHP General Mailing List (http://www.php.net/)
>> To unsubscribe, visit: http://www.php.net/unsub.php
>>
>>
>
> Something like this little bit of code works:
>
> $command = "mysqldump --add-drop-table -h localhost " .
>  "-u USERNAME -p PASSWORD DBNAME > FILETOPIPETO";
> $ret_val = null;
> // create current backup
> $output = system($command, $ret_val);
>

Just a few quick follow-up points on this method:

1) This approach shouldn't be used on a shared server, as the command-line
logs could be viewed by others to gain the DB credentials (not an issue in
the cases I've used this approach, as the server was only hosting one
website.)

2) I forgot that this approach requires no space between the password and
the -p argument, so it should read:
$command = "mysqldump --add-drop-table -h localhost " .
 "-u USERNAME -pPASSWORD DBNAME > FILETOPIPETO";
$ret_val = null;
// create current backup
$output = system($command, $ret_val);

Adam