13.08.2011, 18:02
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
а можно сразу в архив это все пихать, в место того что я написал внизу кода, сделай так:
<?php
$directory_to_pack = dirname( __FILE__ ).'/!';
$tar = gzopen("mytar.tar.gz", "wb");
$files = getRecursiveDir( $directory_to_pack );
foreach( $files as $record ) {
TarAddHeader( $tar, $directory_to_pack.'/'.$record, $record );
TarWriteContents( $tar, $directory_to_pack.'/'.$record );
}
TarAddFooter( $tar );
gzclose( $tar );
?>
И все проблемы, на выходе получишь zlib архив
|
|
13.08.2011, 18:09
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
хотя возможно придеться заменить fwrite в функциях:
TarAddHeader
TarWriteContents
TarAddFooter
на gzwrite хотя как не удивительно, даже с обчным работает, ну и метод сжати можешь указать например так:
$tar = gzopen("mytar.tar.gz", "wb9");
где цифра 9 указывает на уровень зжатия
|
|
13.08.2011, 18:12
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
Сообщение от ваый
|
так а почему бы не сделать zip архив в 5 строчек. или обязательно нужен gzip?
|
Проблема в том что ему и писать то ничего не надо, все за него давно написано (я не про себя я про то что на офф сайте написано). Так что все что нужно было это написать функцию которая считывает директории.
|
|
13.08.2011, 18:29
|
|
Профессор
|
|
Регистрация: 20.07.2009
Сообщений: 202
|
|
на зип архиве не стал делать потому что ясно как там делать, думал на гз есть что то подобное, вот решил разобраться .... "разобрался", на вскидку ,после пояснений и примеров devote(спасибо),понял что куда и откуда. но что то как то....много кода и муторно, надо капать паки и понимать что за заголовки чего куда откуда, в целом не совсем понимаю чего происходит...то есть саму идею
|
|
13.08.2011, 18:47
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
Сообщение от cuberboy
|
но что то как то....много кода и муторно, надо капать паки и понимать что за заголовки чего куда откуда, в целом не совсем понимаю чего происходит...то есть саму идею
|
Ну вы народ смешные ппц, все вам подавай готовое и на блюдечке, помню времена когда приходилось писать целые классы ради того что бы упаковать в тот же ZIP архив, а щас вам разрабы столько всего понаделали что все делается одной какой нить функцией, и тем не менее вам этого мало... По мне так наоборот лучше когда я могу сам все контролировать и делать изменения в местах на низком уровне, это дает и опыт и понимание всего алгоритма, что и как работает...
|
|
13.08.2011, 19:22
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
поправил свой пример, там в функции TarWriteContents отсутствовало закрытие файла, так же и в getRecursiveDir отсутствовало закрытие директории. Такое бывает когда быстро пишешь, что нить да упустишь.
|
|
14.06.2013, 18:00
|
Профессор
|
|
Регистрация: 15.08.2012
Сообщений: 285
|
|
А как ее распаковать?
|
|
15.06.2013, 15:05
|
Особый гость
|
|
Регистрация: 02.04.2010
Сообщений: 4,260
|
|
Зачем все эти абстракции если можно сделать куда проще:
// Упаковать
exec('tar -zcvf folder.tar.gz folder');
// Распаковать:
exec('tar -zxvf folder.tar.gz');
На всякий:
for i in tar, zip, gunzip, unzip bzip2 bunzip2; \
do \
man $i; \
done;
Последний раз редактировалось monolithed, 15.06.2013 в 15:11.
|
|
15.06.2013, 15:45
|
Профессор
|
|
Регистрация: 15.08.2012
Сообщений: 285
|
|
У меня нет доступа к exec на том хостинге, где мне нужно это сделать
|
|
|
|