代码点火器排除文件和文件夹



>我在stackoverflow上找到了一些代码。 当您排除一个文件夹时,它工作得很好。 但我想排除特定的文件夹和文件。 但它并不排除。你能帮帮我吗?

$this->load->library('zip');
$data = array_diff(scandir(FCPATH), array('..', '.','backups'));
// 'backups' folder will be excluded here with '.' and '..'
foreach($data as $d) {
$path = FCPATH.$d;
if(is_dir($path))
$this->zip->read_dir($path, false);
if(is_file($path))
$this->zip->read_file($path, false);
}
$this->zip->archive(FCPATH.'backups/'.date('Y-m-d-His').'.zip'); 

此代码仅排除备份文件夹。 我想像这样排除

前任:

$data = array_diff(scandir(FCPATH), array('..', '.','backups', 'config.php', 'database.php', 'system'));

可能吗?

是的,这是可能的。第二个参数中在array_diff()函数的第一个参数中不可用的项目将不会出现在结果中。

您可以在此处找到该函数的文档: https://www.php.net/manual/en/function.array-diff.php

我找到了exec系统的解决方案。 这是我的代码。

$zippath = "/home/domainname/public_html/";    
$makezip= exec("zip -r ".$zippath."backup.zip ".$zippath." -x ".$zippath."system/* -x ".$zippath."application/config/* -x '*.zip' -x 'database.php'");
if($makezip) {
echo "Zip archive done!";
} else {
echo "Some Problem";
}
  • -x = 排除
  • -x system/* = 如果你放在文件夹之后,它的意思是排除文件夹中的所有文件。
  • -x *.zip = 表示仅排除 zip 文件。
  • -x 'database.php' = 如果任何文件夹中有数据库.php则表示排除。

相关内容

  • 没有找到相关文章

最新更新