backup-suite
高速・安全・インテリジェントなローカルバックアップツール
目次
- 主要機能
- スクリーンショット
- インストール
- クイックスタート
- 基本的な使用方法
- Smart機能(インテリジェントバックアップ)
- 設定ファイル
- スケジューリング機能
- コマンドリファレンス
- アップデート・アンインストール
- セキュリティ・品質
- 技術スタック
- 対応プラットフォーム
- ライセンス
主要機能
🎯 優先度別バックアップ管理
- 重要な仕事ファイルは毎日自動バックアップ
- 写真や個人ファイルは週次バックアップ
- アーカイブファイルは月次バックアップ
🤖 Smart駆動のインテリジェント管理
- 自動最適化: ディレクトリ分析による最適なバックアップ設定の自動生成
- ファイル重要度分析: ディレクトリ内のファイルを重要度別に自動分類(~8秒/10,000ファイル)
- 除外パターン推奨: 不要ファイル(キャッシュ、ビルド成果物)を自動検出・除外提案
- 異常検知: 統計的分析でバックアップサイズ異常を自動検知(< 1ms)
- 完全オフライン: すべてのSmart機能はローカルで動作、プライバシー完全保護
🔐 軍事レベルの暗号化保護
- AES-256-GCM暗号化で解読は事実上不可能
- Argon2鍵導出でパスワードから安全な暗号鍵を生成
- パソコン盗難時でもデータは完全に安全
- クラウド保存時も第三者は絶対に見れない
- 強力なパスワード自動生成で安全性を確保
📦 高速圧縮によるストレージ節約
- Zstd圧縮で高速かつ高圧縮率を実現
- Gzip圧縮で互換性重視の圧縮
- 圧縮なしでも選択可能
- ディスク容量を最大70%削減(テキストファイルの典型的なケース)
⚡ 増分バックアップで超高速化
- 変更ファイルのみバックアップで時間を大幅短縮
- SHA-256ハッシュによる正確な変更検出
- バックアップ時間を90%削減(2回目以降、変更率10%の場合)
- ストレージ容量を85%削減(差分のみ保存、典型的なケース)
- 自動的にフルバックアップに切り替え(初回実行時)
⏰ 完全自動化されたスケジューリング
- 設定後は手動操作不要で自動実行
- 重要度別に頻度を調整(毎日・週次・月次)
- バックアップ忘れを完全に防止
- macOS launchd/Linux systemd統合で信頼性の高い自動実行
📊 わかりやすい管理とメンテナンス
- どれくらいバックアップしたか統計で確認
- いつ実行されたか履歴で確認
- 古いバックアップを自動削除してディスク節約
- データが壊れた時の簡単復元
🌍 多言語対応
- 4言語完全対応:日本語、英語、簡体中文(中国大陸)、繁體中文(台湾・香港)
- 自動言語検出:
LANG環境変数から自動判定(ja,en,zh-CN,zh-TW等に対応) - 全メッセージ翻訳済み:CLI出力、エラーメッセージ、ヘルプ全てを各言語で表示
💡 使いやすいCLI
- タイポ修正サジェスト:コマンド名のスペルミスを自動検出し、正しいコマンドを提案
- インテリジェントな編集距離アルゴリズム:Levenshtein距離で類似コマンドを自動判定(最大2文字の差まで検出)
- カラー対応:ターミナルのカラーサポートに応じて自動調整
スクリーンショット
ヘルプ画面
コマンド一覧とオプションを日本語で表示
バックアップ対象一覧
登録されたバックアップ対象をテーブル形式で表示
バックアップ実行
実際のバックアップ実行画面
バックアップ実行(ドライラン)
実際にファイルをコピーせずに実行内容を確認
バックアップ履歴
過去のバックアップ実行履歴を確認
インストール
Homebrewでインストール(macOS)
Cargoでインストール
# Smart機能を有効化してインストール(推奨)
# Smart機能なしでインストール(軽量版)
ソースからビルド
# 1. リポジトリをクローン
# 2. Rustインストール(未インストールの場合)
|
# 3. ビルド&インストール(Smart機能あり)
# 4. 動作確認
🌍 Zsh補完の多言語対応
Zsh補完説明は4言語に対応しています:
- 🇬🇧 English (en) - デフォルト
- 🇯🇵 日本語 (ja) - Japanese
- 🇨🇳 简体中文 (zh-CN) - Simplified Chinese
- 🇹🇼 繁體中文 (zh-TW) - Traditional Chinese
自動言語検出
システムのロケール設定($LANG環境変数)から自動で適切な言語が選択されます:
# システムロケールに基づいて自動生成
手動で言語を指定
特定の言語の補完を生成したい場合:
# 日本語
# 简体中文
# 繁體中文
# English
初回セットアップ(Zsh補完を有効化):
# 1. 補完ディレクトリを作成
# 2. .zshrcに以下を追加
# 3. 補完スクリプトを生成
# または多言語対応スクリプトを使用
# 4. 新しいシェルを起動
補完が有効になると、backup-suite <TAB>でコマンドと説明が選択した言語で表示されます。
補完が動作しない場合:
詳細なトラブルシューティング手順は docs/shell-completion.md をご覧ください。以下は主な対処方法です:
- 補完が全く動作しない: シェルを再起動 (
exec zsh)、ファイルの存在確認 (ls -la ~/.zfunc/_backup-suite) - 間違った言語で表示される:
echo $LANGで環境変数を確認、または./scripts/generate-completion.sh jaで手動指定 - compinit警告が出る: ディレクトリ権限を修正 (
chmod go-w ~/.zfunc)
Bash/Fishの補完インストール手順、その他の詳細は docs/shell-completion.md を参照してください。
クイックスタート
1. 基本セットアップ
# 現在の設定確認
# 設定ファイルの場所
# ~/.config/backup-suite/config.toml
注意: 言語は環境変数LANGで自動検出されます。対応言語:日本語、英語、簡体中文、繁體中文。日本語環境では自動的に日本語で表示されます。
2. バックアップ保存先の設定
# Google Driveの保存先を設定
# ⚠️ 重要: クラウドストレージへのバックアップは必ず暗号化を有効にしてください
# Google Drive等のクラウドストレージにバックアップを保存する場合、
# 第三者による不正アクセスを防ぐため、必ず --encrypt オプションを使用してください
# 現在の設定を確認
3. 設定確認
設定を確認するには、1. 基本セットアップのbackup-suite statusコマンドを使用してください。
基本的な使用方法
- ファイルを追加
- 対象一覧確認
- 対象の設定更新
# カテゴリのみ変更
# 優先度とカテゴリを同時に変更
# 除外パターンを追加
# 複数の設定を同時に更新
- バックアップ実行
# 増分バックアップ
# 圧縮オプション
# 暗号化バックアップ(推奨: 対話的パスワード入力)
# → パスワードプロンプトで安全に入力(シェル履歴に残らない)
# または環境変数を使用(オプション)
# 圧縮+暗号化の組み合わせ
# → パスワードプロンプトで対話的に入力
- 自動化設定
# 優先度別スケジュール設定
🤖 Smart機能(インテリジェントバックアップ)
統計的異常検知・ファイル重要度分析でバックアップを最適化します。
インストール
Smart機能を使用するには、--features smartフラグを付けてビルドする必要があります。
# Smart機能を有効化してビルド
# または Cargo経由でインストール
主要機能
1. Smart自動設定
ディレクトリを分析し、最適なバックアップ設定を自動生成します。
# 自動分析・設定(サブディレクトリを個別に評価)
# 対話的に確認しながら設定(サブディレクトリと除外パターンを確認)
# ドライラン(設定を適用せず確認のみ)
# サブディレクトリの探索深度を指定(デフォルト: 1)
# 処理するサブディレクトリの最大数を指定(デフォルト: 100)
# 大量のサブディレクトリがある場合の処理数上限を増やす
機能:
- サブディレクトリごとに重要度を個別評価(各ディレクトリに最適な優先度を設定)
- 除外パターンの自動検出・適用(
node_modules/,target/,.cache/等を自動除外) - プロジェクトタイプの自動判定(Rust, Node.js, Python 等)
- 信頼度80%以上のパターンのみ適用(誤検出を防止)
- 処理数制限による性能最適化(
--max-subdirsで大量のサブディレクトリ対策、デフォルト: 100)
出力例:
🤖 Smart自動設定
分析中: "/Users/user/projects"
📁 3個のサブディレクトリを発見: 3
評価中: "/Users/user/projects/web-app"
推奨優先度: High (スコア: 95)
📋 除外パターン提案: 3
- node_modules (99.0%, 2.34 GB 削減見込)
- .cache (95.0%, 0.45 GB 削減見込)
- .*\.tmp$ (99.0%, 0.00 GB 削減見込)
📝 除外パターン: node_modules, .cache, .*\.tmp$
✅ 設定に追加しました
評価中: "/Users/user/projects/rust-cli"
推奨優先度: High (スコア: 95)
📋 除外パターン提案: 2
- target (99.0%, 1.87 GB 削減見込)
- .cache (95.0%, 0.12 GB 削減見込)
📝 除外パターン: target, .cache
✅ 設定に追加しました
評価中: "/Users/user/projects/archive"
推奨優先度: Low (スコア: 30)
✅ 設定に追加しました
自動設定が完了しました
追加された項目: 3
総削減量: 4.78 GB(バックアップ時間を約35%短縮)
サブディレクトリ数制限時の例:
🤖 Smart自動設定
分析中: "/Users/user/large-project"
📁 100個のサブディレクトリを発見: 100
⚠️ 制限に達したため、一部のサブディレクトリは処理されませんでした: 100 (--max-subdirs で変更可能)
2. ファイル重要度分析
ディレクトリ内のファイルを重要度別に分類し、バックアップ戦略を最適化します。
# ディレクトリの重要度分析
# 詳細な重要度スコア表示
# 特定のファイル種別のみ分析
評価基準:
- 高重要度(80-100点): ソースコード、ドキュメント、設定ファイル
- 中重要度(40-79点): 画像、データファイル
- 低重要度(0-39点): ログ、一時ファイル
出力例:
🤖 Smartファイル重要度分析: ~/Documents
┌─────────────────────────┬──────────────┬──────────┬─────────────────────┐
│ ファイル/ディレクトリ │ 重要度スコア │ 提案優先度 │ 理由 │
├─────────────────────────┼──────────────┼──────────┼─────────────────────┤
│ src/ │ ████████ 95 │ 高 │ ソースコード(頻繁更新)│
│ reports/ │ ████████ 90 │ 高 │ ドキュメント(重要) │
│ photos/ │ ████░░░░ 60 │ 中 │ 画像ファイル │
│ .cache/ │ █░░░░░░░ 10 │ 除外推奨 │ キャッシュディレクトリ │
└─────────────────────────┴──────────────┴──────────┴─────────────────────┘
パフォーマンス: ~8秒(10,000ファイル)
3. 除外パターン推奨
不要なファイルを自動検出し、除外パターンを推奨します。
# 除外パターンの推奨を表示
# 推奨パターンを自動的に設定ファイルに適用
# 最小ファイルサイズを指定(デフォルト: 100MB)
検出対象:
- ビルド成果物(
target/,dist/,build/) - 依存関係キャッシュ(
node_modules/,.cargo/) - 一時ファイル(
*.tmp,*.cache) - 大容量メディアファイル(閾値以上のサイズ)
出力例:
🤖 Smart除外パターン推奨: ~/projects
┌──────────────────┬──────────┬──────────┬─────────────────────┐
│ パターン │ 削減量 │ 信頼度 │ 理由 │
├──────────────────┼──────────┼──────────┼─────────────────────┤
│ node_modules/ │ 2.34 GB │ 99% │ npm依存関係(再生成可能)│
│ target/ │ 1.87 GB │ 99% │ Rustビルド成果物 │
│ .cache/ │ 0.45 GB │ 95% │ キャッシュディレクトリ │
└──────────────────┴──────────┴──────────┴─────────────────────┘
💡 総削減量: 4.66 GB(バックアップ時間を約30%短縮)
4. 異常検知
過去の履歴から統計的に異常なバックアップを検知します。
# 過去7日間の異常検知
# より詳細な分析(統計情報も表示)
検知内容:
- バックアップサイズの急増/急減(Z-score統計分析)
- ディスク容量枯渇予測(線形回帰)
- 失敗パターンの分析(カテゴリ別・時刻別)
出力例:
🤖 Smart異常検知レポート(過去7日間)
┌────┬──────────────────┬──────────┬──────────┬─────────────────────┐
│ No │ 検出日時 │ 異常種別 │ 信頼度 │ 説明 │
├────┼──────────────────┼──────────┼──────────┼─────────────────────┤
│ 1 │ 2025-11-09 03:15 │ サイズ急増│ 95.3% │ ファイルサイズが通常の3倍 │
└────┴──────────────────┴──────────┴──────────┴─────────────────────┘
📊 サマリー: 1件の異常を検出
💡 推奨アクション: ~/Downloads の一時ファイルを除外設定に追加
パフォーマンス: < 1ms(100件履歴)
Smart機能の無効化
Smart機能が不要な場合は、通常のビルドを使用してください。
# 通常ビルド(Smart機能なし)
セキュリティとプライバシー
すべてのSmart機能は完全にオフラインで動作します:
- ✅ 外部APIコール: なし
- ✅ クラウドサービス: 不要
- ✅ 機密情報の送信: ゼロ
- ✅ データ収集: なし
詳細は Smart機能ドキュメント を参照してください。
設定ファイル
~/.config/backup-suite/config.toml の例
[]
= "info"
= "~/.local/share/backup-suite/logs/backup.log"
[]
= "local"
= "/Users/john/Library/CloudStorage/GoogleDrive-john@example.com/マイドライブ/backup-storage" # クラウドストレージ使用時は encryption = true 必須
= "zstd" # 圧縮タイプ: "zstd", "gzip", "none"
= 3 # 圧縮レベル: 1-22(Zstd), 1-9(Gzip)
= true
= "~/.config/backup-suite/keys/backup.key" # 重要: chmod 600で保護
[]
= true
= "02:00"
= "sunday"
= 1
[]
[[]]
= "documents"
= "~/Documents"
= ["*.tmp", "*.cache", ".DS_Store"]
[[]]
= "projects"
= "~/Projects"
= ["node_modules/", "target/", ".git/", "*.log"]
スケジューリング機能
自動バックアップの設定
# スケジュール頻度を設定
# スケジュールを有効化
# 状態確認
プラットフォーム別の動作
macOS (launchd)
- 設定ファイル:
~/Library/LaunchAgents/com.backup-suite.{priority}.plist - ログ:
/tmp/backup-suite-{priority}.log - 確認:
launchctl list | grep backup-suite
Linux (systemd)
- 設定ファイル:
~/.config/systemd/user/backup-suite-{priority}.{service,timer} - ログ:
journalctl --user -u backup-suite-{priority}.service - 確認:
systemctl --user list-timers backup-suite-*
詳細はスケジューリングガイドを参照してください。
コマンドリファレンス
| コマンド | 説明 | 例 |
|---|---|---|
| add | バックアップ対象追加 | backup-suite add ~/docs --priority high |
| list, ls | 対象一覧表示 | backup-suite list --priority medium |
| remove | 対象削除 | backup-suite remove ~/old-files |
| update | 対象の設定更新 | backup-suite update ~/.ssh --priority high --category "SSH設定" |
| clear, rm | 一括削除 | backup-suite clear --priority low |
| run | バックアップ実行 | backup-suite run --encrypt |
| restore | バックアップ復元 | backup-suite restore --from backup-20251104 |
| cleanup | 古いバックアップ削除 | backup-suite cleanup --days 30 |
| status | 現在の状態表示 | backup-suite status |
| history | 実行履歴表示 | backup-suite history --days 7 |
| schedule | スケジューリング管理 | backup-suite schedule enable |
| config | 設定管理 | backup-suite config set-destination ~/backups |
| open | バックアップディレクトリを開く | backup-suite open |
| completion | シェル補完生成 | backup-suite completion zsh |
| smart | Smart機能(要--features smart) |
backup-suite smart detect --days 7 |
アップデート・アンインストール
アップデート
# Homebrew
# Cargo
# ソースから
アンインストール
# 1. バイナリを削除
# 2. 設定ファイル削除(オプション)
# 3. ログファイル削除(オプション)
セキュリティ・品質
企業級セキュリティ
- 暗号化: AES-256-GCM(認証付き暗号化)
- 鍵導出: Argon2id(メモリコスト19MB、反復2回)
- Nonce衝突検出: デバッグビルドで自動追跡(リリースビルドはゼロオーバーヘッド)
- 全Nonce(暗号化初期化ベクトル)を追跡し、衝突を即座に検出
- 衝突発生時は詳細なエラーメッセージでセキュリティ影響を報告
- リリースビルドではコンパイル時に完全削除(パフォーマンス影響なし)
- パストラバーサル対策: Unicode正規化(NFKC)、Null byte検出、シンボリックリンク攻撃防止
- 機密データ消去: Zeroize使用(メモリダンプ攻撃対策)
- ローカル専用: クラウド非依存で安全
- 権限管理: 設定ファイルの適切な権限設定
型安全性・メモリ安全性
- Rustの強力な型システムで実行時エラーを最小化
- メモリ安全性保証(バッファオーバーフロー、メモリリーク防止)
- コンパイル時エラー検出
- 機密データの安全な消去(ZeroizeOnDrop)
防御対象攻撃
- ✅ パストラバーサル攻撃: Unicode正規化(NFKC)、Null byte検出、シンボリックリンク検証
- ✅ ブルートフォース攻撃: Argon2id高コスト鍵導出(メモリ19MB、反復2回)
- ✅ メモリダンプ攻撃: Zeroize による機密データ即座消去
- ✅ 中間者攻撃: AES-256-GCM認証付き暗号化(改ざん検出)
- ✅ タイミング攻撃: 定数時間比較による鍵検証
- ✅ インジェクション攻撃: Rustの型システムによる安全なパス操作
技術スタック
- 言語: Rust(最新安定版)
- CLI: clap 4.x (コマンドライン解析・補完生成)
- 圧縮: Zstd(高速・高圧縮率)、Gzip(互換性)
- 暗号化: AES-256-GCM、Argon2
- 設定: TOML (人間にとって読みやすい設定形式)
- スケジューリング: macOS launchctl、Linux systemd
- Smart/統計分析: statrs(統計計算)、rayon(並列処理)
対応プラットフォーム
| OS | アーキテクチャ | 対応状況 |
|---|---|---|
| 🐧 Linux | x86_64 | ✅ 完全対応 |
| 🐧 Linux | aarch64 | ✅ 完全対応 |
| 🍎 macOS | x86_64 | ✅ 完全対応 |
| 🍎 macOS | Apple Silicon | ✅ 完全対応 |
ライセンス
このプロジェクトはMITライセンスの下で公開されています。
コントリビューション
バグレポート・機能要望・プルリクエストを歓迎します。 GitHubのIssue・PRからお気軽にご連絡ください。