а можно сразу в архив это все пихать, в место того что я написал внизу кода, сделай так:
<?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 архив |
хотя возможно придеться заменить fwrite в функциях:
TarAddHeader TarWriteContents TarAddFooterна gzwrite хотя как не удивительно, даже с обчным работает, ну и метод сжати можешь указать например так:
$tar = gzopen("mytar.tar.gz", "wb9");
где цифра 9 указывает на уровень зжатия |
Цитата:
|
на зип архиве не стал делать потому что ясно как там делать, думал на гз есть что то подобное, вот решил разобраться .... "разобрался", на вскидку ,после пояснений и примеров devote(спасибо),понял что куда и откуда. но что то как то....много кода и муторно, надо капать паки и понимать что за заголовки чего куда откуда, в целом не совсем понимаю чего происходит...то есть саму идею
|
Цитата:
|
поправил свой пример, там в функции TarWriteContents отсутствовало закрытие файла, так же и в getRecursiveDir отсутствовало закрытие директории. Такое бывает когда быстро пишешь, что нить да упустишь. :)
|
А как ее распаковать?
|
Зачем все эти абстракции если можно сделать куда проще:
// Упаковать
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;
|
У меня нет доступа к exec на том хостинге, где мне нужно это сделать
|
| Часовой пояс GMT +3, время: 07:16. |