Поскольку FTP не является предпочтительным протоколом для копирования глубоко вложенных каталогов, я попытался найти способ упаковать все файлы в один файл на стороне сервера.
Одна возможность упаковать файлы в консоль SSH с помощью команды вроде
zip -r <username>/backup_29_08_12.zip<username>
Так как моя служба не позволяет такое соединение, в моем случае это было невозможно.
Я обнаружил, что мой провайдер позволяет использовать пакет PEAR Archive_Tar. В результате получается PHP-скрипт, упаковывающий файлы:
<?
@error_reporting(E_ALL ^ E_WARNING);
@ini_set("max_execution_time", 0);
@ini_set("memory_limit", "-1");
$directory = "";
$ignore = array("*.sql.gz", "*.tar.gz");
$path = preg_replace('/(\/www\/htdocs\/\w+\/).*/', '$1', realpath(__FILE__));
include "Archive/Tar.php";
$archivename = preg_replace('/.+\/(.+)\/$/', '$1', $path).date('_Y-m-d_His').".tar.gz";
$archive = new Archive_Tar($archivname, true);
$archive->setIgnoreList($ignore);
$archive->createModify($path.$directory, "", $path);
echo "Backup done";
?>
Вызов этого скрипта в папке с CHMOD 0777 занял около получаса. После этого я мог загружать упакованные файлы без ограничения скорости загрузки.