Question

Donc, j'ai un client dont l'hôte actuel ne me permet pas d'utiliser tar via exec () / passthru () / ect et j'ai besoin de sauvegarder le site régulièrement et par programme, existe-t-il une solution?

Ceci est un serveur linux.

Était-ce utile?

La solution 2

Sur http://pear.php.net/package/Archive_Tar , vous pouvez télécharger le Le paquetage PEAR et utilisez-le comme ceci pour créer l’archive:

<?php
require 'Archive/Tar.php';
$obj = new Archive_Tar('archive.tar');
$path = '/path/to/folder/';
$handle=opendir($path); 
$files = array();
while(false!==($file = readdir($handle)))
 {
    $files[] = $path . $file;
 }

if ($obj->create($files))
 {
    //Sucess
 }
else
 {
    //Fail
 }
?>

Autres conseils

PHP 5.3 offre un moyen beaucoup plus simple de résoudre ce problème.

Regardez ici: http://www.php.net/manual/en /phardata.buildfromdirectory.php

<?php
$phar = new PharData('project.tar');
// add all files in the project
$phar->buildFromDirectory(dirname(__FILE__) . '/project');
?>

Il existe la bibliothèque Archive_Tar . Si cela ne peut pas être utilisé pour une raison quelconque, l'extension zip peut être une autre option.

J'ai besoin d'une solution qui fonctionnerait sur les sites Web Azure (IIS) et qui rencontrait des problèmes pour créer de nouveaux fichiers sur le serveur en utilisant des méthodes issues d'autres réponses. La solution qui a fonctionné pour moi a été d’utiliser une petite TbsZip bibliothèque de la compression, qui ne nécessite pas d'écrire de fichier sur le serveur - elle est simplement renvoyée directement via HTTP.

Ce fil est ancien, mais cette approche est peut-être un peu plus générique et complète, donc je poste le code comme alternative:

// Compress all files in current directory and return via HTTP as a ZIP file
// by buli, 2013 (http://buli.waw.pl)
// requires TbsZip library from http://www.tinybutstrong.com

include_once('tbszip.php'); // load the TbsZip library
$zip = new clsTbsZip(); // instantiate the class
$zip->CreateNew(); // create a virtual new zip archive

// iterate through files, skipping directories
$objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator('.'));
foreach($objects as $name => $object)
{ 
    $n = str_replace("/", "\\", substr($name, 2)); // path format
    $zip->FileAdd($n, $n, TBSZIP_FILE); // add fileto zip archive
}

$archiveName = "backup_".date('m-d-Y H:i:s').".zip"; // name of the returned file 
$zip->Flush(TBSZIP_DOWNLOAD, $archiveName); // flush the result as an HTTP download

Et voici l'intégralité de l’article sur mon blog .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top