at backyard

Color my life with the chaos of trouble.

ローカルネットワーク間のファイル転送にGo製のCLIツール、ftが便利だった

macwindows間でサクッとファイル転送したい

最近閉じたネットワーク内でwindowsmac間でファイル転送することがたびたびある。

今まではDropboxを使っていたが、windowsマシンの方は常にDropboxにログインしているというマシンでもないので、ファイル転送のたびにDropboxにログインしてファイルのやりとりをするのが面倒だった。

どうにかウェブサービスを経由しないで直接ファイル転送をやれるような簡単なツールはないものかと頭をめぐらした先にあったのが、ftというGo言語で書かれたファイル転送ツールだった。

github.com

このツール、実は以前から気になっていて、個人的に gRPC を学習する際の取っ掛かりとしてこのツールのソースコードをちょっと読んだりしていた。そのうち学習目的でJSで書き直してみたいと思ったまま、すっかり忘れてしまっていたのだが、今回ファイル転送するためのツールとして使ってみることにした。

ちなみに作者の方が書いたftに関する記事はこちら。

mattn.kaoriya.net

macにはGoが入っていたが、windowsにはGo環境がなかったので公式サイトから最新のインストーラーをダウンロードしてGo環境を作ったうえでftをインストールした。

ftのインストール

インストールは下記
(そういえば、go getって廃止されるんだっけ...これからは go install になるんだったかな?などと遠巻きにGoをかじっている浅い思考で脳の表層を撫で回しながらコマンドを叩く)

追記:現在は実行のためのコマンドをインストールする際は go install を利用してインストールする

go install github.com/mattn/ft@latest

# 追記:go getは利用しないため、下記の記述はコメントアウトした
# go get github.com/mattn/ft

ftの使い方

GitHubのページを見れば書いてあるが、一応備忘録として書き残しておく。

ftでファイル転送をするためには送る側も受け取る側も ft を使う。

ファイルを送る方のやること

送りたいファイルがあるディレクトリまで移動して、下記のコマンドを叩く。

ft serve

これでOK。

ちなみにwindows環境だと Microsoft Defender が立ち上がってアクセスを許可させる必要があったので、許可した。

ちなみにこちらのマシンのローカルIPが必要になるので頭に入れておくこと。

ファイルを受け取る側がすること

下記のコマンドを叩くことで、ft serveされているディレクトリ内にあるファイルをダウンロードできる。

# IPアドレスはGitHubのREADMEから持ってきている
# また、ポート番号(:11111)つけないとダウンロードできなかったので、つけている
# (README見ると不要な気もするけど、自身の環境だとポート番号つけないと動かなかったのでつけています)
ft download -a 192.168.123.4:11111

ちなみにserveされているファイルのリストを予めチェックすることもできる。

ft list -a 192.168.123.4:11111

そこまで重いファイルを転送しているわけではないが動作はすこぶる早く、使用感は良い。