我需要同步兩個不同伺服器上的資料夾,一個是 Windows 伺服器,另一個是 Linux 伺服器。我建立了這個簡短的函式來幫助我完成這項工作。請注意:這不會複製資料夾,如果遠端資料夾包含檔案以外的任何內容,則可能會失敗。
function sync_folders($host, $port, $username, $password, $remote_dir, $local_dir, $passive_mode = true) {
$conn_id = ftp_connect($host, $port);
if (!$conn_id) return false; // 連線失敗
if (!ftp_login($conn_id, $username, $password)) { ftp_close($conn_id); return false; } // 登入失敗
ftp_pasv($conn_id, $passive_mode);
if (!ftp_chdir($conn_id, $remote_dir)) { ftp_close($conn_id); return false; } // 切換目錄失敗
if (substr($local_dir, -1) != '/') $local_dir .= '/';
$list = ftp_nlist($conn_id, '.');
sort($list);
foreach ($list as $file) {
if (!file_exists($local_dir . $file)) {
$is_copied = ftp_get($conn_id, $local_dir . $file, $file, FTP_BINARY);
}
}
ftp_close($conn_id);
return true;
}