O rezolvare foarte simpla in multe situatii, pentru o problema destul de serioasa. In scenariul in care am avea de mutat un website, ale carui fisiere numara cateva mii, iar providerul de web hosting nu ne asigura un sistem de backup cu arhivare sau alta metoda similara care sa ne permita acest lucru, transferul prin FTP este o solutie care ne-ar ocupa foarte mult timp.
Un script PHP urcat pe serverul care gazduieste website-ul ne-ar ajuta sa facem arhivarea in format .TAR al tuturor fisierelor dintr-un folder.
Cum arhivam fisiere si foldere pe un web server, folosind in script PHP?
Copiem scriptul de mai jos si il punem intr-un fisier .php pe server. Exemplu: arhiva.php sa contina scriptul de mai jos:
<?php
try {
//make sure the script has enough time to run (300 seconds = 5 minutes)
ini_set('max_execution_time', '300');
ini_set('set_time_limit', '0');
$target = isset($_GET["targetname"]) ? $_GET["targetname"] : 'archive.tar'; //default to archive.tar
$dir = isset($_GET["dir"]) ? $_GET["dir"] : './.'; //defaults to all in current dir
//setup phar
$phar = new PharData($target);
$phar->buildFromDirectory(dirname(__FILE__) . '/'.$dir);
echo 'Compressing all files done, check your server for the file ' .$target;
} catch (Exception $e) {
// handle errors
echo 'An error has occured, details:';
echo $e->getMessage();
}
?>
Atentie! Scriptul trebuie urcat in folderul in care dorim sa facem arhivarea folderul si fisierelor care le contine. De exemplu, daca dorim sa arhivam tot continutul folderului wp-content, al WordPress, fisierul numit de noi arhiva.php va fi urcat in /wp-content/.
Arhiva se creeaza accesand in browser fisierul arhiva.php. url: http:..nume_website.tld/wp-content/arhiva.php, iar la finalul operatiunii pe server va fi prezent fisierul archive.tar.
In cazul in care aveti un volum mare de fisiere, schimbati valoare de “timeout” a timpului de executie. Puteti face acest lucru din php.ini sau din .htaccess.