使用 PHP 压缩文件目录
2022-08-30 22:53:05
我正在创建一个php备份脚本,它将转储数据库中的所有内容并将其保存到文件中。我已经成功地做到了这一点,但现在我需要在一个目录中拍摄数百个图像,并将它们压缩成一个简单的.tar.gz文件。
最好的方法是什么,它是如何完成的?我不知道从哪里开始。
提前致谢
我正在创建一个php备份脚本,它将转储数据库中的所有内容并将其保存到文件中。我已经成功地做到了这一点,但现在我需要在一个目录中拍摄数百个图像,并将它们压缩成一个简单的.tar.gz文件。
最好的方法是什么,它是如何完成的?我不知道从哪里开始。
提前致谢
如果您使用的是 PHP 5.2 或更高版本,则可以使用 Zip 库
然后按照以下方式执行以下操作:
$images_dir = '/path/to/images';
//this folder must be writeable by the server
$backup = '/path/to/backup';
$zip_file = $backup.'/backup.zip';
if ($handle = opendir($images_dir))
{
$zip = new ZipArchive();
if ($zip->open($zip_file, ZipArchive::CREATE)!==TRUE)
{
exit("cannot open <$zip_file>\n");
}
while (false !== ($file = readdir($handle)))
{
$zip->addFile($images_dir.'/'.$file);
echo "$file\n";
}
closedir($handle);
echo "numfiles: " . $zip->numFiles . "\n";
echo "status:" . $zip->status . "\n";
$zip->close();
echo 'Zip File:'.$zip_file . "\n";
}
$archive_name = 'path\to\archive\arch1.tar';
$dir_path = 'path\to\dir';
$archive = new PharData($archive_name);
$archive->buildFromDirectory($dir_path); // make path\to\archive\arch1.tar
$archive->compress(Phar::GZ); // make path\to\archive\arch1.tar.gz
unlink($archive_name); // deleting path\to\archive\arch1.tar