2

我有一个用于数据库备份的目录,以及一个每天对数据库进行备份的 PHP 脚本。但大约一个月后,我将在备份目录中有 30 个文件。我如何编写一个每天删除旧备份文件的 PHP 脚本,以便我的目录中始终有 10 个备份文件?存储新备份时,将删除最旧的备份文件,依此类推...

4

3 回答 3

3

您可以读取备份目录并删除所有超过 30 天的文件。但是,我个人是动态创建文件的,每个文件都有这种格式:

database_dump_DD-MM-YYYY_HH:MM:SS.sql

所以我可以删除考虑文件名的文件。由于我不知道您的文件是什么格式,您可以像这样删除它们:

$files = readdir(opendir('backups')); //read directory for files

foreach($files as $file){
    if(filemtime($file) > (time() + 2592000)){ //check if the file is older than 30 days
        unlink($file); //delete
    }
}
于 2012-09-22T11:06:11.303 回答
2

使用 PHP 备份进行备份后,您将遍历目录,然后删除最旧的备份文件:

$files = glob('backupfolder/*.bak');
if(count($files) > 10)
  foreach($files as $file)
    if(time() - filectime($file) > 10 * 24 * 60 * 60)
      unlink($file);
于 2012-09-22T10:20:20.803 回答
0

为什么要努力使用 PHP?find命令和cron可以解决问题

于 2012-09-22T10:46:59.927 回答