コード例 #1
0
function ftp_backup($WordpressBackupParams)
{
    $sock = new sockets();
    $mount = new mount();
    $unix = new unix();
    $rm = $unix->find_program("rm");
    $FTP_ENABLE = intval($WordpressBackupParams["FTP_ENABLE"]);
    if ($FTP_ENABLE == 0) {
        echo "FTP disbabled\n";
        return;
    }
    $FTP_SERVER = $WordpressBackupParams["FTP_ENABLE"];
    $FTP_USER = $WordpressBackupParams["FTP_USER"];
    $FTP_PASS = $WordpressBackupParams["FTP_PASS"];
    $FTP_SERVER = $WordpressBackupParams["FTP_SERVER"];
    $mntDir = "/home/artica/mnt-wordpress-" . time();
    @mkdir($mntDir, 0755, true);
    if (!$mount->ftp_mount($mntDir, $FTP_SERVER, $FTP_USER, $FTP_PASS)) {
        apache_admin_mysql(0, "Unable to mount FTP {$FTP_USER}@{$FTP_SERVER}", null, __FILE__, __LINE__);
        return;
    }
    $FTPDir = "{$mntDir}/" . $unix->hostname_g() . "/wordpress-backup";
    echo "Starting copy... in {$FTPDir}\n";
    if ($GLOBALS["VERBOSE"]) {
        echo "Checks {$FTPDir}\n";
    }
    if (!is_dir($FTPDir)) {
        if ($GLOBALS["VERBOSE"]) {
            echo "{$FTPDir} no such directory\n";
        }
        @mkdir($FTPDir, 0755, true);
    }
    if (!is_dir($FTPDir)) {
        apache_admin_mysql(0, "Fatal FTP {$FTP_USER}@{$FTP_SERVER} {$FTPDir} permission denied", null, __FILE__, __LINE__);
        $mount->umount($mntDir);
        @rmdir($mntDir);
        return;
    }
    $directories_servernames = $unix->dirdir($WordpressBackupParams["DEST"]);
    $cp = $unix->find_program("cp");
    while (list($directory, $ext) = each($directories_servernames)) {
        $dirRoot = basename($directory);
        $TargetDirectory = "{$FTPDir}/{$dirRoot}";
        if (!is_dir($TargetDirectory)) {
            if ($GLOBALS["VERBOSE"]) {
                echo "Create directory {$TargetDirectory}\n";
            }
            @mkdir($TargetDirectory, 0755, true);
        }
        if (!is_dir($TargetDirectory)) {
            apache_admin_mysql(0, "Fatal FTP {$FTP_USER}@{$FTP_SERVER} {$TargetDirectory} permission denied", __FILE__, __LINE__);
            continue;
        }
        if ($GLOBALS["VERBOSE"]) {
            echo "Scaning {$directory}\n";
        }
        $directories_conteners = $unix->dirdir($directory);
        while (list($directoryTime, $ext) = each($directories_conteners)) {
            $dirRootTime = basename($directoryTime);
            $TargetDirectory = "{$FTPDir}/{$dirRoot}/{$dirRootTime}";
            @mkdir($TargetDirectory, 0755, true);
            if (!is_dir($TargetDirectory)) {
                apache_admin_mysql(0, "Fatal FTP {$FTP_USER}@{$FTP_SERVER} {$TargetDirectory} permission denied", __FILE__, __LINE__);
                continue;
            }
            if (!is_file("{$directoryTime}/database.gz")) {
                apache_admin_mysql(0, "Fatal {$directoryTime}/database.gz no such file, skip", null, __FILE__, __LINE__);
                continue;
            }
            $t = time();
            $results = array();
            if ($GLOBALS["VERBOSE"]) {
                echo "Copy {$directoryTime}/* -> {$TargetDirectory}\n";
            }
            exec("{$cp} -rf {$directoryTime}/* {$TargetDirectory}/ 2>&1", $results);
            while (list($a, $b) = each($results)) {
                if (preg_match("#cannot#i", $b)) {
                    apache_admin_mysql(0, "Fatal Copy error {$b}, skip", $b, __FILE__, __LINE__);
                }
            }
            $took = $unix->distanceOfTimeInWords($t, time());
            if (!is_file("{$TargetDirectory}/database.gz")) {
                apache_admin_mysql(0, "Fatal {$TargetDirectory}/database.gz permission denied, skip", null, __FILE__, __LINE__);
                continue;
            }
            shell_exec("{$rm} -rf {$directoryTime}");
        }
    }
    $mount->umount($mntDir);
    @rmdir($mntDir);
    return;
}
コード例 #2
0
function ftp_backup()
{
    $sock = new sockets();
    $mount = new mount();
    $unix = new unix();
    $ZarafaBackupParams = unserialize(base64_decode($sock->GET_INFO("ZarafaBackupParams")));
    $FTP_ENABLE = intval($ZarafaBackupParams["FTP_ENABLE"]);
    if ($FTP_ENABLE == 0) {
        echo "FTP disbabled\n";
        return;
    }
    @mkdir("/home/artica/mnt-zarafa-ftp");
    $FTP_SERVER = $ZarafaBackupParams["FTP_ENABLE"];
    $FTP_USER = $ZarafaBackupParams["FTP_USER"];
    $FTP_PASS = $ZarafaBackupParams["FTP_PASS"];
    $FTP_SERVER = $ZarafaBackupParams["FTP_SERVER"];
    $mntDir = "/home/artica/mnt-zarafa-ftp";
    if ($ZarafaBackupParams["DEST"] == null) {
        $ZarafaBackupParams["DEST"] = "/home/zarafa-backup";
    }
    if (!$mount->ftp_mount($mntDir, $FTP_SERVER, $FTP_USER, $FTP_PASS)) {
        system_admin_events("Unable to mount FTP {$FTP_USER}@{$FTP_SERVER}", __FUNCTION__, __FILE__, __LINE__, "mailboxes");
        return;
    }
    $FTPDir = "{$mntDir}/" . $unix->hostname_g() . "/zarafa-backup";
    @mkdir($FTPDir, 0755, true);
    if (!is_dir($FTPDir)) {
        system_admin_events("Fatal FTP {$FTP_USER}@{$FTP_SERVER} {$FTPDir} permission denied", __FUNCTION__, __FILE__, __LINE__, "mailboxes");
        $mount->umount($mntDir);
        @rmdir($mntDir);
        return;
    }
    echo "Starting copy... in {$FTPDir}\n";
    $directories = $unix->dirdir($ZarafaBackupParams["DEST"]);
    $cp = $unix->find_program("cp");
    while (list($directory, $ext) = each($directories)) {
        if (!is_file("{$directory}/zarafa.gz")) {
            continue;
        }
        $dirRoot = basename($directory);
        $TargetDirectory = "{$FTPDir}/{$dirRoot}";
        if (is_file("{$TargetDirectory}/zarafa.gz")) {
            continue;
        }
        @mkdir($TargetDirectory, 0755, true);
        if (!is_dir($TargetDirectory)) {
            system_admin_events("Fatal FTP {$FTP_USER}@{$FTP_SERVER} {$TargetDirectory} permission denied", __FUNCTION__, __FILE__, __LINE__, "mailboxes");
            continue;
        }
        $results = array();
        $t = time();
        exec("{$cp} -rfv {$directory}/* {$TargetDirectory}/ 2>&1", $results);
        $took = $unix->distanceOfTimeInWords($t, time());
        system_admin_events("Success backup {$dirRoot} to FTP {$FTP_SERVER} took: {$took}\nTarget:{$TargetDirectory}\n" . @implode("\n", $results), __FUNCTION__, __FILE__, __LINE__, "mailboxes");
    }
    $mount->umount($mntDir);
    @rmdir($mntDir);
    return;
}