删除* .ZIP文件超过15天

问题描述 投票:-1回答:1

我目前正在使用以下代码来每天备份我的数据库,它的工作原理很吸引人。

文件名:backup.php

#!/usr/bin/php

<?php
$file = "/home/root/BACKUPS/backup.sql";
$command = "mysqldump -uroot_admin -pkeypw --all-databases > $file";
system($command);
?>

我将其与下面的bat文件脚本一起使用,以压缩由以上代码创建的备份。

文件名:backup.bat

find /home/root/BACKUPS/backup.sql   | xargs zip -czvPf /home/root/BACKUPS/$(date +%F)_backup.sql.zip

我需要添加一段代码,该代码还将扫描先前创建的“ $(date +%F)_backup.sql.zip”,并删除任何早于15天的代码;但仅删除* .zip文件;而不是* .php,*。bat,*。sql或error_log。我已经审查了Unable to delete zip folders older than 14 days并编辑了backup.php文件,其中包括他的示例,出于测试目的,将天数从15天(而不是14天)更改为15天,以便现在backup.php文件读取。

文件名:backup.php(已修订)

#!/usr/bin/php

<?php
$file = "/home/root/BACKUPS/backup.sql";
$command = "mysqldump -uroot_admin -pkeypw --all-databases > $file";
system($command);

if (!(Test-Path $folderpath)) {
    New-Item -ItemType Directory -Path $folderpath
    Write-Host "$folderpath created"
} else {
    Write-Host "$folderpath already exists, will remove old items"
    $HowOld = -15
    Get-ChildItem $Path -Recurse |
        where {$_.LastWriteTime -lt (Get-Date).AddDays($HowOld) -and -not $_.PSIsContainer} |
        % {Remove-Item $_.FullName -Force -WhatIf}
}

?>

我照原样保留了backup.bat文件。

文件名:backup.php(未更改)

find /home/root/BACKUPS/backup.sql   | xargs zip -czvPf /home/root/BACKUPS/$(date +%F)_backup.sql.zip

在吃午饭的时候,我设置了一个测试cron作业,以便在外出时运行两次,结果是没有文件被删除(应该删除其中的一个文件),因此,对于每个文件。

backup.bat文件导致以下反馈。

updating: home/root/BACKUPS/backup.sql .................    (in=179151470) (out=31552561) (deflated 82%)
Enter comment for home/root/BACKUPS/backup.sql:
enter new zip file comment (end with .):
total bytes=179151470, compressed=31552573 -> 82% savings

这里是backup.php文件的结果。

Status: 500 Internal Server Error
Content-type: text/html; charset=UTF-8

有人对如何进行这项工作有任何建议吗?

UPDATE 10/16/2019 1601HRS EST

文件名:backup.php现在具有以下脚本...

#!/usr/bin/php

<?php
$file = "/home/root/BACKUPS/backup.sql";
$command = "mysqldump -uroot_admin -pkeypw --all-databases > $file";
system($command);
?>

[文件名:backup.bat现在具有以下脚本...

find /home/root/BACKUPS/backup.sql   | xargs zip -czvPf /home/root/BACKUPS/$(date +%F)_backup.sql.zip
find /home/root/BACKUPS/ -mtime +14 -type f -iname '*.backup.sql.zip' -exec rm {} \;

此操作不会删除应删除的文件。我不确定我缺少什么;也许是“;”第一行之后。尽管第一行通过压缩和命名sql文件而正常运行。第二行是不起作用的行,它是带有';'的行。所以也许我需要将其删除。一次尝试将两者排除在外;或两者兼有。

php batch-file cron backup
1个回答
0
投票

无法评论。

我想你想要这样的shell命令:

find /home/root/BACKUPS/ -mtime +15 -type f -iname '*.backup.sql.zip' -exec rm {} \;

编辑:

某些解释:这会查找并删除(-exec rm {} \;)所有名称以“ backup.sql.zip”结尾且修改时间超过15天(mtime +15)的文件(类型f)。

希望有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.