2008-12-02 19 views
9

Şu anki ana bilgisayarımın, exec()/passthru()/ect ile tar kullanmamıza izin vermediğim bir müşterim var ve siteyi düzenli olarak ve programatik olarak yedeklemem gerekiyor. bir çözüm var mıOluşturmak için PHP/dizin dosyasından PHP dosyasındaki Tar dosyasını oluşturun

Bu bir linux sunucusudur.

+0

Garip bir sınırlama gibi görünüyor. –

+0

Ama tamamen ortak değil, birçok ana bilgisayar sadece chjail'ing kullanıcıları yerine kullanımı tamamen engelliyor. – UnkwnTech

+0

Doğru, ama dosya sistemi ile etkileşime girmesi PHP'nin gücü göz önüne alındığında, aptalca. –

cevap

8

http://pear.php.net/package/Archive_Tar azından ARMUT katran paketini donload ve arşiv oluşturmak için bu gibi kullanmak:

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

Archive_Tar kütüphanesi var. Bu, bir nedenle kullanılamazsa, zip uzantısı başka bir seçenek olabilir.

+0

Yazarken gönderiyorsunuz ama kodu olduğu için benimkini burada tutacağım. – UnkwnTech

0

ben Azure web siteleri (IIS) üzerinde çalışmak ve diğer cevaplardan yöntemler kullanılarak sunucu üzerinde yeni dosyaları oluşturma ile sorun vardı bir çözüm gerekiyor. Benim için çalışan çözüm, sıkıştırma için küçük TbsZip kütüphanesini kullanmaktı; bu, sunucuda herhangi bir yere dosya yazmayı gerektirmiyordu - sadece doğrudan HTTP üzerinden döndü.

Bu iplik eski, ama bu yaklaşım biraz daha genel ve tam cevap olabilir, bu yüzden alternatif olarak kod sonrası:

// 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 

Ve burada bütün article on my blog bu.

İlgili konular