Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Перл архивирование для новичка


Автор: list2006 30.12.2006, 22:41
Здравствуйте гуру Перла!

У меня есть хостинг с поддержкой перла, в перле я ваше не разбираюсь
пожалуйста объясните пошагово как заархивировать(максимально) через перл, каталог(каталоги) у меня на веб сайте? 

Автор: Nab 31.12.2006, 01:39
Ну эт конечно если не используется база данных, то делается это так:

1. Создается файлик с расширением которое используется для CGI, обыкновенно .pl или .cgi.
2. Далее пишем программу исполюзующую модуль любого доступного архиватора, обыкновенно это иерархия Compressed::*.
3. Также подключаем CGI.pm и рисуем простенький вебинтерфейс, чтоб наше резевное копирование было красивым...
4. Тут вопрос сложненький, ибо если сайт большой, то архивируя весь ресурс можно напороться на умирание скрипта по таймауту... или перерасходу ресурсов. smile

А я бы вообще сделал вот так
Код

system ('tar -czf backup1.tgz ./html_doc');


И все smile
вместо ./html_doc впиши путь каталога или нескольких каталогов которые хочешь сохранить... 

Автор: list2006 31.12.2006, 12:41
а это где прописывать в командной строке чтоли?

Автор: Materium 31.12.2006, 13:26
list2006 ето команда Perl, системный вызов (моно выполнять системные команды) smile

Кста Nab а почему незя без system просто в апострофах ту же команду выполнить, объясни плиз какая разница? 

Автор: list2006 5.1.2007, 15:56
Цитата(Materium @ 31.12.2006,  13:26)
list2006 ето команда Perl, системный вызов (моно выполнять системные команды) smile

Кста Nab а почему незя без system просто в апострофах ту же команду выполнить, объясни плиз какая разница?

а можно пожалуйста по подробней, а то я не совсем понимаю что где прописывать

Автор: tishaishii 6.1.2007, 14:59
Код

use Archive::Zip qw(:ERROR_CODES :CONSTANTS);#подгружаем модуль с константами
my$zip=Archive::Zip->new;#создаём объект архиватора
my$member=$zip->addDirectory('путь к папке');#добавляем в проект папку
$member->desiredCompressionMethod(COMPRESSION_DEFLATED);#устанавливаем для неё максимальные значения сжатия
$member->desiredCompressionLevel(COMPRESSION_LEVEL_BEST_COMPRESSION);
$member=$zip->addFile('путь к файлу', 'новый путь файла внутри архива');
$member->desiredCompressionMethod(COMPRESSION_DEFLATED);
$zip->writeToFileNamed('записать архив');#укажи здесь название нового архива
#конец


Добавлено @ 15:02 
Да, только смотри, у меня пока не получилось, используя модуль Archive::Zip, добавлять в архив файлы и папки с русскими именами, они добавляются, но имена коробятся на юникод.
Как указать кодировку - не в курсе.

Добавлено @ 15:03 
Код

$ENV{LC_COLLATE}='cp1251';
use locale;

перед use Archive::Zip - не помогает.

Автор: Materium 8.1.2007, 12:22
tishaishii а моно плиз в цифрах, укажи среднее значение для

Код

$member->desiredCompressionMethod(COMPRESSION_DEFLATED);#устанавливаем для неё максимальные значения сжатия
$member->desiredCompressionLevel(COMPRESSION_LEVEL_BEST_COMPRESSION);


вместо COMPRESSION_DEFLATED, COMPRESSION_LEVEL_BEST_COMPRESSION
а то я не в курсах что подставлять

Автор: nitr 8.1.2007, 12:27
Materium, копируй весь пример smile
там же указано
Код

use Archive::Zip qw(:ERROR_CODES :CONSTANTS);

увидел? КОНСТАНТЫ подгружаются!!! (:CONSTANTS)

Автор: tishaishii 9.1.2007, 00:01
В цифрах - не помню. Смотри perldoc Archive::Zip, а лучше, tkpod Archive::Zip.
Но, что-то в памяти осталось, что 9 - самое крутое сжатие.
А на всякий случай, можешь написать:
Код

use Archive::Zip qw(:ERROR_CODES :CONSTANTS);
$,="\n";
print COMPRESSION_DEFLATED, COMPRESSION_LEVEL_BEST_COMPRESSION;

и посмотри что первое, а что второе.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)