12 个版本
0.1.11 | 2024 年 5 月 5 日 |
---|---|
0.1.9 | 2024 年 3 月 2 日 |
0.1.6 | 2023 年 12 月 1 日 |
0.1.5 | 2023 年 11 月 5 日 |
76 在 文件系统
915 每月下载量
18KB
346 行
shock
定期使用 shock
清理你的 ZFS 存储池,以维护良好的卫生并修剪过时的快照。
用法
nix run github:ipetkov/shock -- --verbose --recursive --config ./path/to/config.toml tank/persist
或
nix shell github:ipetkov/shock
或
cargo install shock
然后
shock --verbose --recursive --config ./path/to/config.toml tank/persist
请注意,shock
默认会进行测试运行。除非传入 --destroy
,否则不会删除任何数据。
NixOS
{
inputs.shock.url = "github:ipetkov/shock";
outputs = { self, nixpkgs, shock }: {
nixosConfigurations.host = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
./configuration.nix
shock.nixosModules.default
({ config, pkgs, ... }: {
nixpkgs.overlays = [ inputs.shock.overlays.default ];
services.shock = {
startAt = "daily";
persistentTimer = true;
jobs = {
backups = {
# Disable to only operate on the dataset itself
# and not any of its children
recursive = true;
verbose = true; # Disable for quieter logs
datasets = [
"tank/backups"
"tank/another"
];
#destroy = true; # Uncomment to actually destroy data!
prefix = {
zfs-auto-snap_monthly = 12;
zfs-auto-snap_weekly = 4;
zfs-auto-snap_daily = 7;
zfs-auto-snap_hourly = 24;
zfs-auto-snap_frequent = 4;
};
};
};
};
})
];
};
};
}
参考
Shock your ZFS pools to maintain good hygeine
Usage: shock [OPTIONS] --config <CONFIG> [DATASETS]...
Arguments:
[DATASETS]... The pools or datasets to shock
Options:
-r, --recursive Recursively operate on the specified datasets
-v, --verbose Enable verbose output
--destroy Perform destructive actions. Omit for dry run
-c, --config <CONFIG> Path to the TOML configuration
-h, --help Print help
-V, --version Print version
配置
# Keep up to N snapshots whose name starts with the specified prefix.
# Only snapshots within the same dataset will be counted, and any snapshots
# whose name does not match any prefix will be ignored.
[prefix]
zfs-auto-snap_monthly = 12
zfs-auto-snap_weekly = 4
zfs-auto-snap_daily = 7
zfs-auto-snap_hourly = 24
zfs-auto-snap_frequent = 4
为什么存在这个
快照创建和修剪本质上是相互关联的,通常它们都使用相同的工具完成。然而,在没有在池上实际运行快照创建器的情况下,管理在另一台主机上创建(并复制到当前主机)的快照可能很困难。通常,它们都使用相同的工具完成。然而,在没有在池上实际运行快照创建器的情况下,管理在另一台主机上创建(并复制到当前主机)的快照可能很困难。
更具体的例子: zfs-auto-snapshot
仅在创建快照时修剪快照,因此如果正在复制由 zfs-auto-snapshot
创建的数据集的快照,则没有很好的方法来修剪它们(特别是在 NixOS 上,有一个全局配置来指定要保留的快照)。 Sanoid 允许进行全面的策略管理,但它遗憾的是,只知道如何管理它创建的快照(以及 zfs-auto-snapshot
使用的名称)。对于无法使用 sanoid
的情况,shock
是一个简单的方法来填补这个差距。
许可证
本项目采用 MIT 许可证。
贡献
除非你明确说明,否则你提交的任何有意提交的包含贡献都应按 MIT 许可证许可,不附加任何额外的条款或条件。
依赖关系
~5MB
~92K SLoC