Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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
14-48693
Lu
2003-08-25 11:12
2003.09.15
Еще одна простенькая задачка


14-48738
Delphi5.01
2003-08-26 19:47
2003.09.15
Запасный выход


4-48825
Kryukov Andrew
2003-07-15 14:12
2003.09.15
Win 2000 or XP


3-48434
Lenchik_Z
2003-08-25 06:54
2003.09.15
ADOQuery


3-48394
Erik
2003-08-26 12:25
2003.09.15
Как скопировать поле их одного DataSet в другой?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский