首先是的,这个问题有几个版本浮现在这个网站上,但我决定问一下,因为我还没有看到我的问题有一个具体的警告,尽管有多年的编程经验,我&#39之前从未真正需要 bash,所以我不具备实践知识来自己解决这个问题。
我在服务器A上有一个增量备份脚本,它使用rsync复制SQL文件。它将这些名为sql/
的文件夹同步到名为latest.sql
的文件中。这是所有cron jobbed并且工作正常,但我需要在目标服务器B上实现轮换。
我的服务器A脚本的最后一件事就是调用服务器B上的清理脚本。清理脚本应该执行以下操作:
NOWDT="$(date '+%Y-%m-%d_%H_%M_%S')"
获取当前时间,使其格式为2017-03-27_17_30_00
。latest.sql
(同一目录)将${NOWDT}.sql
复制到cp
。(这是我尚未解决的棘手问题)
latest.sql
(我想保留此文件)。latest.sql
),请删除顶部(早期)文件,直到只有三个带时间戳的文件。 一旦完成,其中最多应有4个文件:latest.sql
和最多三个带时间戳的文件。
我已经看过this question并且那里有一些好东西,但我对bash脚本的知识不足以找出如何有效地将其修改为适合我的需要。此外,我不知道它有多相关,但我使用的是CentOS 6附带的标准bash shell。
答案 0 :(得分:1)
ls [0-9]*.sql | sort | head -n -3 | xargs -r rm -f
xargs -r
从输入中获取文件名并运行rm -f <filenames>
。 -r
表示“如果没有输入则不运行”