⛳
軽量で使いやすいRust製ファイル転送CLI「Vento」をOSSとして開発しました
はじめに
こんにちは、@kyotalab です。
現場で長く使われてきたファイル転送ミドルウェア「HULFT」。その思想にインスパイアされつつ、「もっと軽量で、設定ファイル一つで使えるようなツールがOSSにあってもいいのでは?」という発想から、Rust製CLIツール 「Vento」 を開発しました。
この記事では、Ventoのコンセプトと使い方、そして直近リリースされた v0.2.0 の主な特徴について紹介します。
Ventoとは?
Vento は、以下をコンセプトにしたシンプルなファイル転送CLIツールです:
- 軽量・高速(Rust製)
- YAML形式で設定可能
- CLI一発でSFTP/SCP転送が実行可能
- 転送前後やエラー時のコマンドも指定できる
- OSSとして開発・配布(GitHub + Homebrew)
vento transfer --profile-id my-sftp-upload
ローカルに profiles.yaml
を用意すれば、SFTPやSCPでの定型的なファイル転送を自動化できます。
なぜ作ったのか?(モチベーション)
業務システムやデータ連携の現場では、単純なファイル転送が意外と複雑になりがちです。
- 手書きの
scp
やsftp
コマンドがあちこちに - バッチでジョブ前後に転送・通知処理をしている
- HULFTなどの商用ミドルウェアが使われているが重い
こうした「HULFTほど重厚ではないが、信頼性のある転送処理」をYAML一枚とCLIで完結させたいというのが、Ventoの出発点でした。
OSSでありつつ、現場にフィットする構成を目指しています。
機能一覧(2024年6月現在)
✅ SFTP / SCP対応
- プロファイルで
protocol: "SCP"
or"SFTP"
を指定するだけで切り替え可能 - 秘密鍵認証・
ssh_config
経由の接続に対応
✅ 転送前後・エラー時のコマンド実行
- 任意のShellコマンドを設定可能
- 例:圧縮・リネーム・Slack通知など
✅ 転送ファイルサイズの上限バリデーション
-
config.toml
またはプロファイル単位でmax_file_size_mb
を指定可能 - 最大2GBまで(それ以上は起動時にエラー)
✅ 軽量な設定ファイル
- YAML形式で複数プロファイルを管理
- cron等の外部スケジューラーとも連携しやすい
使用例(YAML)
- profileId: "daily-scp-upload"
description: "日次レポートをSCPで転送"
source:
type: "local"
path: "./report.csv"
destination:
type: "scp"
path: "/home/user/report.csv"
host: "example.com"
port: 22
authentication:
method: "ssh_config"
sshConfigAlias: "myhost"
username: "user"
transferProtocol:
protocol: "SCP"
preTransferCommand: "echo 'Start SCP'"
postTransferCommand: "echo 'Done SCP'"
onErrorCommand: "echo 'SCP Error'"
導入方法
Homebrew に対応しています。
brew tap kyotalab/vento
brew install vento
GitHub Releasesにはバイナリも置いています。macOS / Linux / Windowsに対応予定です。
今後の展望
- 📅 スケジューリング(cron形式)の導入
- 🧭 Web UI or TUIによるプロファイル操作
- 📂 転送ログ・メトリクスの永続化
- 🚀 並列転送・依存関係管理などの拡張
最後に
Ventoは、日々のファイル転送をもっと気軽に、安全に、わかりやすくするためのCLIツールです。
まだ若いプロダクトですが、**「軽いHULFTのようなOSSツールが欲しかった」**という方にはきっと刺さると思っています。
ご意見・フィードバック・GitHub Starなど大歓迎です!
📝 ZennやQiitaでの今後の開発ログも継続予定です。
引き続きよろしくお願いします!
Discussion