Попробуй перед функцией copy()
прописать
Header('Location: site.ru'); //На отдельную страницу с результатом
flush(); //Очищает буфер для редиректа
copy(); //функция копирования
//
Должно перекинуть на другую страницу, но скрипт при этом продолжит работать пока не загрузит файл.
И уже на отдельной странице делай прогрес бар)))
Не проверял, но по идее должно сработать.