简单的PHP删除除最后3天之外的所有文件-


Simple PHP Delete All Files Except the 3 last days -

有一个FTP用户和一个DIR:/home/user/public_html/备份/

每天03:00,一个带有日期的文件夹和该文件夹中3.5GB的文件将通过FTP自动添加到那里。现在,如果每天在地图中添加3,5GB备份,则14天后将为49GB

大约14天我会有这样的文件夹结构:

2015-12-18
2015-12-17
2015-12-16
2015-12-15
2015-12-14
2015-12-13
2015-12-13
2015-12-12
2015-12-11
2015-12-10
2015-12-09
2015-12-08

所以我想为此制作一个cronjob脚本,每个星期天晚上00:00u,一个.php将自动用cronjob执行。

示例:2015-12-18将执行.php脚本,除最后3个添加的文件夹外,所有文件夹都将被删除:2015-12-18 - 2015-12-17 - 2015-12-16

php脚本将删除所有文件EXPECT最后3个添加的文件夹/文件在地图中备份

这与PHP有冲突吗?是的,有人给我一个脚本样本吗?还是可以用更好的解决方案来完成?

这就是它。使用glob填充所有目录的数组,对数组进行切片以删除最后3项,然后删除其他项。

$files = glob('/tmp/*', GLOB_ONLYDIR);
$deletions = array_slice($files, 0, count($files) - 3);
foreach($deletions as $to_delete) {
    array_map('unlink', glob("$to_delete/*.*"));
    $deleted = rmdir($to_delete);
}

nix*,不需要php,您可以将其作为cronjob 运行

find /path/to/files* -mtime +3 -exec rm {} ';

我对PHP不太熟悉,已经很久没有玩了,但我会做这样的事情:

如果今天是星期天,将把数据库中的今天日期设置为上次删除的日期,那么做一些简单的代码来检查过去了多少天或几秒,或者曾经发生过什么,如果像7天一样过去了,将从数据库中删除除上次尝试添加的项目之外的所有内容,我认为这有点简单`