どくたー かじた

日本人の英語学習をイタリアで考えた

効率200%UP術!MacのFTPクライアントソフトTransmit: マウントポジションでオラオラ

 f:id:kajitaseijin:20141030062647j:plain

この記事で紹介する方法には問題があることが分かりました!かならずこの記事(transmitのマウントを使ったコピー法で問題。そして一応の解決策)を読んでください。(2014年10月31日追記)

科学計算を生業にしてはや10年。

emacs、terminal、gnuplot、tex。手放せません・・・。「OS自分で入れなくていいのかよ!」と喜び、LinuxからMacに転向したのを最後に、ほとんど道具が変わってない。

 

でも「このままでいいのか?」と、apple watchとかでる世の中で、レジェンドの道具(しかも無料)だけを使ってていいのかと。むしろ新しいのを試した後で、「やっぱレジェンドだよ(しかも無料)」と言いたい。

ということで、有料FTPクライアントソフトを試してたところ、これが今のところ調子よく、予想以上に効率200%UPなので紹介します*1


どんな人が読むとGOOD:

-有料でも良いからFTP作業を楽にしたい人

-Macを使っている

-terminalが使える

-サーバーにガシガシつなぐひと。

(当てはまらない人はすぐに読むのをやめ、yahooニュースとか読んでた方が良いです。普通の人にはびっくりするくらい興味ない内容です。)

 

私は最初の頃はterminalベタ打ちのscpを使用し、さすがにこれは効率が悪いと思いフリーのCyberduckを使ってました。

しかしCyberduckはシンプルで良いのですが、画面が一つしかない。入力ファイルや出力ファイルを複数の計算機サーバーと自分のpc間でやり取りすると、何度もつなぎ直さなくはいけません。

 

ふと、「かなりの時間がFTPクライアントに使われている」、と気づく。

 

そうだ、進化しよう。京都いくばりの気軽さで。

 

そこで、せっかく大人なのだから、有料でも良いからFPTクライアントソフトを検討しようと決意。検討したのは以下の三点。

- Transmit (3400円)

パニック - Transmit - Mac OS X FTP + SFTP + S3 アプリケーションの完成形

- Forklift ($29.95)

- Yummy FTP($14.99)
(* すべて14年10月29日時点の値段)

 

結論から言うとTransmitにしました。

 

他のやつもほんと早くて使いやすくて素敵でした。同期設定とか素敵すぎて、これ自分のフォルダとサーバーのフォルダでやれば手間要らずじゃん、と夢見たときもありました。
なぜTransmitにしたか、最大の理由は「マウント機能」でした。

 

f:id:kajitaseijin:20141030062656p:plain


マウントというのはTransmitのwebページにもあるように、Finderに表示させる&ローカルディスクのように扱うことが出来る機能です。
これのなにが良いのかというと、
terminalからアクセスできる
という点です。

 

一例を挙げます。
名前「fermi」というサーバーアカウントを持っていたとします。それをtransmitでマウントするとFinderはこんな感じです。

f:id:kajitaseijin:20141030070144p:plain
このfermiのtestTransmitフォルダへは
/Volumes/fermi/testTransmit/
というpath名でterminalからアクセスすることが出来ます。

もしローカルの中でtestというフォルダに入力ファイルがあり、「fermi」にこれら入力ファイルをupしたいとします。カレントディレクトリがローカルのtestだとすると、以下のコマンドを実行します。

ln -nfs /Volumes/fermi/testTransmit/ to-fermi

これは、/Volumes/fermi/testTransmit/へ、to-fermiという名前のシンボリックリンクを作ったことになります。
正確な説明ではないのですが、直感的にはシンボリックリンクは「どこでもドア」のようなものかと。この例の場合、「どこでもドア」は/Volumes/fermi/testTransmit/へつながっています。

なので/Volumes/fermi/testTransmit/の中身を見るには、

ls ./to-fermi

を実行すれば良いのです。


ここまでくれば後は簡単。testにある入力ファイルを全部移したければ

cp ./* ./to-fermi/

fermiで計算した出力ファイルを全部持ってきたければ

cp ./to-fermi/* ./

とするだけでよい!


この方法のメリットの一つは、ローカルからサーバーのフォルダをつなぐシンボリックリンクを作ることで、使用しているサーバーが増えても「あ、このフォルダの内容はfermiの***フォルダとやりとりしている」ということが分かるので、ミスが減ります。


二つ目は、なんといってもterminalコマンドですべてこなせるので、効率的です。もうFTPクライアントソフトにいちいちterminalから動かなくても良い。


三つ目は、数日置きに複数サーバーと何度もファイルをやり取りをする場合は、切ったり接続したりする必要がなく、そして一度リンク指定すれば二度と同じパスを指定することはないのでめちゃ効率的です。(一つ上の階層にシンボリックリンクを張れば、とても効率的な場合があります。)

 

現在のところとても快適に使用できています。シンボリックリンクを張るところは簡単なrubyスクリプトを書くなど工夫した点も加味して、

体感としてはFTP作業に使う時間が1/3になったと思います。

 

Transmitすげー。

 

もうね、レオングラシェーロばりのマウントポジションでフルボッコな気分なわけです。*2

 

無料の評価版もあるので、興味でた方はお試しあれ。

 

いけいけなGUIで同期しちゃうよ!とか最初思っていたけど、結局最終的にはscpのようなCUI操作かよ!ていう自己突っ込みは間違いなくある。

 

この記事で紹介する方法には問題があることが分かりました!かならずこの記事(transmitのマウントを使ったコピー法で問題。そして一応の解決策)を読んでください。(2014年10月31日追記)

*1:早くも英語に無関係な記事を書いてしまいましたスミマセン 

*2:川原正敏、修羅の門、講談社