vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   Programming Articles (https://vborg.vbsupport.ru/forumdisplay.php?f=188)
-   -   Site and mySQL backups via cron (https://vborg.vbsupport.ru/showthread.php?t=169550)

Jase2 02-02-2008 10:00 PM

Site and mySQL backups via cron
 
Site Backup via Cron:

Code:

<?
$datestamp = date("Y-m-d_H-i-s");      // Current date to append to filename of backup file in format of YYYY-MM-DD

/* CONFIGURE THE FOLLOWING VARIABLES TO MATCH YOUR SETUP */
$filename= "Full_Account_Backup-$datestamp.tar";  // The name (and optionally path) of the dump file
$ftp_server = "123.123.123.123";      // Name or IP. Shouldn't have any trailing slashes and shouldn't be prefixed with ftp://
$ftp_port = "21";  // FTP port - blank defaults to port 21
$ftp_username = "anonymous";      // FTP account username
$ftp_password = "";      // FTP account password - blank for anonymous

$filename = "/home/YOURACCOUNT/" . $filename . ".gz";

$command = "tar cvf ~/$filename ~/*";
$result = exec($command);

$command = "gzip -9 -S .gz ~/$filename";
$result = exec($command);

// set up basic connection
$ftp_conn = ftp_connect($ftp_server);

// Turn PASV mode on or off

ftp_pasv($ftp_conn, false);

// login with username and password
$login_result = ftp_login($ftp_conn, $ftp_username, $ftp_password);

// check connection
if ((!$ftp_conn) || (!$login_result))
{
  echo "FTP connection has failed.";
  echo "Attempted to connect to $ftp_server for user $ftp_username";
  exit;
}
else
{
  echo "Connected to $ftp_server, for user $ftp_username";
}

// upload the file
$upload = ftp_put($ftp_conn, "foo.tar.gz", $filename, FTP_BINARY);

// check upload status
if (!$upload)
{
  echo "FTP upload has failed.";
}
else
{
  echo "Uploaded $filename to $ftp_server.";
}

// close the FTP stream
ftp_close($ftp_conn);

unlink($filename);  //delete the backup file from the server
?>


----------------------------------------
MySQL backup via cron - Emailed to You:

Code:

<?
$datestamp = date("Y-m-d");      // Current date to append to filename of backup file in format of YYYY-MM-DD

/* CONFIGURE THE FOLLOWING SEVEN VARIABLES TO MATCH YOUR SETUP */
$dbuser = "";            // Database username
$dbpwd = "";            // Database password
$dbname = "";            // Database name. Use --all-databases if you have more than one
$filename= "backup-$datestamp.sql.gz";  // The name (and optionally path) of the dump file
$to = "you@remotesite.com";      // Email address to send dump file to
$from = "you@yourhost.com";      // Email address message will show as coming from.
$subject = "MySQL backup file";      // Subject of email

$command = "mysqldump -u $dbuser --password=$dbpwd $dbname | gzip > $filename";
$result = passthru($command);

$attachmentname = array_pop(explode("/", $filename));  // If a path was included, strip it out for the attachment name

$message = "Compressed database backup file $attachmentname attached.";
$mime_boundary = "<<<:" . md5(time());
$data = chunk_split(base64_encode(implode("", file($filename))));

$headers = "From: $from\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: multipart/mixed;\r\n";
$headers .= " boundary=\"".$mime_boundary."\"\r\n";

$content = "This is a multi-part message in MIME format.\r\n\r\n";
$content.= "--".$mime_boundary."\r\n";
$content.= "Content-Type: text/plain; charset=\"iso-8859-1\"\r\n";
$content.= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$content.= $message."\r\n";
$content.= "--".$mime_boundary."\r\n";
$content.= "Content-Disposition: attachment;\r\n";
$content.= "Content-Type: Application/Octet-Stream; name=\"$attachmentname\"\r\n";
$content.= "Content-Transfer-Encoding: base64\r\n\r\n";
$content.= $data."\r\n";
$content.= "--" . $mime_boundary . "\r\n";

mail($to, $subject, $content, $headers);

unlink($filename);  //delete the backup file from the server
?>

----------------------------------------

MySQL backup via cron - FTPed to You
:

Code:

<?
$datestamp = date("Y-m-d");      // Current date to append to filename of backup file in format of YYYY-MM-DD

/* CONFIGURE THE FOLLOWING THREE VARIABLES TO MATCH YOUR SETUP */
$dbuser = "";      // Database username
$dbpwd = "";        // Database password
$dbname = "";      // Database name. Use --all-databases if you have more than one
$filename= "backup-$datestamp.sql.gz";  // The name (and optionally path) of the dump file

$command = "mysqldump -u $dbuser --password=$dbpwd $dbname | gzip > $filename";
$result = passthru($command);

/* CONFIGURE THE FOLLOWING FOUR VARIABLES TO MATCH YOUR FTP SETUP */
$ftp_server = "";  // Shouldn't have any trailing slashes and shouldn't be prefixed with ftp://
$ftp_port = "21";            // FTP port - blank defaults to port 21
$ftp_username = "anonymous";        // FTP account username
$ftp_password = "";        // FTP account password - blank for anonymous

// set up basic connection
$ftp_conn = ftp_connect($ftp_server);

// Turn PASV mode on or off
ftp_pasv($ftp_conn, false);

// login with username and password
$login_result = ftp_login($ftp_conn, $ftp_username, $ftp_password);

// check connection
if ((!$ftp_conn) || (!$login_result))
{
  echo "FTP connection has failed.";
  echo "Attempted to connect to $ftp_server for user $ftp_username";
  exit;
}
else
{
  echo "Connected to $ftp_server, for user $ftp_username";
}

// upload the file
$upload = ftp_put($ftp_conn, $filename, $filename, FTP_BINARY);

// check upload status
if (!$upload)
{
  echo "FTP upload has failed.";
}
else
{
  echo "Uploaded $filename to $ftp_server.";
}

// close the FTP stream
ftp_close($ftp_conn);

unlink($filename);  //delete the backup file from the server
?>


All these scripts should have the .php extension, and the file should have 755 permissions.

Don't forget to change the first few variables to the beginning of the scripts to match your site details. Also note, that you will need to set-up a cron job via your cPanel, with a path to the script such as "php /home/username/path-to-the-php-script" (without the "" and replacing path-to-the-php-script with your actual path to it).

That's it, enjoy!

Regards Jason :)

tazzarkin 07-04-2008 03:17 PM

Thank you for this. I don't understand why no one ever posted a thank you. Well, anyways, this will help a lot.

kp^ 07-15-2008 07:15 PM

Yes, thank you!

Markowitch 07-30-2008 04:20 PM

How do you close your board during the backup?

jkcerda 01-14-2009 04:02 AM

coooooool

Jasem 03-08-2009 02:13 PM

Excellent, thank you!

sheppardzwc 05-16-2009 09:28 PM

Just to bump, THANKS! This is exactly what I was looking for.

Just a question -- how can I fix this?:

will@rodan:/tth/cron$ php backup.php

Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 474195519 bytes) in /tth/cron/backup.php on line 20

dbembibre 05-18-2009 07:10 AM

Quote:

Originally Posted by sheppardzwc (Post 1812107)
Just to bump, THANKS! This is exactly what I was looking for.

Just a question -- how can I fix this?:

will@rodan:/tth/cron$ php backup.php

Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 474195519 bytes) in /tth/cron/backup.php on line 20

Increase memory_limit in php.ini

ubcforums 05-21-2009 02:29 AM

thanks..this saves lot of time :)

squishi 05-22-2009 01:07 PM

Thanks for the code.
Though, a mysql backup by email? I rather not receive 1GB of email attachments. :-)


All times are GMT. The time now is 12:31 PM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01280 seconds
  • Memory Usage 1,749KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (3)bbcode_code_printable
  • (1)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (1)pagenav_pagelink
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (10)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • pagenav_page
  • pagenav_complete
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete