Frage

Also ich habe einen Kunden, die aktuelle Host ist mir nicht erlaubt tar über exec () zu verwenden / passthru () / ect und ich brauche die Seite periodicly zu sichern und programmaticly so ist es eine Lösung?

Dies ist ein Linux-Server.

War es hilfreich?

Lösung 2

http://pear.php.net/package/Archive_Tar die donload können PEAR tAR-Paket und es so verwenden sie das Archiv zu erstellen:

<?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
 }
?>

Andere Tipps

PHP 5.3 bietet einen viel einfacheren Weg, um dieses Problem zu lösen.

Schau mal hier: 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');
?>

Es ist die Archive_Tar Bibliothek. Wenn das nicht aus irgendeinem Grund verwendet werden, die zip Erweiterung könnte eine weitere Option sein.

Ich brauche eine Lösung, die auf Azure-Websites (IIS) und hatte Probleme bei der Erstellung neue Dateien auf dem Server unter Verwendung von Methoden aus anderen Antworten funktionieren würde. Die Lösung, die für mich gearbeitet wurde kleine TbsZip Bibliothek verwendet für Kompression, die Datei zu schreiben, nicht überall auf dem Server benötigt -. es direkt über HTTP nur zurückgegeben

Dieser Thread ist alt, aber dieser Ansatz könnte ein bisschen mehr Generika und vollständige Antwort sein, so poste ich den Code als 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

Und hier sind die ganzen Artikel auf meinem Blog .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top