跳到主要内容

核心类型参考

本页记录 vpt_rs 导出的每个公共类型。所有类型位于 vpt_rs::types 模块中并从 crate 根重导出。

VolumeRef​

活跃卷、文件系统、数据集或提供者特定源的稳定标识符。id 字符串由每个后端不同地解释。

后端id 格式示例
Btrfs绝对子卷路径"/mnt/data/subvol"
LVM/dev/<vg>/<lv> 路径"/dev/vg0/data"
ZFS数据集名称或挂载路径"tank/data"
Windows驱动器字母或卷 GUID 路径"C:"

Capability​

枚举后端可能支持的每个功能。

变体as_str()描述
CrashConsistentSnapshot"crash_consistent_snapshot"文件系统一致性快照(无应用静默)
ApplicationConsistentSnapshot"application_consistent_snapshot"应用静默快照(Windows 上的 VSS 写入器)
WritableSnapshotMount"writable_snapshot_mount"可以读写挂载快照
ReadOnlySnapshotMount"read_only_snapshot_mount"可以只读挂载快照
BlockLevelBackup"block_level_backup"支持 dd 风格块复制备份
BlockLevelRestore"block_level_restore"支持 dd 风格块复制恢复
IncrementalSend"incremental_send"支持增量发送/接收流
DirectDeviceAccess"direct_device_access"可以读写原始块设备

SnapshotKind​

快照操作的一致性意图。

变体接受的解析字符串含义
CrashConsistent"crash"、"crash-consistent"如拔掉电源;文件系统安全
ApplicationConsistent"app"、"application"、"application-consistent"与 VSS 写入器协调刷新缓冲区

SnapshotRequest​

提供者中立的创建快照请求。

pub struct SnapshotRequest {
pub source: VolumeRef, // 要快照的卷
pub kind: SnapshotKind, // 一致性级别
pub label: Option<String>, // 可选人类可读标签
pub read_only: bool, // 快照是否只读
}

SnapshotHandle​

创建后返回的具体快照标识符。

pub struct SnapshotHandle {
pub id: String, // 提供者特定快照标识符
pub source: Option<VolumeRef>, // 源卷(如果已知)
}

SnapshotRef​

对现有快照的引用,用于备份/恢复规划。

pub struct SnapshotRef {
pub id: String, // 快照标识符
pub origin: Option<VolumeRef>, // 此快照所属的卷
}

BackupTarget​

备份操作的目标。

变体内部描述
ImageFilePathBuf写入常规文件
DevicePathBuf写入原始块设备

BackupSource​

备份的源 -- 活跃卷或显式快照。

pub enum BackupSource {
Volume(VolumeRef), // 活跃卷
Snapshot(SnapshotRef), // 现有快照
}

SnapshotPolicy​

控制提供者是否在备份前创建临时快照。

pub enum SnapshotPolicy {
Disabled, // 按原样使用源
Temporary { // 先创建临时快照
kind: SnapshotKind,
label: Option<String>,
read_only: bool,
},
}

BackupPlan​

描述备份什么、在哪里以及如何的提供者中立计划。

pub struct BackupPlan {
pub source: BackupSource,
pub target: BackupTarget,
pub snapshot_policy: SnapshotPolicy,
pub parent_snapshot: Option<SnapshotRef>,
pub block_size: Option<usize>,
}

RestorePlan​

从备份恢复的提供者中立计划。

pub struct RestorePlan {
pub source: BackupTarget,
pub destination: VolumeRef,
pub force: bool,
pub base_snapshot: Option<SnapshotRef>,
pub block_size: Option<usize>,
}

sanitize_snapshot_label()​

将用户提供的标签清理为安全的快照名称组件。[a-zA-Z0-9\-_.+:] 之外的字符被替换为 -。如果结果为空或全是破折号则返回 "snapshot"。

use vpt_rs::sanitize_snapshot_label;

assert_eq!(sanitize_snapshot_label("nightly backup"), "nightly-backup");
assert_eq!(sanitize_snapshot_label("2026/06/07"), "2026-06-07");
assert_eq!(sanitize_snapshot_label("---"), "snapshot");