PHP写的FTP文件同步程序
由于我用的都是国外的PHP服务器,有时想备份一点文件,只能用FTP工具先上传。但由于有多个空间,每个空间对文件的限制又不一样,网盘吧,都是要30天必须有下载,否则会删掉。我只是用来备份,不一定会下载。所以国外网盘也不适合我。
再看看长城宽带吧,可怜死了,我2M的宽带,下载也只有126K,这还是最高了,用迅雷下载的。上传速度可想而知,上传一个3K的PHP文件,也要五分钟。汗
于是就想到了PHP程序同步两个空间的文件。
A空间只限制文件大小为10M,不限制文件类型;B空间基本只能上传压缩文件,可以当作备份之用,还不错,目录可以浏览。
<?php
header('Content-Type:text/html;charset=utf-8');
function allowEXT($filename){
$aBadExt = array('php', 'sql', 'exe', 'msi');
$aFile = explode('.', $filename);
$ext = array_pop($aFile);
$ext = strtolower($ext);
if(in_array($ext, $aBadExt)) return false;
return true;
}
$ip = 'xxxx.biz';
$u = '123';
$p = '456';
$aDir = '/download/';
$conn_id = ftp_connect($ip);
$login_result = ftp_login($conn_id, $u, $p);
$contents = ftp_nlist($conn_id, $aDir);
$aHostFile = array();
foreach($contents as $k=>$v){
if(is_file($v)){
$aHostFile[] = $v;
}
}
//扫描当前目录
$files = scandir('./');
foreach($files as $file){
if(is_file($file) && allowEXT($file)){
$arr[] = mb_convert_encoding($file,'utf-8','gbk');
//$arr[] = $file;
}
}
//print_r($arr);exit;
$aDiff = array_diff($arr, $aHostFile);
$c = array();
foreach($aDiff as $k=>$v){
if(ftp_put($conn_id, $aDir.$v, $v, FTP_BINARY)){
$c[] = $v.'同步成功<br>';
}else{
$c[] = $v.'同步失败<br>';
}
}
ftp_close($conn_id);
print_r($c);
exit;
?>
同步的速度可比我的CuteFTP上传快多了,接近30M的文件(好几个文件的总和,多数PHP空间都是最大体积限制为10M,如果你找到了可以大于10M的PHP空间,请通知我:页底的email),一会儿的功夫就同步完了,我的CuteFTP上传几K的文件都要好长时间。