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的文件都要好长时间。

 

300*300
 文章首页关于迷茫时代关于我写意人生
版权所有:迷茫时代 All rights reserved   
执行时间:0.00435 秒