Форум: "Потрепаться";
Текущий архив: 2003.09.15;
Скачать: [xml.tar.bz2];
ВнизОффтопик% как в PHP распаковать tar архив Найти похожие ветки
← →
Denkop (2003-08-26 17:05) [0]С PHP подружился недавно и сразу встала необходимость юзания tar архивов. Как работать с gz нашёл, а про tar ничего. Может кто сталкивался и может что-то посоветовать?
← →
ZZ (2003-08-26 18:15) [1]может конечно :-) советую прогуляться на другой форум :-))
← →
Calm (2003-08-26 18:16) [2]Это что же за такая необходимость юзать архивы?
Если не секрет, конечно, поведайте.
← →
DenKop (2003-08-26 23:08) [3]Скодил программу работающую на локальной машине, юзающую БД (firebird). Такая же база лежит в инете(mysql). Моя программа ведёт лог запросов к БД изменящих данные (INSERT, UPDATE, DELETE). Такой же лог ведёт php скрипт на сервере. В БД хранятся двоичные файлы, но беда в том, что файлы лежат отдельно, а в бд хранятся только ссылки на них. Главная задача состоит в синхронизации обоих бд. Ну вот чтобы не кидать по одному файлу на сервер, и след-но не забирать их оттуда по одному, да и размер файлов великоват, решил маленько припаковать их для загрузки одним файлом по ftp. Т.е. должна получиться система репликации баз данных на лок машине и базы лежащей в нете. Бд довольно большая и часто изменяющаяся... Вот примерно такой расклад.
Слышал можно как то выполнить шеловский tar32 через exec(), но ничего по этой теме не нарыл. Может кто чё слышал по теме?
← →
ZZ (2003-08-27 00:44) [4]passthru("tar lalala");
но скорее всего не заработает, т.к. может у пхп стоять safemode
← →
Denkop (2003-08-27 09:14) [5]
> ZZ
Очень жаль, но это не прошло. Наверное прийдётся смириться с мыслью noTAR. :-()
← →
Nikolay M. (2003-08-27 09:42) [6]
> Слышал можно как то выполнить шеловский tar32 через exec(),
> но ничего по этой теме не нарыл
Плохо рыл. Вторая же строчка поиска яндекса:
http://php.rinet.ru/manual/en/function.exec.php
← →
Denkop (2003-08-27 10:16) [7]Nikolay M.>>
что такое exec() и passthru() я нашёл, а вот почему не работает архиватор, нет. Хотя может у хостера его вообще нет.
Как бы там ни было ни exec() ни passthru("tar lalala"); ничего не делают, просто молчат.
← →
McSimm (2003-08-27 10:22) [8]А zip не устроит?
← →
Denkop (2003-08-27 10:49) [9]Вся беда в том, что я не знаю, что есть у хостера. В идеальном варианте хотелось бы найти скрипт который без помощи посторонних библиотек умел бы работать с архивами, а самому, ой как не хочется разбирать алгоритмы zip и tar.
← →
McSimm (2003-08-27 11:06) [10]phpinfo(8);
Покажет все об установленных модулях.
Например
bz2, для работы с файлами .bz2
zlib, для работы с файлами .gz
ZZIPlib для работы с zip архивами (read-only)
← →
McSimm (2003-08-27 11:08) [11]А также zip может быть у хостера.
← →
han_malign (2003-08-27 11:20) [12]а какой tar - GNUtar,UStar(POSIX), есть FreeBSD модификация(GNU)?
Хотя на самом деле они отличаются только заголовком (512 байт), а данные(файлы) в tar-e лежат без сжатия и даже без CRC (на и то .tar.gz(bz,bz2), что .tar не сжат).
(в случае имени файла длинной меньше 100 - все форматы совместимы с изначальным TAR(для чтения))
Все заголовки выравнены на границе 512 байт от начала.
Заголовок перед каждым файлом, общего заголовка нет(может быть(GNU tar), но просто как добавленный спец-файл),
tar - заголовок
Field Width Field Name Meaning
100 name name of file
8 mode file mode
8 uid owner user ID
8 gid owner group ID
12 size length of file in bytes
12 mtime modify time of file
8 chksum checksum for header
1 link indicator for links
100 linkname name of linked file
USTAR - заголовок
Field Width Field Name Meaning
100 name name of file
8 mode file mode
8 uid owner user ID
8 gid owner group ID
12 size length of file in bytes
12 mtime modify time of file
8 chksum checksum for header
1 typeflag type of file
100 linkname name of linked file
6 magic USTAR indicator
2 version USTAR version
32 uname owner user name
32 gname owner group name
8 devmajor device major number
8 devminor device minor number
155 prefix prefix for file name
в GNU расширен typeflag и длинные имена прописываются дополнительным "файлом", с typeflag="L" и содержимым - собственно именем файла.
Все в ASCII, все цифровые поля(mode,uid,gid,size,mtime(POSIX C-time), etc) в восьмеричном виде.
typeflags
0 or null Regular file
1 Link to another file already archived
2 Symbolic link
3 Character special device
4 Block special device
5 Directory
6 FIFO special file
7 Reserved
( GNU tar)
D This is a dir entry that contains the names of files that were in the dir at the time the dump was made.
K Identifies the NEXT file on the tape as having a long linkname.
L Identifies the NEXT file on the tape as having a long name.
M This is the continuation of a file that began on another volume.
N For storing filenames that didn"t fit in 100 characters.
S This is for sparse files.
V This file is a tape/volume header. Ignore it on extraction.
← →
blackman (2003-08-27 12:17) [13]GZIP.
← →
Denkop (2003-08-28 09:12) [14]All> сенкс, разобрался.
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2003.09.15;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.01 c