来自FTP的Zip文件夹

时间:2012-02-16 18:21:22

标签: php

<?

$ftp_server = "name.info";
$ftp_user = "user";
$ftp_pass = "pass";

// set up a connection or die
$conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server"); 

// try to login
if (@ftp_login($conn_id, $ftp_user, $ftp_pass)) 
{
    ftp_chdir($conn_id, 'public_html/');
    $contents = ftp_nlist($conn_id, '-la .');
    print_r($contents);
    foreach($contents as $line){
      $file = preg_split('@\s+@', trim($line));
      $name = $file[8];
      $size = $file[4];
      $mode = $file[0];
      if(substr($mode, 0, 1) == '-'){
        //file
        $fd = fopen('d/'.$name, 'w');
        ftp_fget ($conn_id, $fd, $name, FTP_BINARY);
        fclose($fd);
      }else{
        //dir
      }
    }
}
else
    die ("Couldn't connect as $ftp_user\n");

?>

我想获取所有public_html文件夹。如果我可以拉链它将是完美的。我试着写一些东西,但它只是不复制那些文件。我错过了什么?

2 个答案:

答案 0 :(得分:3)

这是我在慢速FTP服务器上使用的代码:它创建一个zip文件,然后我花了5分钟将它复制到我的本地计算机(取决于互联网速度连接和压缩文件大小)

<?php 

$archive = "2012.zip";
$directory = $_SERVER['DOCUMENT_ROOT'];
exec( "zip -r $archive $directory");

 ?>

希望这有帮助

答案 1 :(得分:2)

如果您使用的是Linux并且不受php的safe_mode限制(使用phpinfo()查找),那么您可以简单地使用exec()从shell运行zip命令,如:

<?
exec("zip -R public_html.zip /home/username/public_html",$output);
?>

希望这有帮助。

编辑:只是为了澄清一下,如果您有FTP访问权限,那么您可以将此语句作为独立脚本上传并通过浏览器进行调用。