PHP通过FTP下载整个文件夹(递归)

时间:2011-04-10 02:23:16

标签: php ftp download backup host

我目前有一个非常大的网站,大小约为5GB,有60,000个文件。当前主机在帮助我将站点转移到新主机方面没有做太多工作,我想的是在我的新主机上创建一个简单的脚本到FTP到旧主机并下载整个public_html文件夹(递归地) )到新服务器。这是可能的,如果是这样,有没有人有任何他们可以共享的链接来帮助这个?非常感谢。

3 个答案:

答案 0 :(得分:3)

可能有更好的机制来做你想做的事。

首先,您可以从一个主机到另一个主机使用sftpscp吗?

scp -R username@oldhost:path/to/directory/ /path/to/destination/directory

sftp username@oldhost  # then use 'get -r' to download recursively

rsync -avz -P username@oldhost:/path/to/directory/ /path/to/destination/directory/

-P可以轻松重启停滞/死机下载。

如果好的工具不起作用,那么看看是否安装了wget

wget --mirror --continue --ftp-user=username ftp://oldhost/path/to/directory/

--continue可以更轻松地重新启动停滞/死机下载。

答案 1 :(得分:1)

如果有很多文件,我强烈建议你制作.tar.gz档案。 我不知道你对php有什么限制,但你可以在php中尝试这个:

$archive = "backup.tar.gz";
$directory = "./www";
exec( "tar -czf $archive $directory");

然后您只需通过http / ftp或使用任何其他方法下载1个单个gziped存档。

答案 2 :(得分:1)

是的,你可以用纯PHP做到这一点!

我刚刚发布了2个新库,可以在FTP / SFTP

中执行此类操作

以递归方式复制远程SFTP服务器上的文件和文件夹(如果local_path以斜杠上传文件夹内容结束,否则上传文件夹本身)

Ftp::upload_dir($server, $user, $password, $local_path, $remote_path, $port = 22);

从远程FTP服务器下载目录(如果remote_dir以斜杠下载文件夹内容结束,否则下载文件夹本身)

Ftp::download_dir($server, $user, $password, $remote_dir, $local_dir, 

$ port = 22);

如果你想查看代码,你会看到神奇的递归函数;)