我需要同步两个不同服务器上的两个文件夹,一个是 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; # 无法连接
如果 (!ftp_login($conn_id, $username, $password)) { ftp_close($conn_id); return false; } # 登录失败
ftp_pasv($conn_id, $passive_mode);
如果 (!ftp_chdir($conn_id, $remote_dir)) { ftp_close($conn_id); return false; } # 更改目录失败
如果 (substr($local_dir, -1) != '/') $local_dir .= '/';
$list = ftp_nlist($conn_id, '.');
sort($list);
foreach ($list as $file) {
如果 (!file_exists($local_dir . $file)) {
$is_copied = ftp_get($conn_id, $local_dir . $file, $file, FTP_BINARY);
}
}
ftp_close($conn_id);
return true;
}