【发布时间】:2017-03-27 16:45:46
【问题描述】:
首先是的,这个问题有几个版本在这个网站上流传,但我决定问一下,因为我还没有看到一个对我的问题有具体警告的版本,尽管有多年的编程经验,但我从来没有真正之前需要 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。 - 使用
cp(相同的目录)将latest.sql复制到${NOWDT}.sql。
(这是我还没有解决的棘手部分)
- 按字母顺序列出文件,因此时间戳应该在
latest.sql上方(我想保留这个)。 -
如果文件超过四个(三个带时间戳的和
latest.sql),删除最前面(较早)的文件,直到只有三个带时间戳的文件。
完成后,其中最多应该有 4 个文件:latest.sql 和最多三个带时间戳的文件。
我查看了this question,那里有一些好东西,但我只是没有足够的 bash 脚本知识来研究如何有效地修改它以满足我的需要。我也不知道它有多相关,但我使用的是 CentOS 6 附带的标准 bash shell。
【问题讨论】: