#快照 #zfs #自动 #cli

bin+lib zfs-autosnap

自动 ZFS 快照工具

1 个不稳定版本

0.3.1 2021 年 10 月 9 日

#1613 in 命令行工具

MIT 许可证

23KB
460

📸
zfs-autosnap

自动 ZFS 快照工具。


zfs-autosnap 会定期对一个或多个 ZFS 数据集进行快照,并按照保留策略删除旧快照。

上游变更

在我的分支中,我有

  • 减少了依赖项数量
  • 整理和重新组织了代码
  • 添加了一些单元测试

用法

  1. 将保留策略添加到您想要快照的数据集中。例如 zfs set at.rollc.at:snapkeep=h24d30w8m6y1 tank
  2. 通过 cron.hourly 或 systemd 定时器每小时运行 zfs-autosnap snap
  3. 通过 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