Code: Select all
<?PHP
// PHP FTP Backup
// By Jasen Lawrence
// http://neorush.wisertechnologies.com
// webmaster@wisertechnologies.com
error_reporting(0);
$days_to_keep_logs = 7;
$curr_time = time();
$days_to_keep_logs = date("Y-m-d",$curr_time - ((($days_to_keep_logs*24)*60)*60));
echo "Running backup for site ".$main_vars["site_name"]."<BR>\n";
$mysql_host = $main_vars["mysql_host"];
$mysql_username = $main_vars["mysql_username"];
$mysql_password = $main_vars["mysql_password"];
$ftp_name = $main_vars["site_name"];
$ftp_host = $main_vars["ftp_host"];
$ftp_username = $main_vars["ftp_username"];
$ftp_password = $main_vars["ftp_password"];
$ftp_start_dir = $main_vars["ftp_start_dir"];
//*****FTP BACKUP PORTION*****\\
$curr_date = date("Y-m-d");
$backup_dir = "/usr/local/apache2/htdocs/backup/";
mkdir($backup_dir."temp");
mkdir($backup_dir.$curr_date);
$backup_dir = "/usr/local/apache2/htdocs/backup/temp/";
$ftp_mode = FTP_ASCII; //either FTP_BINARY or FTP_ASCII
$directory_list = Array();
// set up basic connection
$ftp_connection = ftp_connect($ftp_host);
// login with username and password
$login_result = ftp_login($ftp_connection, $ftp_username, $ftp_password);
// check connection
if ((!$ftp_connection) || (!$login_result)){
echo "FTP connection has failed!<BR>\n";
echo "Attempted to connect to ".$ftp_host." for user ".$ftp_username.".<BR>\n";
}
else {
echo "Connected to $ftp_host, for user $ftp_username";
}
echo "PWD: " . ftp_pwd($ftp_connection) . "<BR>\n";
//try to change the directory to defalut $ftp_start_dir
if (ftp_chdir($ftp_connection, $ftp_start_dir)) {
$curr_dir = ftp_pwd($ftp_connection);
echo "Current directory is now: ".$curr_dir."<BR>\n";
array_push($directory_list, $curr_dir);
}
else {
echo "Couldn't change directory to ".$ftp_start_dir." on remote server.<BR>\n";
}
for($j = 0; ISSET($directory_list[$j]); $j++){
if (ftp_chdir($ftp_connection, $directory_list[$j])) {
$curr_dir = ftp_pwd($ftp_connection);
echo "Current directory is now: ".$curr_dir."<BR>\n";
}
else {
echo "Could not change directory to: ".$directory_list[$j];
}
$curr_file_list = ftp_nlist($ftp_connection, ".");
$curr_dir = $directory_list[$j];
for($i = 0; ISSET($curr_file_list[$i]); ++$i){
$to_save_to = "/".str_ireplace($ftp_start_dir,"",$curr_dir)."/";
$get_file = ftp_get($ftp_connection, $backup_dir.$to_save_to.$curr_file_list[$i], $curr_dir."/".$curr_file_list[$i], $ftp_mode);
if(!$get_file){
echo "Creating Directory: ".$curr_file_list[$i]."<BR>\n";
mkdir($backup_dir.$to_save_to.$curr_file_list[$i]);
if(!is_dir($backup_dir.$to_save_to.$curr_file_list[$i])){
echo "Fatal Error: Could not create directory ".$backup_dir.$to_save_to.$curr_file_list[$i];
}
else{
array_push($directory_list, $curr_dir."/".$curr_file_list[$i]);
}
}
else{
if(!file_exists($backup_dir.$to_save_to.$curr_file_list[$i])){
echo "File ".$backup_dir.$curr_file_list[$i]." does not exist. Trying to download again.<BR>\n";
$get_file = ftp_get($ftp_connection, $backup_dir.$to_save_to.$curr_file_list[$i], $curr_dir."/".$curr_file_list[$i], $ftp_mode);
if(!file_exists($backup_dir.$to_save_to.$curr_file_list[$i])){
echo "Second try for ".$curr_file_list[$i]." failed.<BR>\n";
}
}
else{
echo "Downloaded file ".$curr_file_list[$i]."<BR>\n";
}
}
}
}
ftp_close($ftp_connection);
if($ftp_connection){
echo "Error: Could not close FTP Connection to ".$ftp_host." exiting anyway.<BR>\n";
}
else{
echo "Connection to ".$ftp_host.", for user ".$ftp_username." was closed.<BR>\n";
}
//***** FTP zip and file removal *****\\
$to_zip = substr($backup_dir,0,-5);
echo "Creating zip file...<BR>\n";
system("tar -czf ".$to_zip.$curr_date."/".$ftp_name."-site-".$curr_date.".tar.gz ".$backup_dir);
echo "Removing temporary files...<BR>\n";
system("rm -rf ".$backup_dir);
//****MYSQL BACKUP PORTION*****\\
if($mysql_host!=""){
echo "\nGetting mysql information...<BR>\n";
mkdir($backup_dir);
$connect = mysql_connect($mysql_host, $mysql_username, $mysql_password);
$db_list = mysql_list_dbs($connect);
while ($row = mysql_fetch_object($db_list)) {
echo "Selecting database ".$row->Database."<BR>\n";
$db_name = $row->Database;
mysql_select_db($row->Database). "\n<BR>";
//create sql file
$sql_filename = $backup_dir.$curr_date."-db-".$db_name.".sql";
system("echo ### PHP BACKUP Version 1.0 ####\n\n\n >> ".$sql_filename);
$file = fopen($sql_filename,'a');
echo "\nGetting table names.<BR>\n";
$result = mysql_list_tables($row->Database);
if(!$result){
echo "Database Error, could not list tables<BR>\n";
echo 'MySQL Error: ' . mysql_error();
}
while ($row = mysql_fetch_row($result)) {
echo "\nGathering information from table ".$row[0]."<BR>\n";
fwrite($file, "### Table ".$row[0]." ###\n");
$q = "select * from `".$row[0]."`";
$export = mysql_query($q);
$fields = mysql_num_fields($export);
//build insert statement
$insert_start = "INSERT INTO `".$row[0]."` (";
for ($i = 0; $i < $fields; $i++) {
$insert_start .= "'".mysql_field_name($export, $i)."',";
}
//trim last comma
$insert_start = substr($insert_start,0,-1);
$insert_start .= ") VALUES (";
for($i = 0; $export_line = mysql_fetch_array($export); $i++){
$final_insert = $insert_start;
$j = 0;
while(ISSET($export_line[$j])){
$final_insert .= "'".$export_line[$j]."',";
$j++;
}
//trim last comma
$final_insert = substr($final_insert,0,-1);
$final_insert .= ");";
echo " .";
fwrite($file, $final_insert."\n");
}
}
fclose($file);
}
//***** MySQL zip and file removal *****\\
$to_zip = substr($backup_dir,0,-5);
echo "Creating zip file...<BR>\n";
system("tar -czf ".$to_zip.$curr_date."/".$ftp_name."-db-".$curr_date.".tar.gz ".$backup_dir);
echo "Removing temporary files...<BR>\n";
system("rm -rf ".$backup_dir);
}
$old_logs = substr($backup_dir,0,-5);
echo "Removing old log files...<BR>\n";
$old_log_path = $old_logs.$days_to_keep_logs."/";
echo "Checking for old logs ".$old_log_path."<BR>\n";
if(is_dir($old_log_path)){
echo "Removing ".$old_log_path."<BR>\n";
system("rm -rf ".$old_log_path);
}
else{
echo "no old logs to delete<BR>\n";
}
?>Code: Select all
Fatal error: Call to undefined function: str_ireplace() in /home/animesto/public_html/backup.php on line 91Code: Select all
$to_save_to = "/".str_ireplace($ftp_start_dir,"",$curr_dir)."/";