<?
//如果您想将文件夹层次结构从当前服务器移动或复制到另一个远程服务器。那么这将很有帮助,因为它会浏览当前服务器的目录,同时它会将该文件复制到远程服务器的同一目录中。
//此脚本将通过 FTP 将所有文件从该目录及其子目录复制到另一个远程服务器
function rec_copy ($source_path, $destination_path, $con)
{
ftp_mkdir($con, $destination_path);
ftp_site($con, 'CHMOD 0777 '.$destination_path);
ftp_chdir($con,$destination_path);
if (is_dir($source_path))
{
chdir($source_path);
$handle=opendir('.');
while (($file = readdir($handle))!==false)
{
if (($file != ".") && ($file != ".."))
{
if (is_dir($file))
{
//这里我限制了文件夹名称 'propertyimages' 被复制到远程服务器。 -- VK
if($file != "propertyimages")
{
rec_copy ($source_path."/".$file, $file, $con);
chdir($source_path);
ftp_cdup($con);
}
}
if (is_file($file))
{
$fp = fopen($file,"r");
//这会将空格转换为 '_',这样就不会抛出错误。 -- VK
ftp_fput ($con, str_replace(" ", "_", $file), $fp,FTP_BINARY);
ftp_site($con, 'CHMOD 0755 '.str_replace(" ", "_", $file));
}
}
}
closedir($handle);
}
}
//建立 FTP 连接 --VK
$con = ftp_connect("69.18.213.131",21);
$login_result = ftp_login($con,"username","password");
//这是远程服务器的根路径 -- VK
$rootpath = "mainwebsite_html";
//这是源目录的物理路径。实际上你也可以使用相对路径。 -- VK
$sourcepath = realpath("../")."/resdesk";
//这个目录名只会改变最顶层的目录,而不会改变内部的目录 -- VK
$destination_dir_name = "resdesk_".$account_id."/";
rec_copy ($sourcepath, $destination_dir_name, $con);
if (function_exists("ftp_close"))
{
ftp_close($con);
}
?>