<?PHP$conf = array();$conf['backup_time'] = time();$conf['backup_limit'] = 7;$conf['backup_dir'] = "/home/skarecrow/backup";$conf['backup_fld'] = "/home/skarecrow/www";$conf['fl_backuplog'] = "/home/skarecrow/backup/log.txt";$conf['fl_checksum'] = "/home/skarecrow/backup/chksum.txt";$conf['fl_backup'] = "Leave_Blank";$conf['backup_sum'] = "Leave_Blank";logMessage("Starting Backup Generator: ".date("F j, Y, g:i a"));build();BuildBackup();CheckBackup();cleanup();function build() { global $conf; if (!file_exists($conf['fl_checksum'])) { $conf['backup_sum'] = "null"; logMessage("Checksum file does not exist. Setting sum to null."); } else { $conf['backup_sum'] = file_get_contents($conf['fl_checksum']); $conf['backup_sum'] = str_replace("\n", "", $conf['backup_sum']); logMessage("Checksum loaded. Last Backup checksum {$conf['backup_sum']}"); }}function BuildBackup() { global $conf; $conf['fl_backup'] = $conf['backup_dir']."/".$conf['backup_time'].".tar"; logMessage("Generating backup {$conf['fl_backup']}"); exec("tar -cf {$conf['fl_backup']} {$conf['backup_fld']}"); if (!file_exists($conf['fl_backup'])) { logMessage("Backup utility failed: ".date("F j, Y, g:i a")); logMessage("The backup utility could not generate a backup."); logMessage("Please make sure you have the correct permissions set on {$conf['backup_dir']}"); logMessage("If that does not work you can contact me at http://www.WarpedCoders.org/"); die(); }}function CheckBackup() { global $conf; $chksum = exec("md5sum {$conf['fl_backup']}"); $chksum = explode(" ", $chksum); $chksum = $chksum[0]; if ($conf['backup_sum'] == $chksum) { logMessage("{$conf['fl_backup']} has the same checksum as the previous backup."); logMessage("Backup will be deleted do to a previous backup of the same checksum."); if (unlink($conf['fl_backup'])) { logMessage("Backup {$conf['fl_backup']} was deleted successfully!"); } else { logMessage("Could not delete backup {$conf['fl_backup']}"); } } else { logMessage("Detected changes in file checksum. Backup will be saved."); updateSum($chksum); }}function cleanup() { global $conf; $fileArray = array(); if ($opDir = opendir($conf['backup_dir'])) { $count = 0; while (($file = readdir($opDir)) != false) { $ext = explode(".", $file); $file_bk = $ext[0]; $ext = $ext[1]; if ($ext == "tar") { $fileArray[$count] = $file_bk; $count++; } } } sort($fileArray); if (count($fileArray) > $conf['backup_limit']) { if (!unlink($conf['backup_dir']."/{$fileArray[0]}.tar")) { logMessage("Could not unlink {$conf['backup_dir']}/{$fileArray[0]}.tar"); } else { logMessage("Meximum backup limit reached: {$conf['backup_limit']} - Last backup on ".date("F j, Y", $fileArray[0])." will be deleted."); logMessage("Old Backup file deleted {$conf['backup_dir']}/{$fileArray[0]}.tar"); cleanup(); } }}function updateSum($sum) { global $conf; $file = fopen($conf['fl_checksum'], "w"); fputs($file, $sum); fclose($file);}function logMessage($msg) { global $conf; $file = fopen($conf['fl_backuplog'], "a+"); fwrite($file, $msg."\n"); fclose($file);}logMessage("Backup Generator Completed: ".date("F j, Y, g:i a"));?>