【问题标题】:Want to improve my simple site/db backup script with auto removal of old backups想通过自动删除旧备份来改进我的简单站点/数据库备份脚本
【发布时间】:2011-01-29 22:24:06
【问题描述】:

我有以下简单的脚本来备份我的网站文件和数据库。该脚本每天通过 cron 作业运行。

#!/bin/sh

NOW=$(date +"%Y-%m-%d")

mysqldump --opt -h localhost -u username -p'password' dbname > /path/to/folder/backup/db-backup-$NOW.sql

gzip -f /path/to/folder/backup/db-backup-$NOW.sql

tar czf /path/to/folder/backup/web-backup-$NOW.tgz /path/to/folder/web/content/

效果很好,但我不希望大量旧备份堵塞我的系统。如何修改脚本以删除脚本运行一周之前的任何备份?

【问题讨论】:

    标签: shell scripting cron date


    【解决方案1】:

    添加这样的东西怎么样:

    find -ctime +7 -print0 | xargs -0 rm -v
    

    find -ctime +7 -print0 查找所有在 7 天前 (+7) 之前更改过的文件 (c),并将其作为 \0 分隔字符串 (-print0) 发送出去,xargs -0 发送到 rm -v作为论据。

    【讨论】:

    • 感谢您的快速回复。您能否准确解释该代码的作用?我是 perl 的新手。我只是想了解其中的每个部分在做什么。
    • @Robert Robb:这个解释会有帮助吗?
    • -ctime 是文件更改的时间,而不是文件创建的时间。不保存文件的创建时间。
    • @Dennis,对。是change timemodified timeaccess time。我将编辑我的答案。
    【解决方案2】:

    使用 GNU 查找,您可以使用 -delete

    find /path -type f -iname "*backup*gz" -mtime +7 -delete
    

    或者您可以使用 +; 代替 xargs。

    find /path -type f -iname "*backup*gz" -mtime +7 -exec rm -f "{}" +;
    

    【讨论】:

    • 谢谢,我也要试试。
    猜你喜欢
    • 1970-01-01
    • 2015-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多