Crate backup_suite

Crate backup_suite 

Source
Expand description

§backup-suite: エンタープライズ対応Rust製バックアップツール

backup-suiteは、セキュリティ、パフォーマンス、信頼性を重視したエンタープライズレベルの バックアップソリューションです。型安全性、並列処理、包括的なエラーハンドリングにより、 プロダクション環境での安全な運用を可能にします。

§🚀 主要機能

§セキュリティファースト

  • パストラバーサル対策: safe_joinによるディレクトリトラバーサル攻撃防止
  • 権限チェック: ファイルアクセス前の厳密な権限確認
  • 入力検証: 全ユーザー入力の検証とサニタイズ
  • 機密情報保護: エラーメッセージからの機密情報漏洩防止

§高性能・スケーラブル

  • 並列処理: rayonによるマルチコアCPU活用
  • I/O最適化: CopyEngineによるバッファリング・ストリーミング
  • メモリ効率: 大容量ファイルの低メモリ処理
  • プログレス表示: リアルタイム進捗・統計情報

§エンタープライズ機能

  • 優先度管理: High/Medium/Low による重要度別管理
  • 設定バリデーション: 厳密な設定検証とエラー報告
  • 包括的ログ: 詳細な操作履歴とエラートレース
  • 除外パターン: 正規表現による柔軟なファイル除外

§📚 使用例

§基本的なバックアップ

use backup_suite::{Config, BackupRunner, Target, Priority};
use std::path::PathBuf;

// 1. 設定をロード(または新規作成)
let mut config = Config::load().unwrap_or_default();

// 2. バックアップ対象を追加
let target = Target::new(
    PathBuf::from("/home/user/documents"),
    Priority::High,
    "重要ドキュメント".to_string()
);
config.add_target(target);
config.save()?;

// 3. バックアップ実行
let mut runner = BackupRunner::new(config, false); // false = 実際に実行
let result = runner.run(None, None)?; // None = 全優先度対象

// 4. 結果確認
if result.failed > 0 {
    eprintln!("警告: {}件のファイルでエラーが発生", result.failed);
    for error in &result.errors {
        eprintln!("  - {}", error);
    }
}
println!("✅ バックアップ完了: {}件成功, 合計{}",
         result.successful,
         format_bytes(result.total_bytes));

§高度な設定例

use backup_suite::*;
use std::path::PathBuf;

let mut config = Config::default();

// プロジェクトファイル(.gitを除外)
let mut project_target = Target::new(
    PathBuf::from("/home/user/projects"),
    Priority::Medium,
    "プロジェクト".to_string()
);
project_target.exclude_patterns = vec![
    r"\.git/.*".to_string(),
    r"node_modules/.*".to_string(),
    r"target/.*".to_string(),
];
config.add_target(project_target);

// 重要ファイルのみ(高優先度)
let mut runner = BackupRunner::new(config, false)
    .with_progress(true); // プログレスバー表示

let result = runner.run(Some(&Priority::High), None)?;

§エラーハンドリング

use backup_suite::{BackupError, Result};

fn handle_backup_errors() -> Result<()> {
    match perform_backup() {
        Ok(result) => {
            println!("✅ 成功: {}件処理", result.total_files);
            Ok(())
        }
        Err(BackupError::PathTraversalDetected { path }) => {
            eprintln!("🚨 セキュリティ警告: 不正なパス検出 {:?}", path);
            // セキュリティ関連エラーは処理を中断
            std::process::exit(1);
        }
        Err(BackupError::PermissionDenied { path }) => {
            eprintln!("❌ 権限エラー: {:?} にアクセスできません", path);
            // 権限エラーは警告として処理継続
            Ok(())
        }
        Err(e) if e.is_recoverable() => {
            eprintln!("⚠️ 一時的エラー(リトライ推奨): {}", e);
            // リトライ可能なエラー
            Err(e)
        }
        Err(e) => {
            eprintln!("💥 重大エラー: {}", e.user_friendly_message());
            Err(e)
        }
    }
}

§🏗️ アーキテクチャ

§コアモジュール (core)

  • Config: 設定管理・バリデーション・永続化
  • BackupRunner: バックアップ処理エンジン・並列実行
  • Target: バックアップ対象定義・除外パターン
  • CopyEngine: I/O最適化・ファイルコピー
  • BackupHistory: 履歴管理・統計情報

§セキュリティモジュール (security)

  • safe_join: パストラバーサル対策パス結合
  • validate_path_safety: パス安全性検証
  • sanitize_path_component: パス文字列サニタイズ
  • 権限チェック: Unix/Windows対応権限確認

§UIモジュール (ui)

  • BackupProgress: プログレスバー・統計表示
  • display_dashboard: ダッシュボード・概要表示
  • ColorTheme: アクセシビリティ対応色彩
  • テーブル表示: 構造化データの美しい表示

§エラーハンドリング (error)

  • BackupError: 型安全なエラー分類
  • Result: 統一されたResult型
  • ユーザーフレンドリー: 分かりやすいエラーメッセージ

§🔒 セキュリティ設計

§脅威モデル

  • ディレクトリトラバーサル: ../../../etc/passwd 等の攻撃
  • 権限昇格: 不正なファイルアクセス試行
  • シンボリックリンク: リンク経由の意図しないアクセス
  • 機密情報漏洩: エラーメッセージ経由の情報漏洩

§対策実装

use backup_suite::security::{safe_join, validate_path_safety};
use std::path::Path;

let base = Path::new("/safe/backup/dir");
let user_input = Path::new("../../../etc/passwd"); // 攻撃試行

// safe_joinは自動的に危険なパスを検出・拒否
match safe_join(base, user_input) {
    Ok(safe_path) => {
        println!("安全なパス: {:?}", safe_path);
        // /safe/backup/dir/etc/passwd として正規化
    }
    Err(e) => {
        eprintln!("🚨 攻撃検出: {}", e);
        // ディレクトリトラバーサル攻撃をブロック
    }
}

§⚡ パフォーマンス特性

§ベンチマーク結果(参考値)

  • 小ファイル多数: 10,000ファイル/秒
  • 大ファイル: 500MB/秒(SSD環境)
  • メモリ使用量: 50MB未満(ファイル数に依存しない)
  • CPU使用率: 全コア活用(並列度調整可能)

§最適化設定

use backup_suite::{BackupRunner, Config};

let config = Config::load()?;
let mut runner = BackupRunner::new(config, false)
    .with_progress(true);  // プログレス表示有効

// CPU集約的環境での実行
std::env::set_var("RAYON_NUM_THREADS", "8");
let result = runner.run(None, None)?;

§📋 設定リファレンス

設定ファイル (~/.config/backup-suite/config.toml) の例:

[backup]
destination = "/path/to/backup/storage"
auto_cleanup = true
max_backup_age_days = 30

[schedule]
enabled = true
high_frequency = "daily"
medium_frequency = "weekly"
low_frequency = "monthly"

[[targets]]
path = "/home/user/documents"
priority = "High"
category = "重要ドキュメント"
exclude_patterns = ["*.tmp", "*.log"]

Re-exports§

pub use compression::CompressedData;
pub use compression::CompressionConfig;
pub use compression::CompressionEngine;
pub use compression::CompressionType;
pub use core::BackupHistory;
pub use core::BackupResult;
pub use core::BackupRunner;
pub use core::CleanupEngine;
pub use core::CleanupPolicy;
pub use core::CleanupResult;
pub use core::Config;
pub use core::CopyEngine;
pub use core::Frequency;
pub use core::PerformanceConfig;
pub use core::PipelineConfig;
pub use core::Platform;
pub use core::Priority;
pub use core::ProcessedData;
pub use core::ProcessingMetadata;
pub use core::ProcessingPipeline;
pub use core::RestoreEngine;
pub use core::RestoreResult;
pub use core::ScheduleStatus;
pub use core::Scheduler;
pub use core::Target;
pub use core::TargetType;
pub use core::history::BackupStatus;
pub use crypto::EncryptedData;
pub use crypto::EncryptionConfig;
pub use crypto::EncryptionEngine;
pub use crypto::KeyDerivation;
pub use crypto::KeyManager;
pub use crypto::MasterKey;
pub use error::BackupError;
pub use error::Result;
pub use i18n::get_message;
pub use i18n::Language;
pub use i18n::MessageKey;
pub use security::check_read_permission;
pub use security::check_write_permission;
pub use security::safe_join;
pub use security::AuditEvent;
pub use security::AuditLog;
pub use security::EventType;
pub use ui::display_backup_result;
pub use ui::display_dashboard;
pub use ui::display_history;
pub use ui::display_targets;
pub use ui::ColorScheme;
pub use ui::ColorTheme;
pub use security::check_execute_permission;

Modules§

compression
圧縮モジュール
core
コアモジュール
crypto
暗号化モジュール
error
i18n
Internationalization (i18n) Module
security
セキュリティモジュール
smart
Smart機能モジュール
typo
ui

Constants§

PKG_NAME
VERSION