示例#1
0
function ParseMailboxDirRsync($pattern)
{
    $backup = new backup_protocols();
    $unix = new unix();
    $rsync = $unix->find_program("rsync");
    $array = $backup->extract_rsync_protocol($pattern);
    if (!is_array($array)) {
        writelogs(date('m-d H:i:s') . " " . "rsync protocol error", __FUNCTION__, __FILE__, __LINE__);
        return false;
    }
    if ($array["PASSWORD"] != null) {
        $tmpstr = $unix->FILE_TEMP();
        @file_put_contents($tmpstr, $array["PASSWORD"]);
        $pwd = " --password-file={$tmpstr}";
    }
    if ($array["USER"] != null) {
        $user = "******"USER"]}@";
    }
    $pattern_list = "{$rsync} --list-only{$pwd} rsync://{$user}{$array["SERVER"]}/{$array["FOLDER"]}/ --stats --dry-run 2>&1";
    if ($GLOBALS["DEBUG"]) {
        echo "ParseMailboxDirRsync():: Listing files or directories using \"{$pattern_list}\"\n";
    }
    writelogs(date('m-d H:i:s') . " " . "{$pattern_list}", __FUNCTION__, __FILE__, __LINE__);
    exec($pattern_list, $results);
    @unlink($tmpstr);
    unset($array);
    while (list($num, $line) = each($results)) {
        if (preg_match("#^d[rwx\\-]+\\s+[0-9]+\\s+[0-9\\/]+\\s+[0-9\\:]+\\s+(.+)#", $line, $re)) {
            writelogs($re[1], __FUNCTION__, __FILE__, __LINE__);
            if (trim($re[1]) == '.') {
                continue;
            }
            $array[trim($re[1])] = trim($re[1]);
            continue;
        }
    }
    return $array;
}