クライアントからサーバーにファイル転送をする際に、FTPやSCPのコマンドが利用できなかったり、ネットワークやポートの制限がかかっていて転送できないというような場合があります。
その他にも、踏み台サーバーを経由してアクセスしないといけないなど、直接ファイル転送するのが著しく面倒だったりする環境もあったりします。
そういったときに、lrzszパッケージを利用すればターミナルエミュレータを通してファイルを転送することが出来ます。
これは、TeraTermなどクライアントのターミナル環境を通してつないでいるまさにそのサーバーにファイルを転送したり、そこにあるファイルを受信したりすることができます。
rzコマンドを通してサーバーへファイルを転送する
まず最初に、lrzszパッケージがサーバー上に存在しない場合は、yumコマンドなどを通してインストールしておきましょう。
# yum install lrzsz - snip - Installed: lrzsz.x86_64 0:0.12.20-22.1 Complete!
これだけで準備が整いましたので、早速ファイルを送信してみましょう。
送信したいサーバー上でrzコマンドを実行し、ファイルの転送待ち受け状態にします。
# rz rz waiting to receive.**B0100000023be50
次に、クライアント環境のターミナルエミュレータ(今回の例ではTeraTerm)からファイルを送信してみます。
転送方法は、「ファイル」→「転送」→「ZMODEM」→「送信」メニューを選択します。
すると、送信したいファイルを選択するダイアログが開きますので、該当のファイルを選択します。
これだけでファイルの転送が完了しています。
rzコマンドを実行したディレクトリを見てみると、送信したファイルがあるはずです。
# ls hoge.jpg
ちなみに、ZMODEMはバイナリ転送用のプロトコルでその他にもXMODEMやYMODEMが存在しており、lrzszパッケージでもそれぞれに対応した、rxコマンド(XMODEM用)、rbコマンド(YMODEM用)、rzコマンド(ZMODEM用)が存在します。
ただし、ファイル転送効率などはZMODEが一番優れており、その他のプロトコルを使うメリットはほとんど無いかと思います。
szコマンドを通してサーバーからファイルを受信する
続いて、先ほどと逆のサーバー上にあるファイルをクライアントに転送(ダウンロード)する方法です。
サーバーからファイルを転送する場合は、szコマンドを転送したいファイル名を引数にして実行します。
# sz hoge.txt
受信方法は、先ほどファイルを送信した場合にあったZMODEMの受信メニューから行います。
ファイルはターミナルエミュレータを実行しているフォルダ(TeraTermの場合はC:\Program Files\teratermとか)に保存されます。
複数のファイル転送はできなかったり(といっても、予めファイルをzipやtarで固めておけばおおかた済んだりしますけど)、そのサーバーまで端末がつながっているという前提条件がありますけど、ファイル転送用のコマンドやネットワーク的に制限があったりする場合にすぐにファイルをアップロード・ダウンロードができて便利に使えます。
関連記事
Linux上でファイルを削除してしまった際にさっくり復活できるextundelete
FTPのアクティブモードとパッシブモード + vsftpdでの設定方法
[vsftpd] 特定の拡張子のファイルのアップロードを禁止する
inotifyを使ってファイルやディレクトリに起きたイベントを簡単に監視する