All pastes #86884 Raw Edit

SkareCrow

public php v1 · immutable
·published 2006-07-13 11:18 UTC
rendered paste body
<?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"));?>