はじめに

こんにちは!今回はftpコマンドについて解説します。

ftpはFile Transfer Protocolを使用してファイルを転送するコマンドです。リモートサーバーとの間でファイルをアップロード・ダウンロードする時に使う、昔ながらの通信プロトコルですね。

SSHやSCPが登場する前からあって、今でも使われているんです。セキュリティ的にはSSHの方が優れていますが、シンプルなファイル転送にはまだまだ活躍しています。

ftpコマンドとは

ftpは、FTP(File Transfer Protocol)を使用してリモートサーバーとファイルをやり取りする外部コマンドです。“file transfer protocol"の略ですね。

インタラクティブ形式で、ユーザーがコマンドを入力しながらサーバーに接続し、ファイルのアップロード・ダウンロード・削除などの操作ができます。ログインして、ファイルを選んで転送するという対話的なインターフェースが特徴です。

基本構文

1
ftp [オプション] [ホスト名またはIPアドレス]

ホスト名を指定した場合、そのサーバーへの接続を試みます。指定しない場合は、openコマンドで後から接続先を指定できます。

主なオプション

オプション 説明
-v 詳細表示(verbose)
-n 自動ログインを使用しない
-i インタラクティブプロンプトを無効化
-d デバッグモード
-g グローバルファイル名展開を無効化

使用例

例1: サーバーに接続

1
ftp ftp.example.com

実行結果:

1
2
3
Connected to ftp.example.com.
220 Welcome to FTP Server
Name (ftp.example.com:user):

ftp.example.comに接続します。ユーザー名の入力を求められます。

例2: ユーザー名とパスワードでログイン

1
2
3
4
ftp> user myusername
331 Please specify the password.
Password:
230 Login successful.

ユーザー名を入力してログインします。パスワードは表示されません。

例3: ファイル一覧を表示

1
2
3
4
5
6
ftp> ls
200 PORT command successful.
150 Here comes the directory listing.
-rw-r--r--   1 1000     1000         1024 Jan 01 10:00 file1.txt
-rw-r--r--   1 1000     1000         2048 Jan 01 11:00 file2.txt
226 Directory send OK.

リモートサーバーのファイル一覧を表示します。

例4: ファイルをダウンロード

1
2
3
4
5
6
ftp> get file1.txt
local: file1.txt remote: file1.txt
200 PORT command successful.
150 Opening BINARY mode data connection.
226 Transfer complete.
1024 bytes received in 0.05 seconds

file1.txtをローカルマシンにダウンロードします。

例5: 複数ファイルをダウンロード

1
2
3
ftp> mget *.txt
mget file1.txt? y
mget file2.txt? y

ワイルドカードで複数ファイルをダウンロードします。各ファイルごとに確認されます。

例6: ファイルをアップロード

1
2
3
4
5
6
ftp> put local.txt
local: local.txt remote: local.txt
200 PORT command successful.
150 Opening BINARY mode data connection.
226 Transfer complete.
512 bytes sent in 0.02 seconds

ローカルマシンのファイルをサーバーにアップロードします。

例7: 複数ファイルをアップロード

1
2
3
ftp> mput *.log
mput app.log? y
mput error.log? y

複数ファイルを一度にアップロードできます。

例8: ディレクトリを変更

1
2
ftp> cd /home/user/public
250 Directory successfully changed.

リモートサーバー上のディレクトリを移動します。

例9: ローカルディレクトリを変更

1
2
ftp> lcd /tmp
Local directory now /tmp

ローカルマシンのカレントディレクトリを変更します。

例10: ファイルを削除

1
2
ftp> delete old_file.txt
250 Delete operation successful.

リモートサーバーのファイルを削除します。

例11: ディレクトリを作成

1
2
ftp> mkdir newdir
257 "newdir" created

リモートサーバーに新しいディレクトリを作成します。

例12: 接続を切断

1
2
ftp> quit
221 Goodbye.

FTPサーバーとの接続を切断します。

Tips・注意点

パスワードは入力時に表示されない

1
2
3
ftp> user admin
331 Please specify the password.
Password:

セキュリティ上、パスワード入力時は文字が表示されません。安心して入力してください。

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

1
2
ftp> type binary    # バイナリファイル用
ftp> type ascii     # テキストファイル用

ファイルの種類に応じてモードを切り替えます。バイナリモードで画像やZIPを転送すると安全です。

セキュリティ上の注意

ftpは非暗号化通信なため、パスワードと通信内容がネットワークに流れます。本番環境ではSSHやSCPの使用を強く推奨します。

1
scp localfile.txt [email protected]:/remote/path/

実践的な使い方

Webサーバーへのファイルアップロード

1
2
3
ftp> put index.html
ftp> put style.css
ftp> put script.js

Webサイトのファイルをサーバーにアップロードします。

バックアップのダウンロード

1
2
ftp> cd /backups
ftp> mget backup_*.tar.gz

サーバーのバックアップファイルを一括ダウンロードします。

スクリプトでの自動FTP

1
(echo "user myuser"; sleep 1; echo "mypass"; sleep 1; echo "get data.zip"; echo "quit") | ftp ftp.example.com

スクリプト内で非対話的にFTPを実行できます。

まとめ

ftpコマンドのポイント:

  • FTP(File Transfer Protocol)でリモートサーバーとファイルをやり取りするコマンド
  • get: ファイルをダウンロード
  • put: ファイルをアップロード
  • mget/mput: 複数ファイルの一括操作
  • cd/lcd: リモート・ローカルのディレクトリ変更
  • type: バイナリモード/テキストモードの切り替え
  • よく使う組み合わせ: ftp server.com, get file.zip, put file.html

ftpは古いコマンドですが、シンプルで理解しやすいファイル転送方法として今でも活躍しています。セキュリティが必要な環境ではSSHを使いましょう!