pub struct BackupMetadata {
pub version: String,
pub file_hashes: HashMap<PathBuf, String>,
pub timestamp: String,
pub backup_type: BackupType,
pub parent_backup: Option<String>,
pub changed_files: Vec<PathBuf>,
}Expand description
バックアップメタデータ
バックアップディレクトリ内のファイルハッシュ情報を管理します。
§フィールド
version- メタデータ形式のバージョンfile_hashes- ファイルパスとSHA-256ハッシュのマップtimestamp- バックアップ作成日時
§使用例
use backup_suite::core::integrity::BackupMetadata;
use std::path::PathBuf;
// メタデータ読み込み
let backup_dir = PathBuf::from("/backup/backup_20250107_120000");
let metadata = BackupMetadata::load(&backup_dir).unwrap();
// ファイル検証
let file_path = PathBuf::from("test.txt");
let is_valid = metadata.verify_file(&file_path, &file_path).unwrap();Fields§
§version: Stringメタデータ形式のバージョン
file_hashes: HashMap<PathBuf, String>ファイルパス(相対パス)とSHA-256ハッシュのマップ
timestamp: Stringバックアップ作成日時(ISO 8601形式)
backup_type: BackupTypeバックアップタイプ(Full/Incremental)
parent_backup: Option<String>親バックアップ名(増分バックアップの場合のみ)
changed_files: Vec<PathBuf>変更ファイルリスト(増分バックアップ時の変更ファイル)
Implementations§
Source§impl BackupMetadata
impl BackupMetadata
Sourcepub fn load(backup_dir: &Path) -> Result<Self>
pub fn load(backup_dir: &Path) -> Result<Self>
バックアップディレクトリからメタデータを読み込み
.integrity ファイルから JSON 形式のメタデータを読み込みます。
§引数
backup_dir- バックアップディレクトリのパス
§戻り値
成功時は読み込まれた BackupMetadata、失敗時はエラー
§Errors
以下の場合にエラーを返します:
.integrityファイルが存在しない場合- ファイルの読み込みに失敗した場合
- JSON 解析に失敗した場合
§使用例
use backup_suite::core::integrity::BackupMetadata;
use std::path::PathBuf;
let backup_dir = PathBuf::from("/backup/backup_20250107_120000");
let metadata = BackupMetadata::load(&backup_dir).unwrap();Sourcepub fn save(&self, backup_dir: &Path) -> Result<()>
pub fn save(&self, backup_dir: &Path) -> Result<()>
バックアップディレクトリにメタデータを保存
.integrity ファイルに JSON 形式でメタデータを保存します。
§引数
backup_dir- バックアップディレクトリのパス
§戻り値
成功時は Ok(())、失敗時はエラー
§Errors
以下の場合にエラーを返します:
- JSON 生成に失敗した場合
- ファイル書き込みに失敗した場合
§使用例
use backup_suite::core::integrity::BackupMetadata;
use std::path::PathBuf;
let mut metadata = BackupMetadata::new();
metadata.file_hashes.insert(PathBuf::from("test.txt"), "abc123...".to_string());
let backup_dir = PathBuf::from("/backup/backup_20250107_120000");
metadata.save(&backup_dir).unwrap();Sourcepub fn verify_file(
&self,
relative_path: &Path,
actual_file_path: &Path,
) -> Result<bool>
pub fn verify_file( &self, relative_path: &Path, actual_file_path: &Path, ) -> Result<bool>
ファイルの整合性を検証
ファイルの現在のSHA-256ハッシュを計算し、保存されたハッシュと比較します。
§引数
relative_path- バックアップ内の相対パスactual_file_path- 検証対象の実際のファイルパス
§戻り値
ハッシュが一致する場合 true、不一致の場合 false
§Errors
以下の場合にエラーを返します:
- ファイルに対応するハッシュ情報が見つからない場合
- ファイルの読み込みに失敗した場合
- ハッシュ計算に失敗した場合
§使用例
use backup_suite::core::integrity::BackupMetadata;
use std::path::PathBuf;
let backup_dir = PathBuf::from("/backup/backup_20250107_120000");
let metadata = BackupMetadata::load(&backup_dir).unwrap();
let relative = PathBuf::from("test.txt");
let actual = PathBuf::from("/restore/test.txt");
let is_valid = metadata.verify_file(&relative, &actual).unwrap();
if is_valid {
println!("✓ ファイル整合性確認済み");
} else {
eprintln!("⚠ ファイルが改ざんされています");
}Trait Implementations§
Source§impl Clone for BackupMetadata
impl Clone for BackupMetadata
Source§fn clone(&self) -> BackupMetadata
fn clone(&self) -> BackupMetadata
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for BackupMetadata
impl Debug for BackupMetadata
Source§impl Default for BackupMetadata
impl Default for BackupMetadata
Source§impl<'de> Deserialize<'de> for BackupMetadata
impl<'de> Deserialize<'de> for BackupMetadata
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl Freeze for BackupMetadata
impl RefUnwindSafe for BackupMetadata
impl Send for BackupMetadata
impl Sync for BackupMetadata
impl Unpin for BackupMetadata
impl UnwindSafe for BackupMetadata
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.