我当前正在使用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文件第一行可以正常运行,但是第二行无法正常工作。
答案 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的帮助。