コンテンツにスキップ

fnb — Fetch'n'Backup

fnb は、2段階のシンプルなバックアップツールです。 rsync をベースに、リモートからのデータ取得とローカル/クラウドへのバックアップを手軽に実行できます。

Simple config. Sharp execution. Safe data.

🚀 主な機能

  1. Fetch — リモートサーバーからローカルにデータを取得
  2. Backup — ローカルデータをOneDrive等にバックアップ
  3. Sync — Fetch + Backup を一括実行
  4. Status — 最新スナップショットの状態を表示
  5. Init — 初期設定ファイル(config.toml)を生成

🔰 Quick Start

# 設定ファイルを作成
fnb init

# 設定ファイルを編集
vi fnb.toml
vi .env.plain
cp .env.plain .env

# コマンドを実行
fnb sync logs

fnb initで必要な設定ファイルのひな型を生成できます。 fnb.tomlを編集してパスを設定します。 .env.plainを編集してリモートサーバーのログインパスワードを設定します。

.env.plainの内容は平文で保存されることに注意してください。 このファイルを.envというファイル名に変更して、dotenvxで暗号することを推奨します。

🔐 環境変数の暗号化(推奨)

# 環境変数を暗号化
dotenvx encrypt -f .env
# .env: 暗号化されたパスサード
# .env.keys: 秘密鍵

# rfbコマンドを実行
dotenvx run -- fnb sync logs

dotenvx.envを暗号化できます。

🧰 コマンド例

# Fetch(リモート → ローカル)
fnb fetch TARGET_LABEL

# Backup(ローカル → クラウドストレージなど)
fnb backup TARGET_LABEL

# Fetch → Backup を順番に一括実行
fnb sync TARGET_LABEL

# 設定内容の確認
fnb status

# config.toml の初期化
fnb init

🛠️ インストール

# uv を使用してプロジェクトセットアップ
uv venv
uv pip install -e .

詳細はインストールガイドを参照してください。

📦 CLIコマンド一覧

fnb コマンドは以下のようなサブコマンドで構成されます:

  • fetch: リモートからデータを取得
  • backup: ローカルデータをバックアップ
  • sync: fetch + backup を連続実行
  • status: 有効なタスクの状態を確認
  • init: 初期設定ファイル(rfb.toml, .env)を生成

📝 設定ファイル

config.toml

各処理対象のディレクトリごとに fetch / backup の設定を持ちます。

[fetch.SECTION_NAME]
label = "TARGET_LABEL"
summary = "Fetch data from remote server"
host = "user@remote-host"
source = "~/path/to/source/"
target = "./local/backup/path/"
options = ["-auvz", "--delete", '--rsync-path="~/.local/bin/rsync"']
enabled = true

[backup.SECTION_NAME]
label = "TARGET_LABEL"
summary = "Backup data to cloud storage"
host = "none"    # <- ローカル操作
source = "./local/backup/path/"  # <- fetchのtargetパス
target = "./cloud/backup/path/"
options = ["-auvz", "--delete"]
enabled = true

詳細な設定例は設定ファイルガイドを参照してください。

🔐 認証について

SSH パスワード入力は pexpect を用いて自動化されます。 必要に応じて .env ファイルに接続設定等を記載可能です。

🪪 ライセンス

MITライセンス

📬 貢献

Issue や PR は歓迎です。 お気軽にどうぞ。ドキュメントの改善提案も歓迎です。