Реклама на сайте Advertise with us

Создание и чтение архива

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:
+ + +


С нами с 22.08.05
Сообщения: 52
Рейтинг: 1

Ссылка на сообщениеДобавлено: 12/03/06 в 08:33       Ответить с цитатойцитата 

Мужики, подскажите как создать (и прочитать) архив из нескольких файлов методами Perl, чтобы обычный юзер мог его скачать и распаковать.

0
 



С нами с 13.08.03
Сообщения: 533
Рейтинг: 481

Ссылка на сообщениеДобавлено: 12/03/06 в 09:07       Ответить с цитатойцитата 

Код:
system("/usr/bin/zip archive.zip file1 file2 file3...");

ну и unzip соответственно

3
 
+ + +


С нами с 22.08.05
Сообщения: 52
Рейтинг: 1

Ссылка на сообщениеДобавлено: 12/03/06 в 10:06       Ответить с цитатойцитата 

dm писал:
Код:
system("/usr/bin/zip archive.zip file1 file2 file3...");

ну и unzip соответственно

Как я понимаю путь к файлам нужно указывать абсолютный, а первым файлом идет файл архива?
Да и путь /usr/bin/zip тоже вызывает сомнения. Проверки
Код:

-e "/usr/bin/zip"
-e "/usr/lib/zip"
дают отрицательный результат.
Вообще то читать архив я умею
Код:
open  LOG, "gzcat $FileLog|";
, а вот как сделать аналогичную обратную операцию я не спросил, не было на тот момент надобности.

0
 



С нами с 13.08.03
Сообщения: 533
Рейтинг: 481

Ссылка на сообщениеДобавлено: 12/03/06 в 10:41       Ответить с цитатойцитата 

svs писал:
Как я понимаю путь к файлам нужно указывать абсолютный, а первым файлом идет файл архива?

для zip - да
относительные/абсолютные пути - все от конкретной ситуации зависит
Цитата:

Да и путь /usr/bin/zip тоже вызывает сомнения. Проверки
Код:

-e "/usr/bin/zip"
-e "/usr/lib/zip"
дают отрицательный результат.

возможно /usr/local/bin/zip, или вообще не установлен
опять же от конкретного сервера зависит
Цитата:

Вообще то читать архив я умею
Код:
open  LOG, "gzcat $FileLog|";
, а вот как сделать аналогичную обратную операцию я не спросил, не было на тот момент надобности.

gzcat вообще-то не с архивами работает, а отдельными с файлами, это компрессор, а не архиватор
чтобы несколько файлов в один загнать, нужна связка tar (упаковать в один) + gzip (получившийся сжать), получается .tar.gz или .tgz
zip же умеет и паковать и сжимать сам одной командой, и раз "чтобы обычный юзер мог его скачать и распаковать" - выкладывать лучше именно зипы

0
 

www.romartstudio.com

С нами с 06.11.03
Сообщения: 11995
Рейтинг: 2259

Ссылка на сообщениеДобавлено: 12/03/06 в 12:20       Ответить с цитатойцитата 

А такая связка неподойдет?
tar -c -T {listfile} | gzip >{arch}

Стильный дизайн - за реальные деньги Skype shako1322

0
 
+ + +


С нами с 22.08.05
Сообщения: 52
Рейтинг: 1

Ссылка на сообщениеДобавлено: 12/03/06 в 12:47       Ответить с цитатойцитата 

shako писал:

А такая связка неподойдет?
tar -c -T {listfile} | gzip >{arch}


А как ее применять, через open что ли? Поподробнее не мог бы...

0
 
+ + +


С нами с 22.08.05
Сообщения: 52
Рейтинг: 1

Ссылка на сообщениеДобавлено: 12/03/06 в 13:52       Ответить с цитатойцитата 

Заработало! Большое спасибо dm.
Заработало, правда, после того, как поинтересовался у провайдера - и где же ентот zip находится? Он говорит - /usr/bin/zip (?)Но я же до этого проверял - не было там его! Неужто передернулся? icon_smile.gif

0
 
+ + +


С нами с 22.08.05
Сообщения: 52
Рейтинг: 1

Ссылка на сообщениеДобавлено: 12/03/06 в 14:50       Ответить с цитатойцитата 

Сейчас попробую.

Последний раз редактировалось: svs (12/03/06 в 19:23), всего редактировалось 1 раз

0
 



С нами с 13.08.03
Сообщения: 533
Рейтинг: 481

Ссылка на сообщениеДобавлено: 12/03/06 в 14:51       Ответить с цитатойцитата 

хм icon_smile.gif увидел что клиенту zip нужен и поставил
дел-то на 30 секунд

0
 
+ + +


С нами с 22.08.05
Сообщения: 52
Рейтинг: 1

Ссылка на сообщениеДобавлено: 12/03/06 в 19:23       Ответить с цитатойцитата 

Заработать то заработало, но только с путями не могу разобраться.
Указываю абсолютные пути файлов, а архив получается из вложенных папок. каков путь, такой и арахив.
К примеру
Код:

system("/usr/bin/zip Name.zip ../main/one/file1.txt ../main/one/file2.txt ")

А архив получается такой:
Name(htdocs(main(one(file1.txt,file2.txt)))).zip т.е. вложенные папки
В чем дело?

0
 



С нами с 26.02.03
Сообщения: 2366
Рейтинг: 987

Ссылка на сообщениеДобавлено: 13/03/06 в 01:03       Ответить с цитатойцитата 

Под перл есть модуль Archive::Zip. Если хост платный то пусть админ его тебе поставит - работы на пару минут.

0
 
+ + +


С нами с 22.08.05
Сообщения: 52
Рейтинг: 1

Ссылка на сообщениеДобавлено: 13/03/06 в 11:13       Ответить с цитатойцитата 

Я вроде бы разобрался. Сначала нужно перейти в каталог и там уже все будет нормально
Код:
system("cd ../htdocs/main/one; /usr/bin/zip Archiv.zip readme.txt file1.txt file2.txt")

Теперь вот хочу найти - какие опции есть у zip. Как их можно посмотреть?
К примеру - паролик бы надо поставить.

0
 



С нами с 13.08.03
Сообщения: 533
Рейтинг: 481

Ссылка на сообщениеДобавлено: 13/03/06 в 11:38       Ответить с цитатойцитата 

svs писал:

Теперь вот хочу найти - какие опции есть у zip. Как их можно посмотреть?
К примеру - паролик бы надо поставить.

неужели man zip на сервере или zip manual в гугле так сложно набрать ? :)
http://www.die.net/doc/linux/man/man1/zip.1.html

0
 
+ + +


С нами с 22.08.05
Сообщения: 52
Рейтинг: 1

Ссылка на сообщениеДобавлено: 13/03/06 в 12:36       Ответить с цитатойцитата 

dm писал:
неужели man zip на сервере или zip manual в гугле так сложно набрать ? icon_smile.gif

Хм.. Набрать не сложно, если только знать какие буковки набирать.
Спасибо. icon_smile.gif

0
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »