Как распаковать ZIP архив на FTP-сервере

Если Вам приходится достаточно часто копировать на FTP-сервер скрипты, содержащие большое количество файлов (например, системы управления сайтом, блоги), то можно применить гораздо более удобный способ их закачки – первоначально упаковать в ZIP архив и в последствии распаковать прямо на сервере.

Согласитесь, что процесс закачки проходит значительно быстрее, если заливаешь всего один файл, нежели все файлы по отдельности, при условии одинакового размера в том и другом случае. Когда закачивается туча файлов, происходит множественное обращение FTP-клиента к серверу после каждого файла, на что уходит определенное время.

Более того, например, при использовании SOCKS или прокси, во время закачки множества маленьких файлов может произойти разрыв соединения с FTP-сервером (именно так у меня часто случается при коннекте через SOCKS), а это сулит еще большее количество потраченного времени, чего не случается, когда заливаешь всего один файл.

При частом повторении одних и тех же действий любой стремится упростить выполняемую задачу. Поэтому я, недавно столкнувшись с необходимостью частой установки движка WordPress, стал искать более простой и удобный способ его закачки на FTP-сервер.

Раздобыл полезную тулзу, называется PHP Unzipper – скрипт, который за считанные секунды распакует закачанный на сервер zip архив. Вот его предназначение:

  • Незаменимый инструмент для веб-мастера, которому часто приходится закачивать на сайт много файлов и папок.
  • Позволяет значительно сэкономить время и трафик (архив занимает гораздо меньший размер, кроме того при закачке большого количества файлов, исходящий трафик создает значительно большую долю входящего трафика, как раз за счет частого обращения к серверу) – достаточно закачать архив и скрипт распакует его мгновенно.
  • Дополнительной функцией тулзы является возможность просмотра структуры директорий на сайте, а также возможность просмотра содержимого zip архивов на сервере без их распаковки.
  • Скрипт очень прост в установке, использует авторизацию по логину и паролю.

Скачать

PHP Unzipper

Загрузок: 20568 | Размер: 38 Кб

Как устанавливается:

  1. Закидываем находящиеся в архиве файлы index.php и pclzip.lib.php на сервер в ту папку, куда будем устанавливать движок (возможно потребуется переименовать index.php в любой другой, поскольку закачиваемый скрипт движка может иметь файл с таким же названием).
  2. Устанавливаем CHMOD для файла index.php на 777 (примечание – не знаю, почему, но в инструкции к скрипту написано именно так, а практика показала, что 777 нужно ставить для папки, в которую будет распаковываться архив).
  3. Открываем index.php в браузере, скрипт попросит зарегистрироваться – указываем логин и пароль (если после регистрации снова появилась эта же форма, устанавливаем для папки, в которую закачан PHP Unzipper, CHMOD на 777).
  4. Авторизуемся для работы с 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)

  1. vik
    19 февраля 2011 г. в 14:31

    Товарищи, помогите плийз. Установил Uncoder, залил zip архив, установил на него права 777, запустил Uncoder, ввел пароль и логин, выбрал дирректорию, а архива не вижу (сервер бесплатный). Может сервер дерьмо или я что-то не правильно делаю?

  2. 22 апреля 2011 г. в 19:27

    Спасибо за скрипт. срочно понадобился

  3. San
    25 июня 2011 г. в 01:48

    Классная штука! Спасибо!

  4. kpripper
    3 августа 2011 г. в 15:02

    У меня после клика на анзип архив исчезает. Что делать ?

  5. Otto
    11 августа 2011 г. в 01:35

    Спасибо огромнейшее!!! Работает на УРА! Там всё просто очень, даже инструкция не понадобилась)))
    25 Мб архив с 6 801 объектами распаковал секунд за 15-20.

  6. sugonjakas
    14 августа 2011 г. в 16:31

    Низкий поклон Вам! Дай Бог Вам здоровья!;)

  7. Фрэди Крюгер
    25 августа 2011 г. в 17:21

    спасибо, всё работает))))

  8. 30 августа 2011 г. в 20:35

    жалко, но на русониксе выводит ошибку – “Unable to find End of Central Dir Record signature”. Права доступа на все файлы выставил 777. Придется заливать движок по старому…

  9. Piper
    22 сентября 2011 г. в 23:13

    Спасибо, хорший скрипт, немного переделал чтоб скрипт потрошил сразу все архивы на полном автомате и сам себя удалял и исходный архив тоже, оч удобно стало…

    1. sugonjakas
      23 сентября 2011 г. в 10:29 / ответ на коммент Piper

      Piper, Будь другом, поделись!;)

  10. Anton
    11 октября 2011 г. в 10:05

    Спасибо все работает!!! а как он производит разархивацию, силами сервера ???

  11. Сергей
    14 декабря 2011 г. в 10:34

    Огромное спасибо!!! Вы сэкономили кучу времени!!! Все отлично работает.

  12. Николай
    20 декабря 2011 г. в 07:30

    Почему распаковывается не в Ту папку, где лежит скрипт, а создает папку и в нее кидает файлы?

    1. 20 декабря 2011 г. в 14:07 / ответ на коммент Николай

      У меня распаковывалось в ту же папку, так что не знаю.

  13. Владимир
    23 декабря 2011 г. в 21:52

    Спасибо. А я тут скриптик нашел на PHP)). Вот тут ссылочка http://is.gd/GF6flJ

  14. psycho-coder
    26 января 2012 г. в 11:34

    Крутая штука) Задолбался по ftp кидать фреймворки

  15. Sunteem
    4 февраля 2012 г. в 17:00

    Отличный скрипт (первый). Простое решение простых задач. Вместо длинных и нудных скриптов с большим количеством настроек и всякой хренью… В общем спасибо!

  16. Angelinroses
    28 февраля 2012 г. в 18:57

    Тру статья, огромное спасибо.

  17. 5 мая 2012 г. в 21:54

    Хорошо расписали, молодец! Только Вы забыли сказать, что по ФТП, папки, созданные (или разархивированные) каким-либо скриптом РНР, сложно удаляются. Точней, созданные вроде вообще не удаляются а разархивированные удалить можно но хитро: нужно удалить сначала файлы в ней, а потом лишь саму папку. Если попытаетесь удалить папку с файлами, потом она будет там видна (по ФТП) но при каком-либо действии с ней менеджер ФТП будет отвечать что папка удалена. :)
    Я данный скрипт давно пользую, только покромсал его: удалил коды для логина/пароля, т.к. имею свою рабочую папку на сервере. А второй вариант сделал для товарища попроще – для разового использования, склеил все в один файл. Описал и выложил здесь – Распаковка архива ZIP на сервере по FTP

    1. Я ничего не забыл, это вы невнимательно читаете. Про это в статье написано и указано решение.

      1. Да, да, сорри, видел, но не обратил внимания. Сам вчера освоил операции по SHH. Как-то пробовал, не выходило пароль ввести. Вчера прочел: оказывается, при введении пароля в PuTTY ничего не индицируется, а копирование в PuTTY – правой кнопкой мыша.

  18. AlexN
    20 июля 2012 г. в 01:18

    Работает лихо, конечно…..Только на все распакованные папки ставит чмоды 777 и не дает изменить..

    1. sugonjakas
      26 июля 2012 г. в 15:15 / ответ на коммент AlexN

      В файле index.php найдите строчку:

      chmod($basedir.’/’.$dirname,0777);

      и измените ее на:

      В файле index.php chmod($basedir.’/’.$dirname,0755);

  19. alsa
    30 июля 2012 г. в 11:22

    Открыл скрипт, как сказано в корневой папке и… что?? Как заархивировать файлы? Он просто показывает мне список директорий и все…

    1. 30 июля 2012 г. в 11:28 / ответ на коммент alsa

      Скрипт не архивирует, он только распаковывает.

  20. Jaguar
    14 октября 2012 г. в 06:16

    Спасибо большое, как раз то, что искал.

Ваш комментарий

Жирный текст

Ссылка

Цитата

Внутристрочный код

CSS-код

HTML-код

JavaScript-код

PHP-код