Return to Snippet

Revision: 42611
at March 8, 2011 05:48 by leoj3n


Updated Code
<?php
/* 
 * fullbackup.php
 * This is a php script to trigger a cpanel full backup to the servers home directory OR a remote ftp server
 * KEEP ACCESS TO THIS FILE SECURE!
 * Because this file contains passwords, it is safest located in the highest level root above /www/ or /public_html/
*/

$options = array( 
	'cpanel'	=> array( 
					'user' 		=> '', 					// cpanel username
					'pass' 		=> '', 					// cpanel password
					'domain'	=> '.com', 				// address to server running cpanel
					'skin'		=> 'rvskin' ), 			// 'rvskinlight' for cpanel at https://example.com:2083/frontend/rvskinlight/index.html
	'ftp'		=> array( 
					'enabled'	=> false, 				// true: backup to a remote server using settings below, false: ignore settings below and backup to home directory
					'user' 		=> '', 					// ftp username
					'pass' 		=> '', 					// ftp password
					'host' 		=> 'ftp.example.com', 	// address to ftp server
					'mode' 		=> 'passiveftp', 		// must be 'ftp', 'passiveftp' (most common), or 'scp'
					'port' 		=> '21', 				// usually '21' for passiveftp
					'dir' 		=> '' ), 				// (optional) existing subdirectory on ftp server
	'email' 	=> '@gmail.com', 						// (optional) an email will be sent to this address when the backup is finished
	'ssl' 		=> false, 								// must be true if this script is not on the same server as cpanel
	'log' 		=> false ); 							// output error/success messages to cron log?

$socket = fsockopen( ($options['ssl'] ? 'ssl:' : '') . $options['cpanel']['domain'], ($options['ssl'] ? 2083 : 2082) );

if( !$socket ) {
	if ($options['log']) echo "Failed to open socket connection... Exiting script!\n"; // cron log
	exit; // exit script
}

// generate specific query for remote server or home directory
if ($options['ftp']['enabled'])
	$query = 'dest=' . $options['ftp']['mode'] .
		'&server=' . $options['ftp']['host'] . 
		'&user=' . $options['ftp']['user'] . 
		'&pass=' . $options['ftp']['pass'] . 
		'&port=' .  $options['ftp']['port']. 
		'&rdir=' . $options['ftp']['dir'];
else
	$query = 'dest=homedir';
// tack on the variables required by any query
$query .= '&email=' . $options['email'] .
	'&submit=Generate Backup';

// simluate post to 'dofullbackup.html' in cpanel
fwrite( $socket, 'POST /frontend/' . $options['cpanel']['skin'] . '/backup/dofullbackup.html?' . $query . " HTTP/1.0
" );
fwrite( $socket, 'Host: ' . $options['cpanel']['domain'] . "
" );
fwrite( $socket, 'Authorization: Basic ' . base64_encode( $options['cpanel']['user'] . ':' . $options['cpanel']['pass'] ) . "
" );
fwrite( $socket, "Connection: Close

" );
	
$response = stream_get_contents( $socket ); // record cpanel response

if ($options['log']) echo $response; // cron log

fclose($socket);

?>

Revision: 42610
at March 8, 2011 05:47 by leoj3n


Updated Code
<?php
/* 
 * fullbackup.php
 * This is a php script to trigger a cpanel full backup to the servers home directory OR a remote ftp server
 * KEEP ACCESS TO THIS FILE SECURE!
 * Because this file contains passwords, it is safest located in the highest level root above /www/ or /public_html/
*/

/*
$options = array( 
	'cpanel'	=> array( 
					'user' 		=> '', 					// cpanel username
					'pass' 		=> '', 					// cpanel password
					'domain'	=> '.com', 				// address to server running cpanel
					'skin'		=> 'rvskin' ), 			// 'rvskinlight' for cpanel at https://example.com:2083/frontend/rvskinlight/index.html
	'ftp'		=> array( 
					'enabled'	=> false, 				// true: backup to a remote server using settings below, false: ignore settings below and backup to home directory
					'user' 		=> '', 					// ftp username
					'pass' 		=> '', 					// ftp password
					'host' 		=> 'ftp.example.com', 	// address to ftp server
					'mode' 		=> 'passiveftp', 		// must be 'ftp', 'passiveftp' (most common), or 'scp'
					'port' 		=> '21', 				// usually '21' for passiveftp
					'dir' 		=> '' ), 				// (optional) existing subdirectory on ftp server
	'email' 	=> '@gmail.com', 						// (optional) an email will be sent to this address when the backup is finished
	'ssl' 		=> false, 								// must be true if this script is not on the same server as cpanel
	'log' 		=> false ); 							// output error/success messages to cron log?
*/

$socket = fsockopen( ($options['ssl'] ? 'ssl:' : '') . $options['cpanel']['domain'], ($options['ssl'] ? 2083 : 2082) );

if( !$socket ) {
	if ($options['log']) echo "Failed to open socket connection... Exiting script!\n"; // cron log
	exit; // exit script
}

// generate specific query for remote server or home directory
if ($options['ftp']['enabled'])
	$query = 'dest=' . $options['ftp']['mode'] .
		'&server=' . $options['ftp']['host'] . 
		'&user=' . $options['ftp']['user'] . 
		'&pass=' . $options['ftp']['pass'] . 
		'&port=' .  $options['ftp']['port']. 
		'&rdir=' . $options['ftp']['dir'];
else
	$query = 'dest=homedir';
// tack on the variables required by any query
$query .= '&email=' . $options['email'] .
	'&submit=Generate Backup';

// simluate post to 'dofullbackup.html' in cpanel
fwrite( $socket, 'POST /frontend/' . $options['cpanel']['skin'] . '/backup/dofullbackup.html?' . $query . " HTTP/1.0
" );
fwrite( $socket, 'Host: ' . $options['cpanel']['domain'] . "
" );
fwrite( $socket, 'Authorization: Basic ' . base64_encode( $options['cpanel']['user'] . ':' . $options['cpanel']['pass'] ) . "
" );
fwrite( $socket, "Connection: Close

" );
	
$response = stream_get_contents( $socket ); // record cpanel response

if ($options['log']) echo $response; // cron log

fclose($socket);

?>

Revision: 42609
at March 8, 2011 05:27 by leoj3n


Initial Code
<?php
/* 
 * fullbackup.php
 * This is a php script to trigger a cpanel full backup to the servers home directory OR a remote ftp server
 * KEEP ACCESS TO THIS FILE SECURE!
 * Because this file contains passwords, it is safest located in the highest level root above /www/ or /public_html/
*/

$options = array( 
	'cpanel' 	=> array( 
				'user' 		=> '', 					// cpanel username
				'pass' 		=> '', 					// cpanel password
				'domain'	=> '.com', 				// address to server running cpanel
				'skin'		=> 'rvskin' ), 			// 'rvskinlight' for cpanel at https://example.com:2083/frontend/rvskinlight/index.html
	'ftp' 	=> array( 
				'enabled'	=> false, 				// true: backup to a remote server using settings below, false: ignore settings below and backup to home directory
				'user' 		=> '', 					// ftp username
				'pass' 		=> '', 					// ftp password
				'host' 		=> 'ftp.example.com', 	// address to ftp server
				'mode' 		=> 'passiveftp', 		// must be 'ftp', 'passiveftp' (most common), or 'scp'
				'port' 		=> '21', 				// usually '21' for passiveftp
				'dir' 		=> '' ), 				// (optional) existing subdirectory on ftp server
	'email' => '@gmail.com', 						// (optional) an email will be sent to this address when the backup is finished
	'ssl' 	=> false, 								// must be true if this script is not on the same server as cpanel
	'log' 	=> false ); 							// output error/success messages to cron log?

$socket = fsockopen( ($options['ssl'] ? 'ssl:' : '') . $options['cpanel']['domain'], ($options['ssl'] ? 2083 : 2082) );

if( !$socket ) {
	if ($options['log']) echo "Failed to open socket connection... Exiting script!\n"; // cron log
	exit; // exit script
}

// generate specific query for remote server or home directory
if ($options['ftp']['enabled'])
	$query = 'dest=' . $options['ftp']['mode'] .
		'&server=' . $options['ftp']['host'] . 
		'&user=' . $options['ftp']['user'] . 
		'&pass=' . $options['ftp']['pass'] . 
		'&port=' .  $options['ftp']['port']. 
		'&rdir=' . $options['ftp']['dir'];
else
	$query = 'dest=homedir';
// tack on the variables required by any query
$query .= '&email=' . $options['email'] .
	'&submit=Generate Backup';

// simluate post to 'dofullbackup.html' in cpanel
fwrite( $socket, 'POST /frontend/' . $options['cpanel']['skin'] . '/backup/dofullbackup.html?' . $query . " HTTP/1.0
" );
fwrite( $socket, 'Host: ' . $options['cpanel']['domain'] . "
" );
fwrite( $socket, 'Authorization: Basic ' . base64_encode( $options['cpanel']['user'] . ':' . $options['cpanel']['pass'] ) . "
" );
fwrite( $socket, "Connection: Close

" );
	
$response = stream_get_contents( $socket ); // record cpanel response

if ($options['log']) echo $response; // cron log

fclose($socket);

?>

Initial URL
http://www.justin-cook.com/wp/2006/12/27/automatic-cpanel-backup-domain-mysql-with-cron-php/

Initial Description
This is a php script to trigger a cpanel full backup to the servers home directory OR a remote ftp server

Initial Title
Automatic cPanel backup using cron

Initial Tags
backup

Initial Language
PHP