Ejemplo n.º 1
0
function backupsite($servername)
{
    $unix = new unix();
    $free = new freeweb($servername);
    $tempdir = "/var/tmp/webget/{$servername}";
    $targetpackage = dirname(__FILE__) . "/ressources/logs/web/{$servername}.tar.gz";
    if (is_file($targetpackage)) {
        @unlink($targetpackage);
    }
    writelogs("[{$servername}] Starting backup this website", __FUNCTION__, __FILE__, __LINE__);
    $date_start = time();
    if (!is_dir("{$free->WORKING_DIRECTORY}")) {
        writelogs("[{$servername}] Directory:`{$free->WORKING_DIRECTORY}` no such directory", __FUNCTION__, __FILE__, __LINE__);
        return;
    }
    @mkdir($tempdir, 0755, true);
    writelogs("[{$servername}] Copy website content to {$tempdir}", __FUNCTION__, __FILE__, __LINE__);
    $cp = $unix->find_program("cp");
    $rm = $unix->find_program("rm");
    writelogs("[{$servername}] Copy website {$free->WORKING_DIRECTORY} content to {$tempdir}...", __FUNCTION__, __FILE__, __LINE__);
    writelogs("[{$servername}] Copy Configuration File {$tempdir}/artica.restore...", __FUNCTION__, __FILE__, __LINE__);
    @file_put_contents("{$tempdir}/artica.restore", $free->BackupConfig());
    shell_exec("{$cp} -rf {$free->WORKING_DIRECTORY}/* {$tempdir}/");
    writelogs("[{$servername}] Copy website {$free->WORKING_DIRECTORY} content to {$tempdir} done...", __FUNCTION__, __FILE__, __LINE__);
    if ($free->mysql_database != null) {
        $q = new mysql();
        if ($free->mysql_instance_id > 0) {
            $q = new mysql_multi($free->mysql_instance_id);
        }
        if (!$q->DATABASE_EXISTS($free->mysql_database)) {
            writelogs("[{$servername}] {$free->mysql_database} no such database", __FUNCTION__, __FILE__, __LINE__);
            $date_end = time();
            backupsite_compress($tempdir, $targetpackage);
            $calculate = $unix->distanceOfTimeInWords($date_start, $date_end);
            writelogs("[{$servername}] done...time: {$calculate}", __FUNCTION__, __FILE__, __LINE__);
            return;
        }
        backupsite_mysql_database_mysqldump($free->mysql_database, $tempdir . "/MySQL", $free->mysql_instance_id, $servername);
    }
    backupsite_compress($tempdir, $targetpackage);
    $date_end = time();
    $calculate = $unix->distanceOfTimeInWords($date_start, $date_end);
    writelogs("[{$tempdir}] done...time: {$calculate}", __FUNCTION__, __FILE__, __LINE__);
    if (!is_file($targetpackage)) {
        writelogs("[{$tempdir}] failed, {$targetpackage} no such file", __FUNCTION__, __FILE__, __LINE__);
        return;
    }
    @chmod($targetpackage, 0755);
    if (is_dir($tempdir)) {
        writelogs("[{$tempdir}] cleaning...", __FUNCTION__, __FILE__, __LINE__);
        shell_exec("{$rm} -rf {$tempdir}");
    }
}