php压缩文件之pclzip(全站备份)

要先下载一个pclzip类文件。下载地址自行百度 pclzip.class.php

<?php
// 备份形式  访问 xx.php?back=1 表示全站备份   xx.php?back=0表示备份$files里面出现的文件夹或文件
if(isset($_GET['back'])){
  $model=(int)$_GET['back'];
  
  $rs=back_phpfile($model);
  if($rs==1){
  //	exit("<script language='javascript'>window.location.href='./login.php';</script>");
    exit("<script language='javascript'>alert('备份成功!\backup\');window.location.href='../index.php';</script>");
  }else{
    exit("<script language='javascript'>alert('失败:".$rs."');window.location.href='../index.php';</script>");
  }
  
}else{
  die();
}


//////下方为函数
function back_phpfile($model){//1 代表整站备份  0 ,部分备份
set_time_limit(0);	//备份时间较长,不进行此设置的话,超时后会失败
$back_name=date("YmdHis").".zip";	
$files="../sdk-core/";////////多个文件夹或文件中间用逗号隔开!
$files.=",../aaa/";
$files.=",../css/";
$files.=",../js/";
$files.=",../excel/inddex.php";
$files = getZipGbk($files);//有中文的情况必不可少
  
  
require_once('pclzip.class.php');
if($model==1){//备份全站文件
  
  $zip = new PclZip('./backup/total_fileback_'.$back_name);//pclzip括号内参数为备份的zip文件的存放地址!
$v_list = $zip->create($_SERVER['DOCUMENT_ROOT'] ,PCLZIP_OPT_REMOVE_PATH,$_SERVER['DOCUMENT_ROOT']);
}else{//备份列表出现的文件
  $zip = new PclZip('./backup/part_fileback_'.$back_name);
$v_list = $zip->create($files ,PCLZIP_OPT_REMOVE_PATH,$files);
}
if($v_list == 0){
  //echo '异常:'.$zip->errorInfo(true); 
  return $zip->errorInfo(true);
  }else{
    //echo '备份成功'; 
    return 1;
    }

}
function getZipGbk($file) {//识别添加到压缩文件内文件的中文名编码??
    $arr = explode(",", $file);
    foreach ($arr as $v) {
        $names[] = iconv('UTF-8', 'GB2312', $v);
    }
    return implode(",", $names);
}
?>

另外pclzip.class.php也内含了压缩功能,更多功能有兴趣的可以参考这片文章:

https://www.cnblogs.com/wuheng1991/p/5102396.html

基于互联网精神,在注明出处的前提下本站文章可自由转载!

本文链接:https://ranjuan.cn/php压缩文件之pclzip(全站备份)/

赞赏

微信赞赏支付宝赞赏

docker安装mindoc知识管理系统wiki
solve-network-error691
windows安装go交叉编译linux,另附git、gcc安装