Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> perl и gzip 
V
    Опции темы
worsvch
Дата 2.11.2013, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 23.4.2009

Репутация: нет
Всего: нет



Пишу скрипт на perl, который использует модуль IO::Compress::Gzip. Скрипт сжимает файлы в формат gz. 
Но только вот проблема: 
1. В gz архиве сохраняется вся вложенность каталогов. К примеру, пусть файлы расположены в каталоге c:\files\01_11_2013\
Дак вот в gz архиве они сохраняют всю эту вложенность, то есть в нем также присутствуют каталоги files и 01_11_2013, хотя надо чтобы вложенность отсутствовала и в архиве были только файлы без каталогов
2. Не могу разобраться, как сделать так, чтобы оригинальные файлы сразу удалялись. В линуксе, например, можно сделать просто:
gzip file, результатом выполнения которой будет file.gz, а файла file не останется
Просьба помочь разобраться
PM MAIL   Вверх
arto
Дата 2.11.2013, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



1. не понял проблему. gzip не архиватор, а компрессор.
2. perldoc -f unlink
PM MAIL ICQ   Вверх
worsvch
Дата 2.11.2013, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 23.4.2009

Репутация: нет
Всего: нет



Цитата(arto @ 2.11.2013,  10:57)
1. не понял проблему. gzip не архиватор, а компрессор.
2. perldoc -f unlink

1. Внутри gz-файла файлы лежат так:
\files\01_11_2013\file1.dat
\files\01_11_2013\file2.dat
\files\01_11_2013\file3.dat
и т.д.
а надо, чтобы: 
file1.dat
file2.dat
file3.dat
То есть, чтобы модуль IO::Compress::Gzip не сохранял пути.
2. Про unlink  я в курсе, может ли модуль IO::Compress::Gzip удалять оригинальные файлы после сжатия в gz?

Это сообщение отредактировал(а) worsvch - 2.11.2013, 11:06
PM MAIL   Вверх
arto
Дата 2.11.2013, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



1. покажите код, как вы это делаете.
2. если в документации нет, то нет.
PM MAIL ICQ   Вверх
worsvch
Дата 2.11.2013, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 23.4.2009

Репутация: нет
Всего: нет



Часть кода, в которой отрабатывает gzip
Код

if ($trigger == 1) {
        while (readdir BACKUP) {
                if ($_ !~ /^\.{1,2}$/) {
                    if (($_ =~ /dbf$/i) || ($_ =~ /ctl$/i) || ($_ =~ /log$/i)) {
                                                #yesterday - это путь к файлам 
                        my $status = gzip "$yesterday\\$_" => "$yesterday\\$_.gz" or die "gzip failed: $GzipError\n";
                    }
                }
        }

PM MAIL   Вверх
arto
Дата 4.11.2013, 08:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



из приведенного кода не следует, что в .gz файле лежат несколько других файлов
PM MAIL ICQ   Вверх
worsvch
Дата 5.11.2013, 09:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 23.4.2009

Репутация: нет
Всего: нет



Цитата(arto @ 4.11.2013,  08:50)
из приведенного кода не следует, что в .gz файле лежат несколько других файлов

Не следует, но каждый файл лежит внутри нескольких папок, а надо чтобы открыл gz файл а там сразу файл который сжимал, а получается, что открываешь архив, например в 7-zip, а там папка и чтобы добраться до файла нужно пройти через несколько папок, прежде чем доберешься до самого файла

Это сообщение отредактировал(а) worsvch - 5.11.2013, 09:37
PM MAIL   Вверх
arto
Дата 5.11.2013, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



ну так и выводите его туда, куда вам надо: => "/tmp/$_.gz".
это к модулю не относится.
PM MAIL ICQ   Вверх
worsvch
Дата 5.11.2013, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 23.4.2009

Репутация: нет
Всего: нет



Цитата(arto @ 5.11.2013,  11:31)
ну так и выводите его туда, куда вам надо: => "/tmp/$_.gz".
это к модулю не относится.

Именно так и делаю, дак вот в этом и проблема, так как каталог tmp тоже окажется в файле gz, а нужен только сам файл без каталогов, то есть чтобы пути не сохранялись в архиве
PM MAIL   Вверх
Pfailed
Дата 5.11.2013, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 19.7.2009

Репутация: 22
Всего: 39



опцию Name из документации попробуйте


--------------------
PM MAIL   Вверх
worsvch
Дата 9.11.2013, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 23.4.2009

Репутация: нет
Всего: нет



Цитата(Pfailed @ 5.11.2013,  18:27)
опцию Name из документации попробуйте

Сделал по другому, использовал chdir и там уже запускал gzip, результат был, который хотел
PM MAIL   Вверх
MikaGold
Дата 14.11.2013, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 12.11.2013

Репутация: нет
Всего: нет



Да уж, для меня всегда сложновато это все было. Разбираете четко, опыт)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1093 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.