Как распаковать ZIP архив на FTP-сервере
Если Вам приходится достаточно часто копировать на FTP-сервер скрипты, содержащие большое количество файлов (например, системы управления сайтом, блоги), то можно применить гораздо более удобный способ их закачки — первоначально упаковать в ZIP архив и в последствии распаковать прямо на сервере.
Согласитесь, что процесс закачки проходит значительно быстрее, если заливаешь всего один файл, нежели все файлы по отдельности, при условии одинакового размера в том и другом случае. Когда закачивается туча файлов, происходит множественное обращение FTP-клиента к серверу после каждого файла, на что уходит определенное время.
Более того, например, при использовании SOCKS или прокси, во время закачки множества маленьких файлов может произойти разрыв соединения с FTP-сервером (именно так у меня часто случается при коннекте через SOCKS), а это сулит еще большее количество потраченного времени, чего не случается, когда заливаешь всего один файл.
При частом повторении одних и тех же действий любой стремится упростить выполняемую задачу. Поэтому я, недавно столкнувшись с необходимостью частой установки движка WordPress, стал искать более простой и удобный способ его закачки на FTP-сервер.
Раздобыл полезную тулзу, называется PHP Unzipper — скрипт, который за считанные секунды распакует закачанный на сервер zip архив. Вот его предназначение:
- Незаменимый инструмент для веб-мастера, которому часто приходится закачивать на сайт много файлов и папок.
- Позволяет значительно сэкономить время и трафик (архив занимает гораздо меньший размер, кроме того при закачке большого количества файлов, исходящий трафик создает значительно большую долю входящего трафика, как раз за счет частого обращения к серверу) — достаточно закачать архив и скрипт распакует его мгновенно.
- Дополнительной функцией тулзы является возможность просмотра структуры директорий на сайте, а также возможность просмотра содержимого zip архивов на сервере без их распаковки.
- Скрипт очень прост в установке, использует авторизацию по логину и паролю.
Скачать
PHP Unzipper
Загрузок: 20521 | Размер: 38 Кб
Как устанавливается:
- Закидываем находящиеся в архиве файлы index. php и pclzip.lib.php на сервер в ту папку, куда будем устанавливать движок (возможно потребуется переименовать index. php в любой другой, поскольку закачиваемый скрипт движка может иметь файл с таким же названием).
- Устанавливаем CHMOD для файла index. php на 777 (примечание — не знаю, почему, но в инструкции к скрипту написано именно так, а практика показала, что 777 нужно ставить для папки, в которую будет распаковываться архив).
- Открываем index. php в браузере, скрипт попросит зарегистрироваться — указываем логин и пароль (если после регистрации снова появилась эта же форма, устанавливаем для папки, в которую закачан PHP Unzipper, CHMOD на 777).
- Авторизуемся для работы с zip архивом.
При архивировании скрипта движка прошу обратить внимание на тот момент, что архивировать нужно не саму папку, в которой лежит этот скрипт, а то, что в ней находится, поскольку в каком виде вы запакуете движок, в таком виде его и разархивирует PHP Unzipper.
Используя данный инструмент, заметил, что на некоторых серверах может возникнуть ситуация, когда файлы, распакованные таким образом становятся залоченными,
В таком случае нужно установить им права доступа PHP-средствами.
Для смены CHMOD файлам и папкам следует запустить php-файл со следующим кодом:
<?
chmod ("file1.php", 0666);
chmod ("file2.php", 0666);
chmod ("directory1", 0777);
chmod ("directory2", 0777);
?>
что устанавливает права доступа 666 к файлам file1.php и file2.php и права доступа 777 папкам directory1 и directory2.
Нашел также варианты PHP-кода для смены чмода сразу всем вложенным файлам и папкам, но, к сожалению, ни один не сработал. Поделитесь инфой, если знаете, как это делается.
Update 28.04.09: Сергей Предводителев предложил скрипт, который массово меняет права доступа — Рекурсивная смена прав доступа на PHP.
* * *
Студия «МастерВеб» специализируется на предоставлению услуг по размещению рекламы в Интернете (как медийной, так и контекстной) с целью привлечения целевой аудитории на продвигаемый сайт, и, как следствие, увеличения продаж товаров и услугу.
Комментарии (82)
Почему распаковывается не в Ту папку, где лежит скрипт, а создает папку и в нее кидает файлы?
У меня распаковывалось в ту же папку, так что не знаю.
Спасибо. А я тут скриптик нашел на PHP)). Вот тут ссылочка is.gd/GF6flJ
Крутая штука) Задолбался по ftp кидать фреймворки
Отличный скрипт (первый). Простое решение простых задач. Вместо длинных и нудных скриптов с большим количеством настроек и всякой хренью… В общем спасибо!
Тру статья, огромное спасибо.
Хорошо расписали, молодец! Только Вы забыли сказать, что по ФТП, папки, созданные (или разархивированные) каким-либо скриптом РНР, сложно удаляются. Точней, созданные вроде вообще не удаляются, а разархивированные удалить можно, но хитро: нужно удалить сначала файлы в ней, а потом лишь саму папку. Если попытаетесь удалить папку с файлами, потом она будет там видна (по ФТП) но при каком-либо действии с ней менеджер ФТП будет отвечать что папка удалена. :)
Я данный скрипт давно пользую, только покромсал его: удалил коды для логина/пароля, т.к. имею свою рабочую папку на сервере. А второй вариант сделал для товарища попроще — для разового использования, склеил все в один файл. Описал и выложил здесь — Распаковка архива ZIP на сервере по FTP
Я ничего не забыл, это вы невнимательно читаете. Про это в статье написано и указано решение.
Да, да, сорри, видел, но не обратил внимания. Сам вчера освоил операции по SHH. Как-то пробовал, не выходило пароль ввести. Вчера прочел: оказывается, при введении пароля в PuTTY ничего не индицируется, а копирование в PuTTY — правой кнопкой мыша.
Работает лихо, конечно… Только на все распакованные папки ставит чмоды 777 и не дает изменить.
В файле index. php найдите строчку:
chmod ($basedir.'/'.$dirname, 0777);
и измените ее на:
В файле index. php chmod ($basedir.'/'.$dirname, 0755);
Открыл скрипт, как сказано в корневой папке и… что? Как заархивировать файлы? Он просто показывает мне список директорий и все…
Скрипт не архивирует, он только распаковывает.
Спасибо большое, как раз то, что искал.