>我在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则表示排除。