1 个不稳定版本
0.3.1 | 2021 年 10 月 9 日 |
---|
#1613 in 命令行工具
23KB
460 行
📸
zfs-autosnap
zfs-autosnap
会定期对一个或多个 ZFS 数据集进行快照,并按照保留策略删除旧快照。
上游变更
在我的分支中,我有
- 减少了依赖项数量
- 整理和重新组织了代码
- 添加了一些单元测试
用法
- 将保留策略添加到您想要快照的数据集中。例如
zfs set at.rollc.at:snapkeep=h24d30w8m6y1 tank
- 通过
cron.hourly
或 systemd 定时器每小时运行zfs-autosnap snap
- 通过
cron.daily
每天运行zfs-autosnap gc
尝试运行 zfs-autosnap status
以检查运行情况。
systemd
请参阅 systemd 目录中的示例定时器文件。要使用这些文件,您需要更新数据集名称,然后启用并启动定时器。例如
systemctl enable --now zfs-autosnap-snap.timer
systemctl enable --now zfs-autosnap-gc.timer
安装
预编译的二进制文件
预编译的二进制文件适用于 x86_64 Linux 和 FreeBSD,它们没有第三方运行时依赖项
下载和提取二进制文件的示例
curl https://releases.wezm.net/zfs-autosnap/0.3.1/zfs-autosnap-0.3.1-x86_64-unknown-linux-musl.tar.gz | tar zxf -
从源代码构建
最低支持的 Rust 版本 1.53.0
zfs-autosnap
是用 Rust 实现的。有关安装工具链的说明,请参阅 Rust 网站 [rustup]。
从 Git 检出或发布存档
使用 cargo build --release --locked
构建 二进制文件。二进制文件将在 target/release/zfs-autosnap
中。
从 crates.io
cargo安装 zfs-autosnap
Arch Linux PKGBUILD
在我的个人软件包收藏中,我有一个适用于 pacman 软件包的 PKGBUILD,可以作为您自己的基础
https://github.com/wezm/aur/tree/master/zfs-autosnap
工作原理
保留策略通过属性 at.rollc.at:snapkeep
设置,该属性必须存在于您希望管理的任何数据集(文件系统或卷)上。建议的默认值 h24d30w8m6y1
表示保留24小时的快照、30天的快照、8周的快照、6个月的快照和1年的快照,但您可以选择每个时间单位的所有值,包括省略它。
垃圾回收器会查看管理数据集下的每个快照,并考虑其创建时间以决定是否保留。
重要:快照名称无关紧要,只有创建时间。
如果您希望确保特定的快照不会被删除,请将其 at.rollc.at:snapkeep
属性设置为负数(-
)。
如果有疑问,请考虑阅读源代码:它大约有500行左右。
安全性
zfs-autosnap
将尝试不破坏您的数据;唯一的破坏性操作包含在一个将拒绝处理非快照项的函数中 - 但没有任何保证。之前的版本(用Python编写),自2015年以来一直在生产中使用,且没有发生任何事件;这个(Rust)版本基本上是源端口(在我们兹姆更改之前)。
自行承担风险使用。
依赖项
~1.3–1.7MB
~26K SLoC