а можно сразу в архив это все пихать, в место того что я написал внизу кода, сделай так:
<?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, время: 14:32. |