我发现关于复制文件这个问题(在这里),而不会覆盖复制文件夹,而不会覆盖
How do you copy a file in PHP without overwriting an existing file?
我需要的是一个PHP脚本将所有文件复制在文件夹,有还有一些子文件夹;所以它应该是递归的。
我需要通过FTP传输它,所以我不知道这对方法有很大的影响。
非常感谢!
我发现关于复制文件这个问题(在这里),而不会覆盖复制文件夹,而不会覆盖
How do you copy a file in PHP without overwriting an existing file?
我需要的是一个PHP脚本将所有文件复制在文件夹,有还有一些子文件夹;所以它应该是递归的。
我需要通过FTP传输它,所以我不知道这对方法有很大的影响。
非常感谢!
function recurse_copy($src,$dst) {
$dir = opendir($src);
@mkdir($dst);
while(false !== ($file = readdir($dir))) {
if (($file != '.') && ($file != '..')) {
if (is_dir($src . '/' . $file)) {
recurse_copy($src . '/' . $file,$dst . '/' . $file);
}
else {
copy($src . '/' . $file,$dst . '/' . $file);
}
}
}
closedir($dir);
}
注意,该解决方案将愉快地覆盖中存在的$dst
目录中的任何文件。如果你想避免这种情况,你可以将this question中的代码封装到一个函数中,然后调用该函数而不是copy
。
我不确定你想通过FTP传输什么,如果你澄清我很乐意编辑我的答案。
非常友善,thx的答复。此解决方案是否适用于FTP? 我想用SQL数据库文件(相当大的文件...)传输几个文件夹。 我会在不同的服务器上运行脚本,然后运行数据库所在的服务器。目的地是另一台服务器。 覆盖应该完全避免,因为文件太大了。 提前谢绝! – laurens 2009-11-12 10:17:23
我对你的评论有点困惑 - 抱歉,如果我密集。如果你想从远程文件夹中获取文件,那么你需要做更多的工作(参见'ftp_get'和'ftp_nlist');如果你想把这些文件放到远程服务器上(所以你需要从源服务器上运行备份过程),那么请参阅'ftp_put'。但埃德的权利 - PHP绝对不是这项工作的工具。 – 2009-11-12 10:48:18
我的不好。显然我需要寻找一个bash解决方案(?) – laurens 2009-11-12 10:52:53
有系统副本和FTP之间有很大的区别复制,你可以看看在PEAR FTP Class
我可以问它是什么,需要这是用PHP编写的脚本。似乎使用rsync会为您所付出的努力提供更好的里程。 – 2009-11-12 10:28:12
我需要复制SQL服务器数据库文件(.bak等),所以非常大的文件。我正在运行脚本的服务器,作为目标服务器上的文件所在的源服务器是Linux服务器。 我正在考虑PHP,因为所有其他脚本都在PHP中,但欢迎其他建议。 Thx – laurens 2009-11-12 10:37:07