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; }
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; }