Jak za pomocą PHP utworzyć archiwum TAR GZ

Archiwa .tar.gz to standardowy sposób pakowania plików w systemach unixowych (na których działa większość serwerów). Można je tworzyć z poziomu PHP na dwa sposoby.

Tworzenie archiwów za pomocą PEAR::Archive_Tar

Pakiet Archive_Tar wchodzi w minimalny zestaw instalowany razem z PEAR. Aby utworzyć archiwum Tar, należy najpierw stworzyć nową instancję klasy Archive_Tar:

$tar = new Archive_Tar("nazwa pliku", "gz");

Zamiast „gz” można też wybrać „bz2″ (nieco wydajniejszy algorytm, ale nie zawsze obsługiwany pod Windows).

Następnie tworzymy listę plików do zarchiwizowania:

$pliki = array("plik1", "plik2", "plik3");

I wykonujemy metodę create:

$tar->create($pliki);

To wszystko. Metoda create robi wszystko za nas, łącznie z zamykaniem dostępu do pliku (nie musimy tego robić ręcznie, a właściwie to nawet nie ma metody do tego celu).

Jednak Archive_Tar ma dwa poważne ograniczenia. Jest bardzo powolny (w porównaniu z programem tar wykonywanym z linii poleceń – nawet kilkanaście razy wolniejszy). Po drugie, PHP ma wbudowane ograniczenie czasu wykonywania pliku. Domyślnie jest to 30 sekund i jeśli nie jesteśmy administratorami serwera, nie będziemy w stanie tego zmienić. Dlatego za pomocą Archive_Tar nie spakujemy na przykład plików bloga WordPress, jeśli chcielibyśmy zrobić w ten sposób backup. Aby ominąć to ograniczenie, trzeba zastosować polecenie PHP system(), którego czasu wykonywania nie wlicza się do ograniczenia, o którym wspomniałem przed chwilą.

Dokumentacja do Archive_Tar znajduje się tutaj.

Tworzenie archiwum Tar za pomocą PHP system()

Tworzenie archiwum w ten sposób polega na wykonaniu komendy w taki sam sposób, w jaki wykonalibyśmy ją z poziomu wiersza poleceń. Tak właśnie działa funkcja PHP system().

Komenda unixowa wygląda tak:

tar zcf nazwa_pliku_do_utworzenia.tar.gz plik1 plik2 plik 3 plikn

I krótkie objaśnienie: tar to nazwa programu. „zcf” to przełączniki:

  • „z” – po utworzeniu spakuj do formatu gz (aby wybrać format bz2 można zmienić ten przełącznik na „j” – z tym, że może nie być obsługiwany),
  • „c” – utwórz nowy plik
  • „f” – powinno być na końcu, ponieważ po nim następuje nazwa nowego pliku archiwum.

„plik1″, „plik2″ itd. to ścieżki do plików, które mają zostać dołączone do nowego archiwum.

Teraz wykonujemy tę komendę z poziomu PHP:

system("tar zcf nazwa_pliku_do_utworzenia.tar.gz plik1 plik2 plik3 plikn");

Za chwilę w katalogu pojawi się nowe archiwum tar.gz, zawierające wskazane pliki.

Wypowiedz się

*