1 个不稳定版本

0.1.1 2019年11月15日

#397操作系统

WTFPL 许可证

11KB
217

关于

这是 Rust 版本的 frotate ;)

frotate 代表“功能旋转”,不管怎样。这是 log2rotate 的想法 的发展。另见 pylog2rotate

frotate 设计用来轮转备份和其他事物,在保留和空间使用之间可以保持任何平衡。它不是使用每天、每周、每月或每年的熟悉方法来轮转备份,而是使用任何周期来轮转备份。因此称为“功能性的”。

想法很简单,轮转计划由一个整数函数确定。这个函数告诉我们必须遇到至少一个备份或其他轮转项的天数周期。当我们使用指数函数时,方案类似于放射性衰变定律。当函数是一个简单的常数 1 时,我们不会轮转任何东西,并保留所有备份。如果是 2,我们保留每第二个备份。通过一些简单的函数,我们可以实现已知的每天-每周-每月-每年的方案。

frotate 命令行工具仅实现了具有任意基数(确保它大于 1,否则会有趣)的指数周期。

用法

请注意,当未提供 --keep--delete 选项时,该工具将打印所有间隔和所有天到 标准错误 并以非零代码退出。在生产环境中,您需要明确指定 --keep--delete

Usage: frotate [-k|-d] [-b <base>] <day>...
       frotate --help

Options:
  -k --keep         Print days to keep
  -d --delete       Print days to delete
  -b --base <base>  Base of the exponent [default: 1.1]
  -h --help         Show this help text

示例

相同天数的不同模式

$ frotate --base 2 2019-08-31 2019-08-30 2019-08-29 2019-08-28 2019-08-27 2019-08-26 2019-08-25 2019-08-24
2019-08-31
2019-08-29 2019-08-30
2019-08-25 2019-08-26 2019-08-27 2019-08-28
2019-08-24

$ frotate --keep --base 2 2019-08-31 2019-08-30 2019-08-29 2019-08-28 2019-08-27 2019-08-26 2019-08-25 2019-08-24
2019-08-31 2019-08-29 2019-08-25 2019-08-24

$ frotate --delete --base 2 2019-08-31 2019-08-30 2019-08-29 2019-08-28 2019-08-27 2019-08-26 2019-08-25 2019-08-24
2019-08-30 2019-08-26 2019-08-27 2019-08-28

更现实一点的例子,当我们保留一些备份并获得新的备份,但不是每天

$ frotate --keep --base 2 2019-09-01 2019-08-31 2019-08-30 2019-08-28 2019-08-24
2019-09-01 2019-08-30 2019-08-28 2019-08-24

$ frotate --keep --base 2 2019-09-05 2019-09-01 2019-08-30 2019-08-28 2019-08-24
2019-09-05 2019-08-30 2019-08-24

$ frotate --keep --base 2 2019-09-06 2019-09-05 2019-08-30 2019-08-24
2019-09-06 2019-09-05 2019-08-24

$ frotate --keep --base 2 2019-09-07 2019-09-06 2019-09-05 2019-08-24
2019-09-07 2019-09-05 2019-08-24

$ frotate --keep --base 2 2019-09-08 2019-09-07 2019-09-06 2019-08-24
2019-09-08 2019-09-06 2019-08-24

$ frotate --keep --base 2 2019-09-09 2019-09-08 2019-09-06 2019-08-24
2019-09-09 2019-09-08 2019-09-06 2019-08-24

依赖项

~4–6.5MB
~110K SLoC