删除超过15天的* .ZIP文件

时间:2019-10-16 18:25:09

标签: bash find sh

我当前正在使用PHP脚本每天备份我的数据库,它的工作原理很吸引人。备份后,我使用下面的shell脚本压缩备份文件:

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

我需要添加一段代码,该代码还将扫描先前创建的"$(date +%F)_backup.sql.zip",并删除任何超过15天的代码。

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

更新10/16/2019 1601HRS EST

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文件第一行可以正常运行,但是第二行无法正常工作。

2 个答案:

答案 0 :(得分: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)

希望有帮助。

答案 1 :(得分:0)

这对我来说很好。

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 -name "*.zip" -type f -mtime +15 -exec rm -f {} \;

参考: https://tecadmin.net/delete-files-older-x-days/

基本上@Sebastian不必包含文件名引用的.backup.sql部分。因此,不用*.backup.sql.zip,而只需*.zip谢谢@Sebastian的帮助。

相关问题