使用PHP压缩文件目录

Vin*_*oCM 16 php compression backup

我正在创建一个php备份脚本,它将从数据库中转储所有内容并将其保存到文件中.我已经成功地做到了这一点,但现在我需要在一个目录中获取数百个图像并将它们压缩成一个简单的.tar.gz文件.

这样做的最佳方法是什么?如何完成?我不知道从哪里开始.

提前致谢

Pau*_*xon 15

如果您使用的是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";
}
Run Code Online (Sandbox Code Playgroud)

  • 谢谢大家的帮助.我终于把脚本去了.我所要做的就是改变这一行:$ zip-> addFile($ file); 对此:$ zip-> addFile('path/to/images /'.$ file); (2认同)

Ser*_*rgO 11

$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
Run Code Online (Sandbox Code Playgroud)


gee*_*guy 10

你也可以使用这样的东西:

exec('tar -czf backup.tar.gz /path/to/dir-to-be-backed-up/');

务必注意有关使用PHP exec()函数的警告.