public static function archive($name = false, $listFilesAndFolders, $export_files_dir, $export_files_dir_name, $backupName, $move = false, $identifier, $type) { if (empty($export_files_dir)) { return; } $dir_separator = DIRECTORY_SEPARATOR; $backupName = 'backup' . $dir_separator . $backupName; $installFilePath = 'system' . $dir_separator . 'admin-scripts' . $dir_separator . 'miscellaneous' . $dir_separator; $dbSQLFilePath = 'backup' . $dir_separator; $old_path = getcwd(); chdir($export_files_dir); $tar = new Archive_Tar($backupName, 'gz'); if (SJB_System::getIfTrialModeIsOn()) { $tar->setIgnoreList(array('system/plugins/mobile', 'system/plugins/facebook_app', 'templates/mobile', 'templates/Facebook')); } SessionStorage::write('backup_' . $identifier, serialize(array('last_time' => time()))); switch ($type) { case 'full': $tar->addModify("{$installFilePath}install.php", '', $installFilePath); $tar->addModify($dbSQLFilePath . $name, '', $dbSQLFilePath); $tar->addModify($listFilesAndFolders, ''); SJB_Filesystem::delete($export_files_dir . $dbSQLFilePath . $name); break; case 'files': $tar->addModify("{$installFilePath}install.php", '', $installFilePath); $tar->addModify($listFilesAndFolders, ''); break; case 'database': $tar->addModify($dbSQLFilePath . $listFilesAndFolders, '', $dbSQLFilePath); SJB_Filesystem::delete($export_files_dir . $dbSQLFilePath . $listFilesAndFolders); break; } chdir($old_path); return true; }
function nc_tgz_create($archive_name, $file_name, $additional_path = '', $exclude_tag = NULL) { global $DOCUMENT_ROOT, $SUB_FOLDER; @set_time_limit(0); $path = $DOCUMENT_ROOT . $SUB_FOLDER . $additional_path; if (SYSTEM_TAR) { $exclude_tag_cmd = ''; if ($exclude_tag) { $exclude_array_tmp = nc_exclude_tag_to_array($path, $exclude_tag); $exclude_array = array(); foreach ($exclude_array_tmp as $item) { $exclude_array[] = '--exclude=' . preg_quote(ltrim(substr($item, strlen($path)), '/')); } $exclude_tag_cmd = implode(' ', $exclude_array); } exec("cd {$path}; tar -zcf '{$archive_name}' {$exclude_tag_cmd} {$file_name} 2>&1", $output, $err_code); if ($err_code) { trigger_error("{$output['0']}", E_USER_WARNING); return false; } return true; } else { $tar_object = new Archive_Tar($archive_name, "gz"); $tar_object->setErrorHandling(PEAR_ERROR_PRINT); if ($exclude_tag) { $exclude_array_tmp = nc_exclude_tag_to_array($path, $exclude_tag); $exclude_array = array(); foreach ($exclude_array_tmp as $item) { $exclude_array[] = ltrim(substr($item, strlen($path)), '/'); } $tar_object->setIgnoreList($exclude_array); } chdir($path); ob_start(); $file_name_array = explode(' ', $file_name); $res = $tar_object->create($file_name_array); if (!$res) { ob_end_flush(); } else { ob_end_clean(); } return $res; } }
public static function deflate(Engine_Package_Manifest $package, $outputPath) { // Sanity if (!file_exists($outputPath) || !is_dir($outputPath) || !is_writeable($outputPath)) { throw new Engine_Package_Exception('Output path does not exist, is not a directory, or is not writeable'); } if (!is_dir($package->getBasePath())) { throw new Engine_Package_Exception('Missing package base path'); } self::_loadArchiveClass(); // Make filenames and paths $basePath = $package->getBasePath(); $archiveFile = $package->getKey() . '.tar'; $archiveFullPath = $outputPath . DIRECTORY_SEPARATOR . $archiveFile; if (file_exists($archiveFullPath) && !unlink($archiveFullPath)) { throw new Engine_Package_Exception('Target archive already exists and unable to remove'); } // Start packing $archive = new Archive_Tar($archiveFullPath); $archive->setIgnoreList(array('CVS', '.svn')); // Add all directories, files, and subpackages $package->addToArchive($archive); return $archiveFullPath; }
/** * Extract via extension * * @param string $source * @param string $destination * @param string $project * @return void * @author Sergey Startsev */ private function extractProjectByExtension($source, $destination, $project) { $arch = new Archive_Tar("{$destination}{$project}.tar.gz", 'gz'); $arch->setIgnoreList(array('.git', '.gitignore', '.gitmodules', '.svn', "{$project}.tar.gz")); $arch->create(array("../" . pathinfo($source, PATHINFO_BASENAME))); }