Script chcem dať do cronu (pravidelné, automatické zálohovanie v noci).
V PHP som nikdy nerobil
Ďakujem.
Kód: Vybrať všetko
<?
function makeAll($dir, $mode = 0777, $recursive = true) {
if( is_null($dir) || $dir === "" ){
return FALSE;
}
if( is_dir($dir) || $dir === "/" ){
return TRUE;
}
if( makeAll(dirname($dir), $mode, $recursive) ){
return mkdir($dir, $mode);
}
return FALSE;
}
echo $timefolder = time();
mkdir("/data/web/virtuals/39132/virtual/www/", 0700);
if (smartCopy("/data/web/virtuals/39132/virtual/www/", "/data/web/virtuals/39132/virtual/www/subdom/zalohy/")) echo "Záloha byla úspěšně provedena"; else echo "Nepovedlo se provést zálohu webu";
function smartCopy($source, $dest, $options=array('folderPermission'=>0755,'filePermission'=>0755))
{
$result=false;
//For Cross Platform Compatibility
if (!isset($options['noTheFirstRun'])) {
$source=str_replace('\\','/',$source);
$dest=str_replace('\\','/',$dest);
$options['noTheFirstRun']=true;
}
if (is_file($source)) {
if ($dest[strlen($dest)-1]=='/') {
if (!file_exists($dest)) {
makeAll($dest,$options['folderPermission'],true);
}
$__dest=$dest."/".basename($source);
} else {
$__dest=$dest;
}
if (!file_exists($__dest)) {
$result=copy($source, $__dest);
chmod($__dest,$options['filePermission']);
}
} elseif(is_dir($source)) {
if ($dest[strlen($dest)-1]=='/') {
if ($source[strlen($source)-1]=='/') {
//Copy only contents
} else {
//Change parent itself and its contents
$dest=$dest.basename($source);
@mkdir($dest);
chmod($dest,$options['filePermission']);
}
} else {
if ($source[strlen($source)-1]=='/') {
//Copy parent directory with new name and all its content
@mkdir($dest,$options['folderPermission']);
chmod($dest,$options['filePermission']);
} else {
//Copy parent directory with new name and all its content
@mkdir($dest,$options['folderPermission']);
chmod($dest,$options['filePermission']);
}
}
$dirHandle=opendir($source);
while($file=readdir($dirHandle))
{
if($file!="." && $file!="..")
{
$__dest=$dest."/".$file;
$__source=$source."/".$file;
//echo "$__source ||| $__dest<br />";
if ($__source!=$dest) {
$result=smartCopy($__source, $__dest, $options);
}
}
}
closedir($dirHandle);
} else {
$result=false;
}
return $result;
}
Ešte by som potreboval upraviť aj tento script (zálohovanie databázy), aby sa staré zálohy tiež automaticky vymazávali (vždy by bolo max. 5 najnovších záloh). Script je zo stránky: http://www.theblog.cz/programovanie/zal ... edos-disk/
Kód: Vybrať všetko
<?php
$DBhost = 'xxx.wedos.net';
$DBuser = 'user';
$DBpass = 'password';
$DBName = 'namedb';
$ftp_server = 'xxx.xxx.wedos.net';
$ftp_user_name = 'xxx';
$ftp_user_pass = 'xxxxxxx';
$folderr = 'backup/'; // !!!! bacha musi existovat a treba si nastavit prava na zapis
$table = '*';
if ($table == '*') {
$extname = 'all';
}else{
$extname = str_replace(",", "_", $table);
$extname = str_replace(" ", "_", $extname);
}
$filess = 'dbbackup_' . date("d.m.Y_H_i") . '_cron_' . $extname;
backup_tables($DBhost,$DBuser,$DBpass,$DBName,$table,$extname,$folderr,$filess,$ftp_server,$ftp_user_name,$ftp_user_pass);
function backup_tables($host,$user,$pass,$name,$tables,$bckextname,$folderr,$filess,$ftp_server,$ftp_user_name,$ftp_user_pass)
{
$link = mysql_connect($host,$user,$pass);
mysql_select_db($name,$link);
$return = "";
if($tables == '*') {
$tables = array();
$result = mysql_query('SHOW TABLES');
while($row = mysql_fetch_row($result)) {
$tables[] = $row[0];
}
} else {
if (is_array($tables)) {
$tables = explode(',', $tables);
}
}
foreach($tables as $table) {
$result = mysql_query('SELECT * FROM '.$table);
$num_fields = mysql_num_fields($result);
$return .= 'DROP TABLE ' . $table . ';<|||||||>';
$row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));
$return .= "\n\n" . $row2[1] . ";<|||||||>\n\n";
for ($i = 0; $i < $num_fields; $i++) {
while($row = mysql_fetch_row($result)) {
$return.= 'INSERT INTO '.$table.' VALUES(';
for($j=0; $j<$num_fields; $j++) {
$row[$j] = addslashes($row[$j]);
$row[$j] = str_replace("\n","\\n",$row[$j]);
if (isset($row[$j])) {
$return .= '"' . $row[$j] . '"';
} else {
$return .= '""';
}
if ($j<($num_fields-1)) {
$return.= ',';
}
}
$return.= ");<|||||||>\n";
}
}
$return.="\n\n\n";
}
$handle = fopen($folderr.$filess.'.sql','w+');
fwrite($handle,$return);
fclose($handle);
mysql_close();
}
$file = $folderr.$filess.'.sql';
$remote_file = $filess.'.sql';
$conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
// upload
if (ftp_put($conn_id, $remote_file, $file, FTP_ASCII)) {
//echo "Dokonceny upload suboru $file\n";
} else {
//echo "Nejaky problem s uploadnutim suboru $file\n";
}
ftp_close($conn_id);
if (!is_dir($file)) {
unlink($file);
}
print('The backup has been created successfully!');
?>