Linuxのftpコマンドの使い方|接続からアップロード・ダウンロードまで


図解60p「Linuxサーバー構築入門マニュアル」無料
登録10秒/自動返信でDL/合わなければ解除3秒
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)LinuxtipsLinuxtips, ネットワーク > Linuxのftpコマンドの使い方|接続からアップロード・ダウンロードまで
「FTPサーバーからファイルを落としてきてと言われたけど、コマンドを忘れてしまった...」
「FTPコマンドで複数ファイルを一気にダウンロード・アップロードしたい」
ファイル転送の現場では、いまだに従来のFTPコマンドを使用する場面に直面することがあります。

この記事では、Linuxにおける ftp コマンドの基本的な使い方を体系的に解説します。サーバーへの接続から、単一・複数ファイルのダウンロード(get/mget)とアップロード(put/mput)の手順まで、現場ですぐに使える内容をまとめました。

1. FTPサーバーに接続・ログインする

まずは、対象のFTPサーバーに接続します。

$ ftp 192.168.1.100

※IPアドレスまたはホスト名を指定します。

接続が成功すると、ユーザー名とパスワードの入力が求められます。

Name (192.168.1.100:root): user_name ←ユーザー名を入力 331 Please specify the password. Password: ←パスワードを入力(画面には表示されません) 230 Login successful. ftp>

ログインに成功すると、プロンプトが ftp> に変わり、FTPコマンドの受付状態になります。

2. 接続後の基本操作(現在地の確認とファイル一覧)

ログイン直後はどのディレクトリにいるか把握するところから始めます。

# リモート側の現在のディレクトリを確認する ftp> pwd 257 "/home/user_name" is the current directory. # リモート側のファイル・ディレクトリ一覧を表示する ftp> ls drwxr-xr-x 2 user user 4096 Feb 16 10:00 public_html -rw-r--r-- 1 user user 1234 Feb 16 09:00 sample.txt


3. ファイル転送前の必須準備(転送モードとディレクトリ移動)

ファイルを転送する前に、必ず確認・設定すべき項目が2つあります。

転送モードを「バイナリモード」にする

画像ファイルや圧縮ファイル(.gz、.zipなど)を転送する際は、データが破損しないようにバイナリモード(bin)に切り替えます。現場では基本的に、常にバイナリモードにしておくのが安全です。

ftp> bin 200 Switching to Binary mode.

※テキストファイルのみを送る場合は ascii コマンドでASCIIモードにします。

ディレクトリを移動する(cd と lcd)

リモート側(接続先のサーバー)と、ローカル側(自分の手元のPC)のそれぞれで、作業ディレクトリを移動します。

# リモート側のディレクトリを移動する ftp> cd /var/www/html # ローカル側(手元)のディレクトリを移動する(Local CDの意味) ftp> lcd /home/user/downloads


4. ファイルをダウンロードする(get / mget)


1つのファイルをダウンロード(get)

単一のファイルを手元に持ってくるには get コマンドを使用します。

ftp> get sample.txt


ダウンロードと同時にローカル側のファイル名を変えたい場合は、第2引数に保存名を指定します。

# sample.txt をダウンロードし、backup.txt という名前で保存する ftp> get sample.txt backup.txt


複数ファイルを一気にダウンロード(mget)

複数のファイルや、ワイルドカード(*)を使ってまとめてダウンロードしたい場合は mget コマンドを使用します。

ただし、そのまま mget を実行すると、ファイル1つごとに「ダウンロードしますか? (y/n)」と確認されてしまい非常に手間です。事前に prompt コマンドを実行して、対話モードをOFFにしておくのが現場の鉄則です。

# 対話確認モードをOFFにする ftp> prompt Interactive mode off. # 拡張子が .gz のファイルをすべてダウンロードする ftp> mget *.gz

これで、確認なしで一気にダウンロードが完了します。

5. ファイルをアップロードする(put / mput)

ダウンロードの逆で、自分の手元にあるファイルをサーバーへ送るコマンドです。

1つのファイルをアップロード(put)

ftp> put update.tar.gz


get と同様に、アップロード先でのファイル名を変えることもできます。

# update.tar.gz を release.tar.gz という名前でアップロードする ftp> put update.tar.gz release.tar.gz


複数ファイルを一気にアップロード(mput)

こちらもダウンロード時と同様に、事前に prompt コマンドで確認をOFFにしてから実行します。

# 対話確認モードをOFFにする ftp> prompt Interactive mode off. # 拡張子が .html のファイルをすべてアップロードする ftp> mput *.html


6. FTP接続を終了する

作業が完了したら、bye(または quit)コマンドでFTP接続を終了し、元のLinuxのプロンプトに戻ります。

ftp> bye 221 Goodbye. $


よくあるエラーと対処法(接続できない・ログインできない・Connection refused・Login incorrect)


Connection refused(接続拒否)

ftp: connect: Connection refused

FTPサーバー(vsftpdなど)が起動していないか、ファイアウォールでFTP用のポート(21番)がブロックされています。まずはサーバー側で systemctl status vsftpd を実行し、FTPサービス自体が正常に起動しているかを最優先で確認してください。

Login incorrect(ログイン失敗)

530 Login incorrect.

ユーザー名またはパスワードが誤っています。また、FTPサーバーの設定でrootログインが禁止されていたり、特定ユーザーのアクセスが制限されている場合もあります。

【重要】現代のセキュリティにおける注意点

従来の ftp コマンドは、パスワードや転送データがすべて「平文(暗号化されていない状態)」でネットワーク上を流れてしまうという致命的なセキュリティリスクがあります。

現代のLinux運用において、インターネット越しに ftp コマンドを使用することは非推奨です。ファイル転送を行う際は、SSHの暗号化通信を利用する sftpscp コマンドを使用するのが現在の業界標準となっています。FTPは閉じた安全なローカルネットワーク内でのみ使用するようにしましょう。

sftp の基本的な使い方:

# sftpで接続(ftp と同様のコマンドでファイル操作が可能) $ sftp user_name@192.168.1.100 # scpで1ファイルをダウンロード $ scp user_name@192.168.1.100:/var/www/html/sample.txt ./


本記事のまとめ

やりたいこと コマンド
現在のリモートディレクトリを確認 pwd
リモートのファイル一覧を表示 ls
リモートのディレクトリ移動 cd ディレクトリ名
ローカルのディレクトリ移動 lcd ディレクトリ名
転送モードをバイナリにする bin
単一ファイルのダウンロード / アップロード get ファイル名 / put ファイル名
ファイル名を変えながら転送 get 元ファイル名 保存ファイル名 / put 元ファイル名 アップロード先ファイル名
複数ファイルのダウンロード / アップロード mget ファイル名 / mput ファイル名
複数ファイル操作時の確認を省略する prompt
FTP接続を終了する bye または quit

ファイルの権限やネットワークのセキュリティで、冷や汗をかいていませんか?

「アップロードしたのにWebで表示されない」「平文でパスワードを送ってしまった」など、サーバー運用における少しの知識不足が、情報漏洩やシステム障害といった大事故に繋がることがあります。
古い情報に振り回されず、現場で通用するLinuxサーバー構築の"型"とセキュリティの基礎を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。



無料プレゼント
図解60p「Linuxサーバー構築入門マニュアル」
独学で詰まる前に、“型(手順書)”で最初の環境構築をサクッと終わらせましょう。
登録10秒/自動返信でDL/合わなければ解除3秒
無料で受け取る ※メールアドレスだけでもOK(必須項目は最小限)

宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

<<関連記事>>
・CentOS7のホスト名設定(nmcliコマンド)
・IPv6アドレスを確認する
・nmapでポートスキャンを実施する
・名前解決の参照順を変更する(/etc/host.conf)
・名前解決の参照順を変更する(/etc/nsswitch.conf)

図解60pのLinux無料マニュアル
登録10秒/自動返信でDL
無料で受け取る