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

In un articolo passato avevo parlato della libreria php PclZip. Chi lavora su sistemi Unix, è probabile più abituato ad usare il tar, eventualmente accompagnato da gzip, piuttosto che lo zip. Volendo utilizzarlo da php, è possibile farlo tramite una libreria che si può trovare qui:

http://www.phpconcept.net/pcltar

La libreria permette di creare o estrarre dati da archivi GNU tar, normali, o compressi tramite gzip. In questo post, diviso in due parti vedremo quali sono le funzioni fornite dalla libreria.
Nota. La libreria è stata scritta per php 3 ed è dichiarata funzionante su php 4. Da prove effettuate su php 5 sono risultati alcuni malfunzionamenti che ne pregiudicano, in parte, l'usabilità.

Una volta scaricato il pacchetto PclTar dal sito, ci ritroviamo tre file. pcltar.lib.php3 che è la libreria vera e propria, pclerror.lib.php3 e pcltrace.lib.php3 per il tracciamento degli errori. L'utilizzo è molto semplice basterà includere nel seguente ordine i tre file:

Un piccolo esempio per estrarre i dati da un tar compresso è il seguente:

La descrizone sull'utilizzo delle funzioni si può trovare qui: http://www.phpconcept.net/pcltar/user-guide

Avremo quindi a disposizione le seguenti funzioni:

 

PclTarCreate($p_tarname, $p_list, $p_mode, $p_add_dir, $p_remove_dir) :

Crea un nuovo archivio col nome $p_tarname. Se sono elencati file o directory in $p_list, sono aggiunti all'archivio.
Se l'estensione dell'archivio ($p_tarname) è '.tar', allora l'archvio sarà non compresso. (standard GNU TAR), Se è  '.tar.gz' or '.tgz', l'archvio sarà compresso con gzip. Se si vuole utilizzare un altra estensione bisogna indicare il formato in $p_mode ('tar' ou 'tgz').
I parametri $p_list, $p_add_dir e $p_remove_dir sono descritti in PclTarAddList().
 

PclTarAddList($p_tarname, $p_list, $p_add_dir, $p_remove_dir, $p_mode) :

Aggiunge ad un archivio esistente file o directory elencati in  $p_list.
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').

Il parametro $p_list può essere:

  • Un array di stringhe, dove ognuna rappresenta il nome di un file o directory,
  • Una stringa con il nome di un file o directory da archiviare,
  • Una stringa che contiene una lista di file o directory separati dal carattere spazio.

PclTarAddList() automaticamente riconosce se il nome indicato è un file o una directory e se è leggibile o no. Se è una directory tutti i file e sottodirectory sono aggiunti all'archivio (funzione ricorsiva).
Nota. se una directory è vuota, viene creata l'entry senza file all'interno.
Il path relativo dei file viene salvato nell'archivio, in ogni caso viene ridotto per quanto possibilre:

  • data/../include/file.txt darà include/file.txt
  • ./include/file.txt darà include/file.txt
  • ../../include/file.txt darà include/file.txt
  • etc …

$p_add_dir e $p_remove_dir danno la possibilità di salvare file nella / directory anche se il path del file non è la / directory :
Usando PclTarAddList("archive.tgz", "dev/include/conf.txt", "release", "dev"), l'archivio conterrà un file con il path "release/include/conf.txt".
Aggiungendo un gran numero di file si può superare il "maximum script execution time"
 

PclTarAdd($p_tarname, $p_list) :

Questa funzione non dovrebbe essere più usata. Utilizzare PclTarAddList().
 

PclTarList($p_tarname, $p_mode) :

Fornisce la lista dei file inclusi nell'archivio $p_tarname.
Il valore di ritorno della funzione è un array che contiene un array di proprietà di file in caso di successo, 0 se c'è un errore.
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').

Le proprietà del file sono :

  • list[0][filename] : filename del file 0,
  • list[0][mode] : Access mode del file 0 (vedi chmod()),
  • list[0][size] : Size del file 0,
  • list[0][uid] : Owner del file 0,
  • list[0][gid] : Group del file 0,
  • list[0][mtime] : Data ultima modifica del file 0,
  • list[0][typeflag] : File type 0 (0 per "file", 1 per "link", 5 per "directory"),
  • list[0][status] : Status dell'azione sul file (ok, added, updated, not_updated, already_a_directory, write_protected, newer_exist, path_creation_fail, write_error).

 

Continua nella seconda parte.

Tags: , , ,

About the Author

Post a Reply

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

Top