Я нашел здесь, в stackoveflow, несколько кодов о том, как заархивировать конкретный файл, но как насчет конкретной папки?
Folder/
index.html
picture.jpg
important.txt
внутри My Folder
есть файлы. после архивирования My Folder
я также хочу удалить все содержимое папки, кроме important.txt
.
Нашел это здесь, в стеке
Мне нужна ваша помощь. Спасибо.
Ответы:
Код обновлен 22.04.2015.
Заархивируйте всю папку:
Заархивировать всю папку + удалить все файлы, кроме "important.txt":
источник
$zip->close()
не получится. Проверьте мой ответ здесьВ классе ZipArchive есть полезный недокументированный метод: addGlob ();
Документировано по адресу: www.php.net/manual/en/ziparchive.addglob.php
источник
addGlob
рекурсивная?Попробуй это:
Однако это не будет архивироваться рекурсивно.
источник
My folder
, но у меня также есть папка в папке,My folder
которая дает мне ошибку: Разрешение отклонено, отключив папку с помощью inMy folder
if (!is_dir($file) && $file != 'target_folder...')
вместо этого. Или проверьте ответ @kread, если вы хотите рекурсивно архивировать, это самый эффективный способ.My folder
все еще не удалена, но ошибок больше нет.$zip->close()
не получится. Проверьте мой ответ здесьЯ предполагаю, что это работает на сервере, где zip-приложение находится в пути поиска. Должно быть верно для всех серверов на базе UNIX и, я думаю, большинства серверов на базе Windows.
После этого архив будет находиться в archive.zip. Имейте в виду, что пробелы в именах файлов или папок являются частой причиной ошибок, и их следует по возможности избегать.
источник
Я пробовал использовать приведенный ниже код, и он работает. Код не требует пояснений, дайте мне знать, если у вас возникнут вопросы.
источник
ini_set('memory_limit', '512M');
перед выполнением скрипта иini_restore('memory_limit');
в конце. Необходимо было избегать нехватки памяти в случае тяжелых папок (это была папка больше 500 МБ).Это функция, которая заархивирует всю папку и ее содержимое в zip-файл, и вы можете использовать ее просто следующим образом:
функция:
источник
Почему бы не попробовать EFS PhP-ZiP MultiVolume Script ... Я заархивировал и передал сотни гигов и миллионы файлов ... ssh необходим для эффективного создания архивов.
Но я верю, что полученные файлы можно использовать с exec прямо из php:
Не знаю, работает ли. Я не пробовал ...
«Секрет» в том, что время выполнения для архивирования не должно превышать время, отведенное для выполнения PHP-кода.
источник
Это рабочий пример создания ZIP-архивов на PHP:
источник
Я нашел этот пост в Google как второй лучший результат, сначала использовал exec :(
В любом случае, хотя это не совсем соответствовало моим потребностям ... Я решил опубликовать ответ для других с моей быстрой, но расширенной версией этого.
ОСОБЕННОСТИ СКРИПТА
В любом случае, к сценарию ... Хотя это может показаться большим ... Помните, что здесь есть лишнее ... Так что не стесняйтесь удалять разделы отчетов по мере необходимости ...
Кроме того, это может выглядеть беспорядочно, и некоторые вещи можно легко очистить ... Так что не комментируйте это, это просто быстрый сценарий с добавленными базовыми комментариями .. НЕ ДЛЯ ЖИВОГО ИСПОЛЬЗОВАНИЯ .. Но легко очистить для живого использования !
В этом примере он запускается из каталога, который находится внутри корневой папки www / public_html. Поэтому нужно пройти только одну папку, чтобы добраться до корня.
ЧТО ЭТО ДЕЛАЕТ??
Он просто заархивирует все содержимое переменной $ pathBase и сохранит zip в той же папке. Он просто обнаруживает предыдущие резервные копии и пропускает их.
CRON BACKUP
Этот сценарий, который я только что протестировал на Linux, отлично работал с заданием cron с использованием абсолютного URL-адреса для pathBase.
источник
Используйте эту функцию:
Пример использования:
источник
Используйте это нормально.
источник
Создайте zip-папку в PHP.
Метод создания почтового индекса
Вызов метода zip
источник
Я немного улучшил сценарий.
источник
Это решит вашу проблему. Пожалуйста, попробуйте.
источник
Для тех, кто читает этот пост и ищет, почему архивировать файлы с помощью addFile вместо addFromString, который не архивирует файлы с их абсолютным путем (просто архивирует файлы и ничего больше), см. Мой вопрос и ответ здесь
источник