PclTar – libreria php per tar e untar dei file – parte 2

Continuiamo la lista delle funzioni di PclTar:
 

PclTarExtract($p_tarname, $p_path, $p_remove_path, $p_mode) :

Estrae tutti i file dell'archivio nella directory $p_path. Il path relativo di ciascun file è mantenuto relativo a $p_path. In ogni caso, usando $p_remove_path è possibile rimuovere la prima parte del path deò file archiviato.
Se il file è salvato come "dev/include/conf.txt" nell'archivio ed estratto da PclTarExtract("archive.tgz", "data", "dev"), il file sarà scritto in "data/include/conf.txt".

Se esiste un file con lo stesso nome, questo sarà sovrascritto solo se il file archiviato è più nuovo. Se è più vecchio il file non sarà estratto e il campo "status" nel file descriptor sarà settato con il valore  "newer_exist".
Se sta estraendo un file ed esiste una directory con lo stesso nome, il file non sarà estratto. Il campo "status" nel file descriptor sarà settato con il valore "already_a_directory".
Se sta estraendo un file ed esiste un file con lo stesso nome che è protetto in scrittura, il file non sarà estratto. Il campo "status" nel file descriptor sarà settato con il valore "write_protected".
Lo stesso comportamento vale per l'estrazione di directory.
La funzione restituisce la lista dei file estratti nello stesso formato di PclTarList().
A seconda dell'estensione dell'archivio (.tar, .tar.gz ou .tgz)  la funzione si comporta di conseguenza. Se l'archivio ha un altra estensione è necessario specificare in $p_mode se è compresso ('tgz') o no ('tar').
 

PclTarExtractList($p_tarname, $p_list, $p_path, $p_remove_path, $p_mode) :

La funzione è la stessa di PcltarExtract(), ma sono estratti solo i file o directory indicati in  $p_list.
 

PclTarExtractIndex($p_tarname, $p_index, $p_path, $p_remove_path, $p_mode) :

La funzione è la stessa di PcltarExtract(), ma sono estratti solo i file o directory indicati nel parametro indice $p_index.
Il parametro $p_index è una singola stringa con l'indice dei file o direcctory da estrarre, o diversi range di indici di file/directory da estrarre. In questo caso il formato di $p_index è : '2,5-10,11,14,19-33', una lista di variabili separate da una virgola ','. Ogni valore è un indice o un range di indici. Il range è composto da due valori (inizio e fine inclusi) separati da '-'.
Attenzione che il formato di $p_index non supporta nessun altro carattere che numeri, ',' e '-'. (Spazi e ';' non sono supportati).
Inoltre se l'indice identifica una directory, viene creata (estratta) solo la directory, ma non le sotto-directory ne i file contenuti.
 

PclTarDelete($p_tarname, $p_filelist, $p_mode) :

Cancella i file indicati nelle lista $p_filelist dall'archivio $p_tarname.
$p_filelist può essere un array di nomi di file o directory, o una singola stringa contenente la lista dei file o directory separati da un singolo spazio.
A seconda dell'estensione dell'archivio (.tar, .tar.gz ou .tgz)  la funzione si comporta di conseguenza. Se l'archivio ha un altra estensione è necessario specificare in $p_mode se è compresso ('tgz') o no ('tar').
Quando viene indicata la rimozione di una directory, vengono rimossi anche tutti i file e sorro-directory contenuti.
 

PclTarUpdate($p_tarname, $p_filelist, $p_mode, $p_add_dir, $p_remove_dir) :

I file indicati in $p_filelist sono aggiornati nell'archivio $p_tarname se la data di modifica è successiva a quella del file già presente. Se il file non esiste nell'archivio, viene aggiunto alla fine (stesso comportamento di PclTarAddList()).
$p_filelist può essere un array di nomi di file o directory, o una singola stringa contenente la lista dei file o directory separati da un singolo spazio.
A seconda dell'estensione dell'archivio (.tar, .tar.gz ou .tgz)  la funzione si comporta di conseguenza. Se l'archivio ha un altra estensione è necessario specificare in $p_mode se è compresso ('tgz') o no ('tar').
 

PclTarMerge($p_tarname, $p_tarname_add, $p_mode, $p_mode_add) :

Il contenuto dell'archivio $p_tarname_add viene aggiunto alla fine dell'archivio $p_tarname. $p_tarname_add non viene modificato. I tipi di archivi  (compressi o no) possono essere mischiati. Ogni archivio mantiene il suo modo di origine.
A seconda dell'estensione dell'archivio (.tar, .tar.gz ou .tgz)  la funzione si comporta di conseguenza. Se l'archivio ha un altra estensione è necessario specificare in $p_mode se è compresso ('tgz') o no ('tar').

 

Conclusioni

Come detto nella prima parte, la libreria è stata scritta per php 3. Su php 5 non sono riuscito a creare un archivio tar; una volta indicato un file o una directory da aggiungere, la libreria esce dal percorso indicato e cerca di includere, in maniera ricorsiva, tutto quello che incontra, copmpreso il file stesso che sta cercando di creare. Per l'estrazione di file non si sono riscontrati problemi. Le altre funzioni non sono state testate.

Ero alla ricerca di una libreria che potesse gestire i file tar, purtroppo questa libreria non si è dimostrata allo stesso livello della equivalente libreria per i file zip.
E' consigliata solamente nel caso si debba lavorare con i file tar e si abbia la necessità di estrarli sul server remoto.
 

Tags: , , ,

About the Author

Post a Reply

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Top