پشتيبان گيری از پوشه های برنامه بصورت فايل zip با استفاده از اسكريپت PHP

در مطلب قبلی به طريقه “پشتيبان گيری از ديتابيس mysql با استفاده از اسكريپت PHP” اشاره داشتيم.

در اين مطلب طريقه پشتيبان گيری از يه فولدر رو ميگيم،

شما ميتونيد از تركيب اين دو هم استفاده كنيد!!

$the_folder = 'Your-Folder-Address';
$zip_file_name = date("Y-m-d-H-i-s").'.zip';

$download_file= true;
$delete_file_after_download= true; //if true: delete temp file after download !!

class FlxZipArchive extends ZipArchive {
 /** Add a Dir with Files and Subdirs to the archive;;;;; @param string $location Real Location;;;; @param string $name Name in Archive;;; @author Nicolas Heimann;;;; @access private **/

public function addDir($location, $name) {
 $this->addEmptyDir($name);

$this->addDirDo($location, $name);
 } // EO addDir;

/** Add Files & Dirs to archive;;;; @param string $location Real Location; @param string $name Name in Archive;;;;;; @author Nicolas Heimann
 * @access private **/
 private function addDirDo($location, $name) {
 $name .= '/';
 $location .= '/';

// Read all Files in Dir
 $dir = opendir ($location);
 while ($file = readdir($dir))
 {
 if ($file == '.' || $file == '..') continue;
 // Rekursiv, If dir: FlxZipArchive::addDir(), else ::File();
 $do = (filetype( $location . $file) == 'dir') ? 'addDir' : 'addFile';
 $this->$do($location . $file, $name . $file);
 }
 } // EO addDirDo();
}

$za = new FlxZipArchive;
$res = $za->open($zip_file_name, ZipArchive::CREATE);
if($res === TRUE) 
{
 $za->addDir($the_folder, basename($the_folder));
 $za->close();
}
else { echo 'Could not create a zip archive';}

if ($download_file)
{
 ob_get_clean();
 header("Pragma: public");
 header("Expires: 0");
 header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
 header("Cache-Control: private", false);
 header("Content-Type: application/zip");
 header("Content-Disposition: attachment; filename=" . basename($zip_file_name) . ";" );
 header("Content-Transfer-Encoding: binary");
 header("Content-Length: " . filesize($zip_file_name));
 readfile($zip_file_name);

//deletes file when its done...
 if ($delete_file_after_download) { unlink($zip_file_name); }
}

 

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *