Ruby 3.0.0 リファレンスマニュアル > ライブラリ一覧 > net/ftpライブラリ

library net/ftp

要約

FTP プロトコルを扱うライブラリです。

基本的には unix の ftp コマンドのような command-line interface の FTP クライアントを使ったことのある人にとってわかりやすいインターフェースになっています。より「Ruby 的」であるインターフェースも用意しています。

FTP については [RFC959][RFC3659] を参考にしてください。

バイナリモードとテキストモード

FTP のデータ転送にはテキストモードとバイナリモードがあります。テキストモードで転送する場合には改行を適宜CRLFに変換します。バイナリモードの場合は一切の変換をしません。

通常はバイナリモード以外を使う必要はないでしょう。

Net::FTP#getNet::FTP#putNet::FTP#binary の値に従ってテキストモードとバイナリモードの一方を選びます。また、 Net::FTP#getbinaryfileNet::FTP#putbinaryfileNet::FTP#binary の値によらずバイナリモードで、 Net::FTP#gettextfileNet::FTP#puttextfileNet::FTP#binary の値によらずテキストモードでデータ転送が行われます。

パッシブモードとアクティブモード

FTP はファイル転送やディレクトリ情報取得のためのデータ転送用の TCP コネクションを、サーバとの制御コマンドをやりとりするためのコネクションとは別に作成します。

このデータ転送用コネクションを作成する際に、アクティブモードではサーバ側からクライアント側へコネクションを作り、パッシブモードではクライアント側からサーバ側へコネクションを作ります。

そのため、アクティブモードではサーバ-クライアント間にファイアーウォールや NAT がある場合にはうまく接続できない場合があります。この時にはパッシブモードを利用してください。

デフォルトモードは Net::FTP.default_passive= で指定することができます。パッシブモードがデフォルトです。

例1:

require 'net/ftp'
ftp = Net::FTP.new('ftp.example.org')
ftp.login
ftp.passive = true
ftp.chdir('pub/ruby')
files = ftp.list('ruby*')
ftp.getbinaryfile('ruby-1.9.1-p243.tar.bz2', 'ruby.bz2', 1024)
ftp.close

例2:

require 'net/ftp'
Net::FTP.open('ftp.example.org') do |ftp|
  ftp.login
  ftp.passive = true
  ftp.chdir('pub/ruby')
  files = ftp.list('*.bz2')
  ftp.getbinaryfile('ruby-1.9.1-p243.tar.bz2', 'ruby.bz2', 1024)
end

クラス

Net::FTP

FTP を実装したクラスです。

Net::FTP::MLSxEntry

Net::FTP#mlsdNet::FTP#mlst の結果を保持するクラスです。

例外クラス

Net::FTPError

net/ftp ライブラリ関連のエラー全般を表す例外クラスです。

  Net::FTPConnectionError

コネクションを確立する前に通信しようとした場合に発生する例外のクラスです。

  Net::FTPPermError

FTP の応答コード 5yz (Permanent Negative Completion reply) を表す例外クラスです。

  Net::FTPProtoError

サーバの応答が FTP のプロトコルに沿っていない場合に発生する例外のクラスです。

  Net::FTPReplyError

FTPの応答が 1yz や 3yz であり、それが想定外であることを表わす例外クラスです。

  Net::FTPTempError

FTP の応答コード 4yz (Transient Negative Completion reply) を表す例外クラスです。